Coq 如何检查对的相等性

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,

我想在两对类型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, {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.