Coq 如何检查对的相等性
我想在两对类型TR上证明以下定理:Coq 如何检查对的相等性,coq,Coq,我想在两对类型TR上证明以下定理: Definition s:= nat. Definition d:= nat. Definition c:= nat. Definition p:= nat. Inductive rt: Set := |al : rt |bl : rt. Definition TR: Set := rt* s*d* c* p. Implicit Types m n : TR. Theorem eq_TR_dec : forall n m,
Definition s:= nat.
Definition d:= nat.
Definition c:= nat.
Definition p:= nat.
Inductive rt: Set :=
|al : rt
|bl : rt.
Definition TR: Set :=
rt* s*d* c* p.
Implicit Types m n : TR.
Theorem eq_TR_dec : forall n m, {n = m} + {n <> m}.
定义s:=nat。
定义d:=nat。
定义c:=nat。
定义p:=nat。
感应式rt:设置:=
|阿尔:rt
|bl:rt。
定义TR:Set:=
rt*s*d*c*p。
隐式类型mn:TR。
定理eq_TR_dec:forall n m,{n=m}+{n m}。
现在,这个定理的证明从介绍n开始。破坏。破坏m。但我无法找出证明这个定理的最佳策略。知道我该如何证明这个定理吗?谢谢你正如评论中提到的,你可以使用
决定平等
,这基本上解决了这些目标(查看文档了解更多信息)
在这种情况下,只需根据需要多次应用即可:
Theorem eq_TR_dec : forall n m, {n = m} + {n <> m}.
Proof.
decide equality.
- decide equality.
- decide equality.
* decide equality.
* decide equality.
+ decide equality.
+ {
decide equality.
- decide equality.
- decide equality.
}
Qed.
正如我们在第一个案例中所看到的,在这里,您只需要求解apply
decise equality
足够的次数,因此repeat
特别有效 你知道决定平等的策略吗?还有另一个有用的策略:重复。
Theorem eq_TR_dec : forall n m, {n = m} + {n <> m}.
Proof.
repeat decide equality.
Qed.