proposition: Lemma reachable_by_path_si: forall (g1 g2: Gph) p n1 n2 P, g1 ~=~ g2 -> (g1 |= p is n1 ~o~> n2 satisfying P <-> g2 |= p is n1 ~o~> n2 satisfying P).
proof: Proof. cut (forall g1 g2 p n1 n2 P, g1 ~=~ g2 -> g1 |= p is n1 ~o~> n2 satisfying P -> g2 |= p is n1 ~o~> n2 satisfying P); intros. + split; intros; [apply (H g1 g2) | apply (H g2 g1)]; auto. symmetry; auto. + destruct H0 as [[? ?] [? ?]]. split; split; auto. - rewrite <- (pfoot_si g1 g2 p); auto. - rewrite <- (valid_path_si g1 g2 H); auto. - apply (path_prop_si g1); 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