proposition: Lemma reachable_by_path_split_glue: forall (g: Gph) P p1 p2 n1 n2 n, paths_meet_at g p1 p2 n -> g |= (p1 +++ p2) is n1 ~o~> n2 satisfying P -> g |= p1 is n1 ~o~> n satisfying P /\ g |= p2 is n ~o~> n2 satisfying P.
proof: Proof. intros. destruct H0 as [[? ?] ?]. apply good_path_split in H2. + destruct H2. destruct H. split; split; auto; split; auto. clear H2 H3. destruct p1 as [v1 p1]. destruct p2 as [v2 p2]. unfold path_glue, fst, snd in * |-. destruct p2. - rewrite app_nil_r in * |-. simpl in *. rewrite H in H1. subst v2. auto. - rewrite pfoot_app_cons with (v2 := v1) in H1. rewrite pfoot_head_irrel with (v2 := v2) in H1. auto. + exists n; auto. Qed.
imports: Coq.Logic.ProofIrrelevance Coq.micromega.Lia CertiGraph.lib.Coqlib CertiGraph.lib.EnumEnsembles CertiGraph.lib.List_ext CertiGraph.lib.EquivDec_ext CertiGraph.graph.graph_model Coq.Lists.List Coq.Lists.ListDec