proposition: Lemma reachable_by_partialgraph_reachable_by_equiv (g: PreGraph V E) (P p0: V -> Prop) (n: V): Included (reachable_by g n p0) P -> Same_set (reachable_by g n p0) (reachable_by (predicate_partialgraph g P) n p0).
proof: Proof. intros. assert (Same_set (reachable_by g n p0) (reachable (predicate_partialgraph g p0) n)). 1: { rewrite Same_set_spec. hnf; intros. apply reachable_by_eq_partialgraph_reachable; auto. } rewrite H0 in H |- *. apply reachable_partialgraph_reachable_equiv in H. rewrite H. rewrite partial_partialgraph, Intersection_comm, <- partial_partialgraph. rewrite Same_set_spec; hnf; intros. rewrite reachable_by_eq_partialgraph_reachable. reflexivity. 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