我如何定义Coq中pair的相等性?

我如何定义Coq中pair的相等性?,coq,Coq,我将类型定义如下: Definition trans := env -> env -> Prop. Definition tripored := trans * trans * trans. Definition qt (t : tripored) := fst (fst t). Definition wt (t : tripored) := snd (fst t). Definition tt (t : tripored) := snd t. Definition II := (t

我将类型定义如下:

Definition trans := env -> env -> Prop.
Definition tripored := trans * trans * trans.
Definition qt (t : tripored) := fst (fst t).
Definition wt (t : tripored) := snd (fst t).
Definition tt (t : tripored) := snd t.
Definition II := (ttrue, tfalse, I).
然后我定义了一个基于tripored的操作符,比如

有很多运营商,如ort、dseq等。我想证明以下定理:

Theorem seqtr_ii :
  forall n : tripored, seqtr n II = n.

然而,由于(seqtrn II)具有类型trans*trans*trans,我发现很难证明这个定理。有人能给这个定理一些建议吗?

因为你没有提供所有的定义,很难精确地回答,但我会尝试

由于
n
是一个三元组,您可以首先使用
destruct n as((t1,t2),t3)
提取其组件,其中
t1
t2
t3
属于
trans
类型

然后
unfold seqtr
seqtr
替换为其主体

结论变成了两个三元组的等式。要将其转化为说明组件相等性的3个目标,可以使用
do2apply f_equal2
或只是
f_equal

Theorem seqtr_ii :
  forall n : tripored, seqtr n II = n.