proposition: Lemma hcancel2V A x1 x2 (v1 v2 : A) h1 h2 : valid (x1 :-> v1 \+ h1) -> x1 :-> v1 \+ h1 = x2 :-> v2 \+ h2 -> if x1 == x2 then v1 = v2 /\ h1 = h2 else [/\ free h2 x1 = free h1 x2, h1 = x2 :-> v2 \+ free h2 x1 & h2 = x1 :-> v1 \+ free h1 x2].
proof: Proof. by move=>V /(cancel2 V); case: ifP=>// _ [/dyn_inj]. Qed.
imports: Coq(ssreflect ssrbool ssrfun Eqdep) mathcomp(ssrnat eqtype seq path) pcm(options axioms finmap) pcm(pcm unionmap)