proposition: Lemma DoubleNoDup_In_snd_eq: forall l k1 k2 v, DoubleNoDup l -> In (k1, v) l -> In (k2, v) l -> k1 = k2.
proof: Proof. induction l; intros. 1: inversion H0. simpl in H0, H1. destruct H0, H1. - rewrite H0 in H1. inversion H1. reflexivity. - apply In_InEither in H1. destruct H1. subst a. apply DoubleNoDup_cons_neq in H. destruct H. contradiction. - apply In_InEither in H0. destruct H0. subst a. apply DoubleNoDup_cons_neq in H. destruct H. contradiction. - eapply IHl; eauto. eapply DoubleNoDup_cons_tl; eauto. Qed.
imports: Coq.Lists.List Coq.micromega.Lia Coq.Sorting.Permutation Coq.ZArith.ZArith_base Coq.ZArith.Zcomplements Coq.Logic.FunctionalExtensionality CertiGraph.lib.Coqlib CertiGraph.lib.EquivDec_ext VST.zlist.sublist VST.zlist.list_solver