Почему Coq не позволяет теореме с допусками заканчиваться QED в Linux и Windows?

#coq #coqide #gallina

#coq #coqide #галлина

Вопрос:

Я использую Coq 8.10.0. Следующий сценарий проверки, похоже, работает на Mac (игнорируя предупреждение):

 Lemma plus_comm : forall (n m : nat), n   m = m   n.
Proof.
  intros.
  - admit.
Qed.
 

Но один и тот же сценарий проверки не принимается в Linux (Ubuntu) и Windows. Он выдает следующую ошибку:

(в proof plus_comm): попытка сохранить доказательство с отказом от целей. Если это действительно то, что вы хотите сделать, используйте Допущенный вместо Qed .

Есть какие-нибудь идеи, что здесь происходит?

PS: Я знаю, что в идеале доказательства с допусками должны заканчиваться Допущенными вместо Qed / Defined . Я пытаюсь отладить сценарий проверки.

Ответ №1:

Вы уверены, что используете одну и ту же версию Coq на macOS и на Windows / Linux? Я точно не помню, какая версия внесла изменения в поведение, но теперь по умолчанию запрещено Qed использовать неполное доказательство.

Если вы все еще хотите отладить доказательство и вам нужно использовать Qed , я бы предложил использовать временную аксиому:

 Axiom todo : forall {A}, A.
Tactic Notation "todo" := (exact todo).
 

Теперь вы можете использовать todo в качестве тактики вместо admit и это позволит вам использовать Qed .

Комментарии:

1. Да, в моем случае это работоспособное решение. Спасибо, что поделились.

Ответ №2:

Я только что понял, что это не из-за операционной системы. Это из-за LibTactics от Software Foundations (https://softwarefoundations.cis.upenn.edu/plf-current/LibTactics.html ). Если у нас есть LibTactics, импортированные в Coq proof script, это позволяет нам поместить Qed в конец леммы с допусками.

Комментарии:

1. Тогда, возможно, они переопределяют admit , используя метод, который я предлагаю в своем ответе.

2. Возможно, они используют то же самое в LibTactics. Мне нужно изучить LibTactics для деталей.

3. Обновление: я использую более старую версию LibTactics. Последняя версия LibTactics не имеет такого специального допустимого поведения admit и Qed.