このセクションでは、Coqを使用して述語論理の定理を証明する方法を学習します。Coqでは、命題変数のような集合変数を宣言できます。
変数AB:セット
。AとBがセット変数であることを宣言する前に。次に、セットAでいくつかの述語変数PとQを宣言します。
Variables P Q: A -> Prop.
PとQは、Aから要素を取得してPropを返す関数と考えることができます。a:Aなどの要素のセットがある場合、P(a)を使用し
て、命題Pが満たされていることを示すことができます。同じメソッドを使用して、いくつかの要素に関連する属性を宣言できます。たとえば、次の方法で関係Rを導入して、AとBを接続できます。
Variable R : A -> B -> Prop.
ここで、R abはaとbの関係を表します。Rは、2つのパラメーターを持つ関数と考えることができます。
全称記号(全称記号)
Coqでは、キーワードforallは全称記号を表すために使用されます。forall x:A、P xと書くと、Aのすべての要素が命題Pを満たすことを示し、forall x:A、P x-> Q xは、Aの任意の要素が命題Pを満たし、命題Qを満たすことを意味します。
Variables A: Set.
Variables P Q: A -> Prop.
Theorem example4 :
(forall x: A, P x -> Q x) -> (forall x: A, P x) -> forall x: A, Q x.
Proof.
intros H1 H2 a.
apply H1.
apply H2.
Qed.
この例は、「すべてのAがプロパティPを満たし、Qも満たす」という大前提、「すべてのAがプロパティPを満たしている」、結論は「すべてのAがQを満たしている」という三段論法と見なすことができます。
これを証明するためにいくつかの手順を使用します。最初のステップでは、戦略の紹介を使用します。このステップの後、前提「a:A」と2つの仮説H1およびH2を取得します。戦略の導入により、仮説aが導入されます。A。この仮説では、すべてのターゲットでxが出現するたびにaに置き換えられるため、ターゲットはQになります。
仮説H1があります:すべてのx:A、P x-> Q xについて、Q aを証明したいので、アプリケーションH1を使用して仮説H1をP a-> Q aにインスタンス化できます。これにより、含意がなくなります。 Prove Paが必要です。
最後のステップで除去を行います。H:forall x:A、Pがわかっていて、Pを証明したい場合(xはAに置き換えられます)、H2を使用してPを証明します。
演習3: 次の述語論理命題を証明してみてください。
∀x.(~P(x) /\ Q(x)) -> ∀x.(P(x) -> Q(x))
演習4: 次の述語論理命題を証明してみてください。
∀x.(P(x) -> Q(x)) -> ∀x.~Q(x) -> ∀x.~P(x)
演習5: 次の述語論理命題を証明してみてください。
∀x.(P(x) /\ Q(x)) <-> (∀x.P(x) /\ ∀x.Q(x))
存在記号
Coqでは、キーワードexistsは、存在の数量化を示すために使用されます。Aの要素xが命題Pを満たすことを示すためにexistsx:A、Pxと 書くことができます。
Theorem example5 :
(exists x: A, P x) -> (forall x: A, P x -> Q x) -> exists x: A, Q x.
Proof.
intros H1 H2.
destruct H1 as [a p].
exists a.
apply H2.
apply p.
Qed.
2つの仮説H1とH2をコンテキストに導入した後、仮説と目標に存在するシンボルを処理する必要があります。存在の定量化の戦略は、接続の定量化の戦略に似ています。存在を証明する式x:Q x、xの値が存在を満たし、Qのすべてのxを置き換えると仮定できます。この定理では、H1:が存在するx:A、P xであると仮定します。これは、a:AとP:aの2つの仮説に分解できます。
戦略の存在は、ターゲット内のすべての「x」を「a」に置き換えます。これは、存在の排除です。
最後のアプリケーション操作は例4と同じです。
演習6: 次の述語論理命題を証明してみてください。
∃x.(~P(x) \/ Q(x)) -> ∃x.(~(P(x) /\ ~Q(x)))
演習7: 次の述語論理命題を証明してみてください。
∃x.(~P(x) /\ ~Q(x)) -> ∃x.~(P(x) /\ Q(x))
演習8: 次の述語論理命題を証明してみてください。
∃x.(P(x) \/ Q(x)) <-> (∃x.P(x) \/ ∃x.Q(x))
#中科大软院-hbj形式化されたコースノート-メッセージを残してプライベートメッセージを交換することを歓迎します