我如何定义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.