proposition: Lemma reachable_path_unique_edge: forall (g: Gph) (p: path) (s t : V) (e: E) P, g |= p is s ~o~> t satisfying P -> In e (snd p) -> exists p1 p2, g |= (s, p1 ++ e :: p2) is s ~o~> t satisfying P /\ ~ In e p1 /\ ~ In e p2 /\ length (p1 ++ e :: p2) <= length (snd p).
proof: Proof. intros. destruct H. eapply good_path_unique_edge in H0; eauto. destruct H0 as [p1 [p2 [? [? [? [? [? ?]]]]]]]. exists p1, p2. do 2 (split; 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