proposition: Lemma NoDup_app_not_in: forall (A : Type) (l1 l2 : list A), NoDup (l1 ++ l2) -> forall y, In y l1 -> ~ In y l2.
proof: Proof. induction l1; intros. inversion H0. rewrite <- app_comm_cons in H. apply in_inv in H0. destruct H0. subst. apply NoDup_cons_2 in H. intro. apply H. apply in_or_app. right. apply H0. apply NoDup_cons_1 in H. apply IHl1; auto. 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