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

我试图用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->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.