proposition: Lemma not_reachable_ST_vvalid: forall (g1 : Graph) (root : V) (P: V -> Prop) (g2 : Graph) x, ~ g1 |= root ~o~> x satisfying P -> spanning_tree g1 root P g2 -> (vvalid g1 x <-> vvalid g2 x).
proof: Proof. intros. destruct H0 as [[? _] _]. simpl in H0. unfold predicate_vvalid in H0. specialize (H0 x). split; intros. + assert (vvalid g1 x /\ ~ g1 |= root ~o~> x satisfying P) by (split; auto). rewrite H0 in H2. tauto. + assert (vvalid g2 x /\ ~ g1 |= root ~o~> x satisfying P) by (split; auto). rewrite <- H0 in H2. tauto. Qed.
imports: Coq.Classes.Morphisms CertiGraph.lib.Coqlib CertiGraph.lib.EquivDec_ext CertiGraph.lib.EnumEnsembles CertiGraph.lib.List_ext CertiGraph.lib.relation_list CertiGraph.graph.graph_model CertiGraph.graph.path_lemmas CertiGraph.graph.graph_gen CertiGraph.graph.graph_relation CertiGraph.graph.subgraph2 CertiGraph.graph.reachable_ind Coq.Logic.Classical