proposition: Lemma spanning_tree_totally_unmarked_root_reachable: forall (g1 g2: Graph) (root: V), totally_unmarked g1 root -> (vvalid g1 root -> ReachDecidable g1 root (unmarked g1)) -> spanning_tree g1 root g2 -> forall x, reachable g1 root x <-> reachable g2 root x.
proof: Proof. intros. split; intro. - apply H in H1. apply spanning_tree_inj in H0. destruct H0 as [_ [_ [_ [? _]]]]. apply H0; auto. - apply spanning_tree_root_reachable with g2; auto. apply X. rewrite (spanning_tree_vvalid g1 root g2); auto. apply reachable_head_valid in H1; auto. 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