使用Coq Proof Assistant证明(p-> q) - >(~q-> ~p)

时间:2013-02-01 10:19:12

标签: logic coq theorem-proving

我对Coq很新,我正在尝试Ruth和Ryan的样本引理。使用自然演绎的证明非常简单,这就是我想用Coq证明的。

assume p -> q.
  assume ~q.
    assume p.
      q.
      False.
    therefore ~p.
  therefore ~q -> ~p.
therefore (p -> q) => ~q => ~p.

我被困在第3行assume p

有人可以告诉我是否存在从自然扣除到Coq关键字的一对一映射?

3 个答案:

答案 0 :(得分:3)

NNPP没用!

Theorem easy : forall p q:Prop, (p->q)->(~q->~p).
Proof. intros. intro. apply H0. apply H. exact H1. Qed.

答案 1 :(得分:2)

你可以这样开始你的证明:

Section CONTRA.
Variables P Q : Prop.

Hypothesis PimpQ : P -> Q.
Hypothesis notQ  : ~Q.
Hypothesis Ptrue : P.

Theorem contra : False.
Proof.

此时的环境是:

1 subgoal

  P : Prop
  Q : Prop
  PimpQ : P -> Q
  notQ : ~ Q
  Ptrue : P
  ============================
   False

您应该能够继续证明。它会比你的证明更冗长(在第4行,你刚写了q,在这里你必须通过组合PimpQPtrue来证明它。它应该是公平的trivial ...... :)

答案 2 :(得分:0)

实际上并不那么困难。

刚刚玩过,引入了双重否定,事情自动失败。这就是证明的样子。

Theorem T1 : (~q->~p)->(p->q).
Proof.
intros.
apply NNPP.
intro.
apply H in H1.
contradiction.
Qed.

Ta daaaa!