proposition: Lemma is_partial_graph_valid_path: forall (g1 g2: PreGraph V E) (p: path), is_partial_graph g1 g2 -> valid_path g1 p -> valid_path g2 p.
proof: Proof. intros. destruct p as [v p]. revert v H0. induction p; intros. + simpl in H0 |-* . destruct H. apply H; auto. + rewrite valid_path_cons_iff in H0. destruct H0 as [? [[? [? ?]] ?]]. rewrite valid_path_cons_iff. destruct H as [? [? [? ?]]]. assert (src g1 a = src g2 a) by (apply H6; auto). assert (dst g1 a = dst g2 a) by (apply H7; auto). unfold strong_evalid. rewrite <- H8. rewrite <- H9. split; auto. Qed.
imports: Coq.Arith.Arith Coq.Logic.ProofIrrelevance Coq.Logic.FunctionalExtensionality Coq.Classes.Morphisms Coq.Classes.Equivalence CertiGraph.lib.Coqlib CertiGraph.lib.Ensembles_ext CertiGraph.lib.relation_list CertiGraph.lib.List_ext CertiGraph.lib.Equivalence_ext CertiGraph.lib.EquivDec_ext VST.msl.Coqlib2 CertiGraph.graph.graph_model CertiGraph.graph.path_lemmas CertiGraph.graph.reachable_ind CertiGraph.graph.graph_gen CertiGraph.graph.graph_relation