Section Dfs.
Variable g : T -> seq T.
Implicit Type v w a : seq T.
Fixpoint dfs n v x :=
if x \in v then v else
if n is n'.+1 then foldl (dfs n') (x :: v) (g x) else v.
Inductive dfs_path v x y : Prop :=
DfsPath p of path (grel g) x p & y = last x p & [disjoint x :: p & v].
End Dfs.
Variable e : rel T.
Definition rgraph x := enum (e x).

Lemma connect_cycle p : cycle e p -> {in p &, forall x y, connect x y}.