proposition: Lemma is_partial_graph_trans: forall (g1 g2 g3: PreGraph V E), is_partial_graph g1 g2 -> is_partial_graph g2 g3 -> is_partial_graph g1 g3.
proof: Proof. intros. unfold is_partial_graph in *. destruct H as [? [? [? ?]]], H0 as [? [? [? ?]]]. split; [|split; [|split]]; intros. - apply H0, H; assumption. - apply H4, H1; assumption. - assert (src g1 e = src g2 e) by (apply H2; assumption). rewrite H9. apply H5. 1: apply H1; assumption. rewrite <- H9; apply H; assumption. - assert (dst g1 e = dst g2 e) by (apply H3; assumption). rewrite H9. apply H6. 1: apply H1; assumption. rewrite <- H9; apply H; assumption. Qed.
imports: Coq.Logic.ProofIrrelevance Coq.Sets.Ensembles Coq.Sets.Finite_sets Coq.Classes.Morphisms 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 Coq.Lists.List CertiGraph.graph.graph_model CertiGraph.graph.path_lemmas CertiGraph.graph.reachable_ind CertiGraph.graph.graph_gen