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.

Изменить: версия с ; ерунда, потому что вы не хотите допускать все подзадачи.

Другие вопросы по тегам