加在我的证据,我达到了目标,寻找类似以下内容:(实际的类型是不同的(ZM:StringMap.string String.string,关键和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.
如果什么'V1 <> v2'但'z1k = z2k'和'Z1 <> z2'?另外,你能否列举适用于'add'和'MapsTo'的定理? – Ptival 2013-02-27 18:13:17
我想你有类似MapsTo k e(add u v s) - > MapsTo k e s \ /(k = u/\ e = v)? – Vinz 2013-02-28 09:39:20
@Ptival我已经把这个问题的详细版本在此[链接](http://stackoverflow.com/questions/15160579/solving-morphism-proper-functions-with-maps-in-coq) – Khan 2013-03-01 15:04:12