coqによるトートロジーの証明


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
アントントルノフ16年

回答:


14

「バニラ」Coqでそれを証明することはできません。直観的な論理に基づいているためです。

証明理論の観点から見ると、直観主義的論理は、排除された中間否定と二重否定の排除の法則が有効な論理規則ではない古典的論理の制限です。

このような状況に対処するには、いくつかの方法があります。

  • 排除された中間の法則を公理として導入する:

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

    これ以降、何かを証明する必要はありません。

  • 除外された中間の法則に相当する公理を導入し、それらの等価性を証明します。ほんの一例です。

    • 二重否定の除去はそのような公理の1つです。

      Axiom dne : forall P:Prop, ~~P -> P.
      
    • パースの法則は別の例です。

      Axiom peirce : forall P Q:Prop, ((P -> Q) -> P) -> P.
      
    • または、De Morganの法則のいずれかを使用します。

      Axiom de_morgan_and : forall P Q:Prop, ~(~P /\ ~Q) -> P \/ Q.
      

これまでありがとうございました。私はあなたが書いたすべてに精通していませんが、しかし確認します。私はcoqIdeを使用していますが、実際には二重否定の証拠もあります。後で説明するために、問題の説明にそれを追加しました。上記の問題に類似した方法があると予想しました。たぶん私は1つの例を含めるべきだった。
成虫

1
@AntonTrunovあなたはあなたにいくつかの括弧を追加する必要がありますAxiom peirce:現状では、それはパースの法則ではありません(そして実際trivialに証明するためです)。
ガリス

@gallaisそれを見つけてくれてありがとう!修繕。
アントントルノフ16年

6

他の人があなたに知らせたように、古典的な論理を仮定しない限り、あなたのトートロジーはトートロジーではありません。しかし、決定可能な真理値についてトートロジーを行っているため、のbool代わりに使用できますProp。次に、トートロジーが成り立ちます:

Require Import Bool.

Lemma how_about_bool: forall (p : bool), Is_true (p || negb p).
Proof.
  now intros [|].
Qed.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.