在我的证明中,我达到了一个类似于以下内容的目标:(实际类型不同(zm:StringMap.string String.string,key 和 elt 是 String.string))。在我的代码中,如果我 H: z1k <> z2k
在环境中,那么它很容易,intuition congruence
但如果我没有这样的假设,那么我无法证明我的目标。此外,我也无法证明v1 = v2
,这有助于证明目标。请有人指导我解决此类情况。谢谢,
Parameter t : Type -> Type.
Variable key : Type.
Variable elt : Type.
Implicit Type m: t elt.
Implicit Type x y z: key.
Implicit Type e: elt.
Require String.
Record id : Type :=
build_id {
id_v : String.string;
id_k: key
}.
Parameter add : key -> elt -> t elt -> t elt.
Parameter MapsTo : key -> elt -> t elt -> Prop.
Lemma MyTest: forall v1 v2 (z1k z2k zk: key) (ze z1 z2: elt) zm,
build_id v1 z1k <> build_id v2 z2k ->
MapsTo zk ze (add z1k z1 (add z2k z2 zm)) ->
MapsTo zk ze (add z2k z2 (add z1k z1 zm)).
Proof.