Доведення тавтології з кок


12

В даний час я повинен вивчити Coq і не знаю, як боротися з or:

Як приклад, настільки простий, як це, я не бачу, як довести:

Theorem T0: x \/ ~x.

Я був би дуже вдячний, якби хтось міг мені допомогти.

Для довідки я використовую цю шпаргалку .

Також маю на увазі приклад доказу: Тут для подвійного заперечення:

Require Import Classical_Prop.

Parameters x: Prop.

Theorem T7: (~~x) -> x. 
intro H. 
apply NNPP. 
exact H. 
Qed.

NNPPТип типу є forall p:Prop, ~ ~ p -> p., тому його обман використовувати для доведення T7. При імпорті Classical_Propви отримуєтеAxiom classic : forall P:Prop, P \/ ~ P.
Антона Трунова

Отже, apply classic.вирішує вашу мету T0.
Антон Трунов

Відповіді:


14

Ви не можете довести це у "ванільному" Coq, оскільки він заснований на інтуїтивістській логіці :

З доказово-теоретичної точки зору, інтуїтивістська логіка - це обмеження класичної логіки, в якому закон виключення середнього та подвійного заперечення не є дійсними логічними правилами.

Є кілька способів вирішити подібну ситуацію.

  • Введіть закон виключеної середини як аксіому:

    Axiom excluded_middle : forall P:Prop, P \/ ~ P.
    

    Більше не потрібно нічого доводити після цього.

  • Введіть деяку аксіому, еквівалентну закону виключеної середини та доведіть їх еквівалентність. Ось лише кілька прикладів.


Дякую вам поки що Я не знайомий з усім, що ви написали, але все ж перевірятиму. Я використовую coqIde і фактично також отримав доказ подвійного заперечення, я додав його до опису проблеми для більш чіткості згодом. Я очікував, що існує аналогічний спосіб для проблеми, наведеної вище. Можливо, я мав би включити один приклад.
Імаго

1
@AntonTrunov вам потрібно додати кілька круглих дужок до своїх Axiom peirce: як це стверджується, це не закон Перса (і це насправді trivialдоведено).
gallais

@gallais Дякую, що помітили це! Виправлено.
Антон Трунов

6

Як інформували вас, ваша тавтологія не є тавтологією, якщо ви не приймаєте класичну логіку. Але оскільки ви робите тавтологію щодо визначальних значень істини, ви можете використовувати boolзамість цього Prop. Тоді ваша тавтологія дотримується:

Require Import Bool.

Lemma how_about_bool: forall (p : bool), Is_true (p || negb p).
Proof.
  now intros [|].
Qed.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.