proposition: Lemma gremove_not_edge_derive: forall (g1 : Graph) (e : E) (g2 : Graph) (x y : V), gremove_edge g1 e g2 -> g2 |= x ~> y -> g1 |= x ~> y.
proof: Proof. intros. destruct H0 as [? [? ?]]. destruct H as [? [? [? [? ?]]]]. split; [|split]; [rewrite H; auto..|]. rewrite step_spec in H2 |-* . destruct H2 as [e' [? [? ?]]]. exists e'. assert (e' <> e). { intro. subst e'. destruct H6; auto. destruct H6 as [? [? ?]]. subst y. auto. } specialize (H3 _ H9). specialize (H4 _ H9). specialize (H5 _ H9). subst x y. intuition. 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