proposition: Lemma Prop_join_EST_right: forall (g1 g2: Graph) x l r, vvalid g1 x -> vgamma g1 x = (true, l, r) -> edge_spanning_tree g1 (x, L) g2 -> Prop_join (reachable g2 r) (Intersection _ (reachable g1 x) (Complement addr (reachable g2 r))) (reachable g1 x).
proof: Proof. intros. apply Ensemble_join_Intersection_Complement. + eapply edge_spanning_tree_left_reachable; eauto. + intros. destruct (edge_spanning_tree_left_vgamma g1 g2 x l r H H0 H1) as [l' ?]. apply gamma_right_weak_valid in H2. - apply decidable_prop_decidable, Graph_reachable_dec, weak_valid_vvalid_dec; auto. - apply (edge_spanning_tree_left_reachable_vvalid g1 g2 x true l r); auto. unfold Ensembles.In . apply reachable_by_refl; auto. Qed.
imports: VST.msl.seplog VST.msl.log_normalize CertiGraph.lib.Coqlib CertiGraph.lib.Ensembles_ext CertiGraph.lib.EquivDec_ext Coq.Lists.List CertiGraph.msl_ext.ramification_lemmas CertiGraph.graph.graph_model CertiGraph.graph.path_lemmas CertiGraph.graph.graph_gen CertiGraph.graph.graph_relation CertiGraph.graph.subgraph2 CertiGraph.graph.reachable_ind CertiGraph.graph.spanning_tree CertiGraph.graph.BinGraph CertiGraph.graph.MathGraph CertiGraph.graph.FiniteGraph CertiGraph.msl_application.Graph CertiGraph.msl_application.GraphBin CertiGraph.msl_application.GraphBin_Mark