proposition: Lemma weak_edge_prop_si: forall (P: V -> Prop) (g1 g2: PreGraph V E), g1 ~=~ g2 -> Same_set (Intersection _ (weak_edge_prop P g1) (evalid g1)) (Intersection _ (weak_edge_prop P g2) (evalid g2)).
proof: Proof. intros. rewrite Same_set_spec; intro e. rewrite !Intersection_spec. unfold weak_edge_prop. pose proof (proj1 (proj2 H) e). pose proof proj1 (proj2 (proj2 H)) e. split; intros [? ?]; do 2 (spec H1; [tauto |]); (split; [congruence | tauto]). 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