proposition: Lemma pmap_lookup_remove_neq : forall (m : pmap) (k k' : positive), k <> k' -> forall v' : T, pmap_lookup k' m = Some v' <-> pmap_lookup k' (pmap_remove k m) = Some v'.
proof: Proof. induction m. Local Ltac t := unfold branch; repeat match goal with | |- context [ match ?X with _ => _ end ] => lazymatch X with | match _ with _ => _ end => fail | _ => destruct X eqn:?; subst; try tauto end end. { destruct k; simpl; split; try congruence. } { destruct k', k; simpl; intros; try solve [ t; rewrite lookup_empty; tauto ]. { assert (k <> k') by congruence. rewrite IHm2; eauto. simpl. t. rewrite lookup_empty. tauto. } { assert (k <> k') by congruence. rewrite IHm1; eauto. simpl. t. rewrite lookup_empty. tauto. } } Qed.
imports: ExtLib.Structures.Maps ExtLib.Structures.Functor ExtLib.Data.Option ExtLib.Data.Positive ExtLib.Tactics.Cases