Coq中的成功率不相等
我试图用Coq证明以下引理:Coq中的成功率不相等,coq,proof,Coq,Proof,我试图用Coq证明以下引理: Lemma not_eq_S2: forall m n, S m <> S n -> m <> n. 引理not_eq_S2:forall mn,sm sn->mn。 这似乎很容易,但我不知道如何完成证明。有人能帮我吗 谢谢。这真的很简单(但是否定让人有点困惑) 引理not_eq_S2:forall mn,sm sn->mn。 证明。 不要展开。(*|-…->False*) 简介m n H C.(*…,H:S m=S n->Fals
Lemma not_eq_S2: forall m n, S m <> S n -> m <> n.
引理not_eq_S2:forall mn,sm sn->mn。
这似乎很容易,但我不知道如何完成证明。有人能帮我吗
谢谢。这真的很简单(但是否定让人有点困惑)
引理not_eq_S2:forall mn,sm sn->mn。
证明。
不要展开。(*|-…->False*)
简介m n H C.(*…,H:S m=S n->False |-False*)
应用H.(*…|-SM=SN*)
(*f_equal去掉了应用于等式两边的函数,
这可能是您没有找到的*)
(*基本上,f_equal将目标[fa=fb]转化为[a=b]*)
f_等于。(*…,C:m=n |-m=n*)
精确C。
Qed。
需要知道的是,在Coq中,否定是一个暗示False
的函数,因此smsn
实际上是sm=sn->False
。因此,我们可以引入n=m
(我们可以展开not
或明确告诉intros
去做),而不是证明nm
,并获得目标False
。但是在上下文中使用n=m
我们可以将HS:sn-sm
重写为HS:sn-sn
,这可以通过auto
或许多其他策略(如应用HS)来处理。自反性。
或同余。
等
Lemma not_eq_S2: forall m n, S m <> S n -> m <> n.
Proof. intros m n HS HC.
rewrite HC in HS. auto.
Qed.
引理not_eq_S2:forall mn,sm sn->mn。
证明。介绍m n HS HC。
在HS中重写HC。自动的。
Qed。
这有助于我证明一些x None。我被难住了,因为我不明白这个符号的真正含义。在你的帮助下,我发现这是有效的:没有展开;介绍;区别对待。您可能还想查看关于此类证据如何在引擎盖下工作的评论:
Lemma not_eq_S2: forall m n, S m <> S n -> m <> n.
Proof. intros m n HS HC.
rewrite HC in HS. auto.
Qed.