proposition: Lemma dst_step: forall x pa, vvalid g x -> dst g (out_edge x) = pa -> forall y, step g x y <-> y = pa.
proof: Proof. intros. subst pa. rewrite step_spec; split; intros. - destruct H0 as [e [? [? ?]]]. pose proof (only_one_edge x e H). simpl in H3. pose proof (proj1 H3 (conj H1 H0)). subst e. auto. - exists (out_edge x). subst y. pose proof (only_one_edge x (out_edge x) H). simpl in H0. assert ((out_edge x) = (out_edge x)) by auto. rewrite <- H0 in H1. intuition. Qed.
imports: Coq.Classes.Morphisms Coq.micromega.Lia Coq.Logic.FunctionalExtensionality CertiGraph.lib.Coqlib CertiGraph.lib.EquivDec_ext CertiGraph.lib.EnumEnsembles CertiGraph.lib.List_ext CertiGraph.graph.graph_model CertiGraph.graph.path_lemmas CertiGraph.graph.graph_gen CertiGraph.graph.MathGraph CertiGraph.graph.FiniteGraph