proposition: Lemma si_spanning_tree': forall (g1 g2 g3: Graph) (v: V) (P: V -> Prop), g2 ~=~ g3 -> (spanning_tree g1 v P g2 <-> spanning_tree g1 v P g3).
proof: Proof. cut (forall g1 g2 g3 v P, g2 ~=~ g3 -> spanning_tree g1 v P g2 -> spanning_tree g1 v P g3); intros. + split; intros; [apply H with g2 | apply H with g3]; auto. symmetry; auto. + destruct H0 as [? [? [? ?]]]. split; [|split; [|split]]; intros. - rewrite <- H. auto. - specialize (H1 H4). rewrite <- H. auto. - rewrite <- H. apply H2; auto. - rewrite <- H. apply H3; 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