proposition: Lemma va_reachable_root_update_ramify: forall (g: Graph) (x: addr) (lx: DV) (gx gx': DV * addr * addr), vvalid g x -> vgamma g x = gx -> vgamma (Graph_vgen g x lx) x = gx' -> @derives pred _ (reachable_vertices_at x g) (vertex_at x gx * (vertex_at x gx' -* reachable_vertices_at x (Graph_vgen g x lx))).
proof: Proof. intros. apply va_reachable_root_update_ramify; auto. + unfold Included, Ensembles.In; intros. apply vvalid_vguard. rewrite Intersection_spec in H2. destruct H2 as [? _]. apply reachable_foot_valid in H2; auto. + unfold Included, Ensembles.In; intros. apply vvalid_vguard. rewrite Intersection_spec in H2. destruct H2 as [? _]. apply reachable_foot_valid in H2; auto. Qed.
imports: CertiGraph.lib.Ensembles_ext Coq.Lists.List VST.msl.seplog VST.msl.log_normalize CertiGraph.lib.Coqlib CertiGraph.lib.EquivDec_ext CertiGraph.msl_ext.log_normalize CertiGraph.msl_ext.iter_sepcon CertiGraph.msl_ext.seplog CertiGraph.graph.graph_model CertiGraph.graph.path_lemmas CertiGraph.graph.reachable_computable CertiGraph.graph.reachable_ind CertiGraph.graph.subgraph2 CertiGraph.graph.graph_gen CertiGraph.graph.BinGraph CertiGraph.graph.MathGraph CertiGraph.graph.FiniteGraph CertiGraph.msl_application.Graph Coq.Logic.Classical