Logic 如何在Coq中证明以下内容?
如何在Coq中证明以下内容 (p->q)->(~q->~p) 以下是我开始的内容:Logic 如何在Coq中证明以下内容?,logic,coq,Logic,Coq,如何在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. 一些评论: 无论何时,只要您有一个形式为a->B的目标, 您可以使用introsh命令将H:A添加到前提列表中,并留下目标B ~p是p->False的语法糖。
Lemma work : (forall p q : Prop, (p->q)->(~q->~p)).
Proof.
intros p q.
intros p_implies_q not_q.
intros p_true.
一些评论:
- 无论何时,只要您有一个形式为
的目标, 您可以使用a->B
命令将introsh
添加到前提列表中,并留下目标H:A
B
是~p
的语法糖。因此,如果您的目标是p->False
,那么~P
会将introsh
添加到前提列表中,并将目标减少为H:P
False
- 如果您的目标是
,并且您有一个前提Q
,则执行命令H:p->Q
将您的目标更改为apply H
p
- 连续的
命令可以合并为一个命令,因此证明可以缩短为介绍
Proof. intros p q p_implies_q not_q p_true. apply not_q. apply p_implies_q. auto. Qed.
展开不在*
展开否定的定义(~
)。你能从那里开始吗?所以我在介绍p_true之后就开始了?你能解释一下我下一步该怎么办吗?如果你在那之后仍然感到困惑,你需要回顾一下你的课程材料,找出你不理解的部分。注意:所有出现的false
都应该在你的答案中替换为false
(事实上,这两个术语都存在于标准库中,尽管它们的类型不同− <代码>错误:布尔值与错误:道具
)
Proof.
intros p q p_implies_q not_q p_true.
apply not_q.
apply p_implies_q.
auto.
Qed.