sig
  val iter : ?pre:(G.V.t -> unit) -> ?post:(G.V.t -> unit) -> G.t -> unit
  val prefix : (G.V.t -> unit) -> G.t -> unit
  val postfix : (G.V.t -> unit) -> G.t -> unit
  val iter_component :
    ?pre:(G.V.t -> unit) -> ?post:(G.V.t -> unit) -> G.t -> G.V.t -> unit
  val prefix_component : (G.V.t -> unit) -> G.t -> G.V.t -> unit
  val postfix_component : (G.V.t -> unit) -> G.t -> G.V.t -> unit
  type iterator = Graph.Traverse.Dfs(G).iterator
  val start : G.t -> iterator
  val step : iterator -> iterator
  val get : iterator -> G.V.t
  val has_cycle : G.t -> bool
end