Coq: признать, отстаивать
Есть ли способ признать утверждения в Coq?
Предположим, у меня есть такая теорема:
Theorem test : forall m n : nat,
m * n = n * m.
Proof.
intros n m.
assert (H1: m + m * n = m * S n). { Admitted. }
Abort.
Вышеупомянутое утверждение, кажется, не работает для меня.
Я получаю ошибку:
Error: No focused proof (No proof-editing in progress).
То, что я хочу, это что-то вроде undefined
в Хаскеле. В конце концов, я вернусь к этому позже и докажу это. Есть ли что-то подобное в Coq для достижения этого?
1 ответ
Решение
В общем тактика admit
(строчная первая буква) допускает текущую подцель. таким образом assert <your assertion>. admit.
должно работать в вашем случае.
Или во всей красе следующим образом.
Theorem test : forall m n : nat,
m * n = n * m.
Proof.
intros n m.
assert (H1: m + m * n = m * S n). admit.
Abort.
Изменить: версия с ;
ерунда, потому что вы не хотите допускать все подзадачи.