如何在Coq中证明以下内容?
(p-> q)->(〜q->〜p)
这就是我的开始:
Lemma work : (forall p q : Prop, (p->q)->(~q->~p)).
Proof.
intros p q.
intros p_implies_q not_q.
intros p_true.
答案 0 :(得分:1)
Lemma work : (forall p q : Prop, (p->q)->(~q->~p)).
Proof.
intros p q.
intros p_implies_q not_q.
intros p_true.
apply not_q.
apply p_implies_q.
auto.
Qed.
一些评论:
只要您有A -> B
形式的目标,
您可以使用intros H
命令将H: A
添加到场所列表中,并留下目标B
。
~P
是P -> False
的语法糖。因此,如果您的目标是~P
,那么intros H
会将H: P
添加到您的场所列表中,并将目标减少到False
如果您的目标是Q
,并且前提是H: P -> Q
,则执行命令apply H
会将目标更改为P
连续intros
命令可以合并为一个,因此证明可以缩短为
Proof.
intros p q p_implies_q not_q p_true.
apply not_q.
apply p_implies_q.
auto.
Qed.