proposition: Lemma edgeP (G : sgraph) (e : {set G}) : edge_spec e.
proof: Proof. have [edge_e|] := boolP (e \in E(G)); last by constructor. have E : exists p : G * G, (e == [set p.1; p.2]) && (p.1 -- p.2). { case/edgesP : edge_e => x [y] [/eqP ? ?]. by exists (x,y). } set p := xchoose E; case/andP: (xchooseP E) => /eqP ? ?. exact: (@Edge _ e p.1 p.2). Qed.
imports: Coq(Setoid CMorphisms) mathcomp(all_ssreflect) GraphTheory(edone preliminaries bij digraph) GraphTheory(set_tac)