proposition: Lemma intersect_nodup {A: Type} (eq_dec : forall x y : A, {x = y} + {x <> y}): forall (l1 l2 : list A), NoDup l1 -> NoDup (intersect eq_dec l1 l2).
proof: Proof. induction l1; intros; simpl; auto. destruct (in_dec eq_dec a l2). apply NoDup_cons. apply NoDup_cons_2 in H. intro; apply H. rewrite <- intersect_property in H0. destruct H0; auto. apply IHl1. apply NoDup_cons_1 in H; auto. apply IHl1. apply NoDup_cons_1 in H. 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