proposition: Lemma GSG_PartialGraphPreserve: forall P (G1 G2: LabeledGraph V E DV DE DG), Included P (vguard G1) -> Included P (vguard G2) -> Included P (vvalid G1) -> Included P (vvalid G2) -> ((predicate_partial_labeledgraph G1 P) ~=~ (predicate_partial_labeledgraph G2 P))%LabeledGraph -> vertices_identical P (Graph_PointwiseGraph G1) (Graph_PointwiseGraph G2).
proof: Proof. intros. unfold vertices_identical, respectful_relation. rewrite guarded_pointwise_relation_spec. intros. simpl. rename H4 into HP. unfold Included, Ensembles.In in H, H0, H1, H2. destruct H3 as [[? [? [? ?]]] [? ?]]. simpl in H3, H4, H5, H6, H7, H8. unfold predicate_weak_evalid, predicate_vvalid in H3, H4, H5, H6, H7, H8. apply compute_vgamma_local; auto. + intros. split; intros [? ?]; subst; firstorder. + intros; subst. firstorder. + intros; subst. firstorder. Qed.
imports: Coq.Logic.Classical VST.msl.seplog VST.msl.log_normalize VST.msl.ramification_lemmas CertiGraph.lib.Coqlib CertiGraph.lib.EquivDec_ext CertiGraph.lib.EnumEnsembles CertiGraph.lib.List_ext CertiGraph.lib.Relation_ext CertiGraph.lib.Equivalence_ext CertiGraph.lib.Morphisms_ext CertiGraph.msl_ext.log_normalize CertiGraph.msl_ext.iter_sepcon CertiGraph.msl_ext.ramification_lemmas CertiGraph.msl_ext.abs_addr CertiGraph.msl_ext.seplog CertiGraph.graph.graph_model CertiGraph.graph.graph_gen CertiGraph.graph.path_lemmas CertiGraph.graph.reachable_computable CertiGraph.graph.reachable_ind CertiGraph.graph.subgraph2 CertiGraph.graph.dag CertiGraph.graph.FiniteGraph