proposition: Lemma va_reachable_root_update_ramify: forall (g: Graph) (x: V) (lx: DV) (gx gx': GV), vvalid g x -> vgamma (Graph_PointwiseGraph g) x = gx -> vgamma (Graph_PointwiseGraph (labeledgraph_vgen g x lx)) x = gx' -> Included (Intersection V (reachable g x) (Complement V (eq x))) (vguard g) -> Included (Intersection V (reachable g x) (Complement V (eq x))) (vguard (labeledgraph_vgen g x lx)) -> @derives Pred _ (reachable_vertices_at x g) (vertex_at x gx * (vertex_at x gx' -* reachable_vertices_at x (labeledgraph_vgen g x lx))).
proof: Proof. intros. subst. unfold reachable_vertices_at. apply vertices_at_ramif_1; auto. eexists. split; [| split]. + apply Ensemble_join_Intersection_Complement. - unfold Included, Ensembles.In; intros; subst. apply reachable_refl; auto. - intros. apply decidable_prop_decidable. apply equiv_dec. + apply Ensemble_join_Intersection_Complement. - unfold Included, Ensembles.In; intros; subst. apply reachable_refl; auto. - intros. apply decidable_prop_decidable. apply equiv_dec. + apply GSG_PartialGraphPreserve; auto. - unfold Included, Ensembles.In; intros; subst. rewrite Intersection_spec in H0. destruct H0 as [? _]. apply reachable_foot_valid in H0; auto. - unfold Included, Ensembles.In; intros; subst. rewrite Intersection_spec in H0. destruct H0 as [? _]. apply reachable_foot_valid in H0; auto. - apply si_stronger_partial_labeledgraph_simple with (Complement V (eq x)). * apply Intersection2_Included, Included_refl. * apply lg_vgen_stable. 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