proposition: Lemma stronger_gpredicate_sub_labeledgraph_simple: forall (g g': Graph) (PV1 PV2: V -> Prop) (PE1 PE2: E -> Prop), Included PV2 PV1 -> Included PE2 PE1 -> (gpredicate_sub_labeledgraph PV1 PE1 g) ~=~ (gpredicate_sub_labeledgraph PV1 PE1 g')%LabeledGraph -> (gpredicate_sub_labeledgraph PV2 PE2 g) ~=~ (gpredicate_sub_labeledgraph PV2 PE2 g')%LabeledGraph.
proof: Proof. intros. destruct H1 as [? [? ?]]. split; [| split]. + eapply stronger_gpredicate_subgraph_simple; eauto. + simpl; intros. specialize (H v). apply H2; simpl; rewrite !Intersection_spec in *; tauto. + simpl; intros. specialize (H0 e). apply H3; simpl; rewrite !Intersection_spec in *; 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