proposition: Lemma gpredicate_subgraph_equiv: forall (g: Graph) (PV1 PV2: V -> Prop) (PE1 PE2: E -> Prop), Same_set (Intersection _ (vvalid g) PV1) (Intersection _ (vvalid g) PV2) -> Same_set (Intersection _ (evalid g) PE1) (Intersection _ (evalid g) PE2) -> (gpredicate_subgraph PV1 PE1 g) ~=~ (gpredicate_subgraph PV2 PE2 g).
proof: Proof. intros. split; [| split; [| split]]. + simpl; intros. rewrite Same_set_spec in H. auto. + simpl; intros. rewrite Same_set_spec in H0. auto. + simpl; intros. auto. + simpl; intros. auto. 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