proposition: Lemma NoDup_look_up: forall k v l, NoDup (map fst l) -> In (k, v) l -> look_up l k = Some v.
proof: Proof. do 3 intro. induction l; intros. 1: inversion H0. simpl in *. destruct a as [k0 v0]. destruct H0. - inversion H0. subst. destruct (equiv_dec k k). reflexivity. exfalso. intuition. - simpl in H. destruct (equiv_dec k0 k); unfold equiv in *. + apply NoDup_cons_2 in H. exfalso. apply H. subst. now apply (in_map fst) in H0. + apply NoDup_cons_1 in H. now apply IHl. 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