proposition: Lemma va_labeledgraph_add_edge_eq: forall (g: Graph) e s d data, ~ evalid g e -> let g' := labeledgraph_add_edge g e s d data in Included (Intersection _ (vvalid g) (fun x => s <> x)) (vguard g) -> Included (Intersection _ (vvalid g') (fun x => s <> x)) (vguard g') -> vertices_at (Intersection _ (vvalid g) (fun x => s <> x)) (Graph_PointwiseGraph g) = vertices_at (Intersection _ (vvalid g') (fun x => s <> x)) (Graph_PointwiseGraph g').
proof: Proof. intros. apply vertices_at_vertices_identical2. split; [simpl; reflexivity |]. rewrite vertices_identical_spec; intros. apply compute_vgamma_local. + apply H0; auto. + apply H1; auto. + reflexivity. + intros. simpl. unfold addValidFunc, updateEdgeFunc. rewrite Intersection_spec in H2. destruct H2. destruct_eq_dec e e0. - subst e0; tauto. - assert (e0 <> e) by congruence; tauto. + simpl; unfold addValidFunc, updateEdgeFunc; intros. destruct_eq_dec e e0. - subst e0; exfalso; tauto. - reflexivity. + simpl; unfold addValidFunc, updateEdgeFunc, update_elabel; intros. destruct_eq_dec e e0. - subst e0; exfalso; tauto. - reflexivity. 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