proposition: Lemma split_list_In_first: forall (l: list V) v, In v l -> exists la lb, l = la ++ v::lb /\ (forall u, In u la -> u <> v).
proof: Proof. induction l; intros. contradiction. destruct H. subst v. exists nil. exists l. rewrite app_nil_l; auto. destruct (EV a v). hnf in e. subst v. exists nil. exists l. split. simpl; auto. unfold not; intros; contradiction. unfold complement, equiv in c. apply IHl in H. destruct H as [la [lb [? ?]]]. exists (a::la). exists lb. split. simpl; rewrite H; auto. unfold not; intros. destruct H1. subst u; subst v. contradiction. apply (H0 u); auto. Qed.
imports: Coq.Logic.Classical CertiGraph.lib.List_ext CertiGraph.lib.EquivDec_ext CertiGraph.graph.graph_model CertiGraph.graph.graph_relation CertiGraph.graph.path_lemmas CertiGraph.graph.graph_gen CertiGraph.graph.FiniteGraph