proposition: Lemma SameADTs_pop_SCA_left : forall {av} k (v: W) (m1 m2: StringMap.t (Value av)), k ∉ m1 -> SameADTs (StringMap.add k (wrap v) m1) m2 -> SameADTs m1 m2.
proof: Proof. unfold SameADTs; split; intros; rewrite <- H0 in *. - eauto using MapsTo_NotIn_inv, StringMap.add_2. - destruct (StringMap.E.eq_dec k k0); subst; StringMap_t; (congruence || discriminate). Qed.
imports: Coq.Classes.Morphisms CertifiedExtraction.CoreLemmas CertifiedExtraction.PropertiesOfTelescopes CertifiedExtraction.PropertiesOfTelescopes CertifiedExtraction.FacadeLemmas