私の証明では、次のような目標に到達しました: (実際の型は異なります (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.