functor (A : A) (G : G->
  sig
    module T :
      sig
        type visit_info =
          Traversal(A).visit_info = {
          nb : int;
          dist : int;
          parent : int;
        }
        type t =
          Traversal(A).t = {
          visit : visit_info A.t;
          mutable n : int;
        }
        val non_vertex : int
        val visit_nb : t -> int -> int
        val visited : t -> int -> bool
        val parent : t -> int -> int
        val dist : t -> int -> int
        val nb_visited : t -> int
        val nb_nodes : t -> int
        exception Found of int
        val last_visited : t -> int
        val order : t -> int A.t
        val iter_path : (int -> 'a) -> t -> int -> int -> unit
        val fold_path : (int -> '-> 'a) -> t -> int -> int -> '-> 'a
        val path_rev : t -> int -> int -> int list
        val path : t -> int -> int -> int list
        val make : int -> t
        val set : t -> int -> int -> int -> int -> unit
      end
    type visit_info =
      Traversal(A).visit_info = {
      nb : int;
      dist : int;
      parent : int;
    }
    type t = Traversal(A).t = { visit : visit_info A.t; mutable n : int; }
    val non_vertex : int
    val visit_nb : t -> int -> int
    val visited : t -> int -> bool
    val parent : t -> int -> int
    val dist : t -> int -> int
    val nb_visited : t -> int
    val nb_nodes : t -> int
    val last_visited : t -> int
    val order : t -> int A.t
    val iter_path : (int -> 'a) -> t -> int -> int -> unit
    val fold_path : (int -> '-> 'a) -> t -> int -> int -> '-> 'a
    val path_rev : t -> int -> int -> int list
    val path : t -> int -> int -> int list
    val make : int -> t
    val set : t -> int -> int -> int -> int -> unit
    module Stack :
      sig
        module V :
          sig
            type t
            type elt = int
            val make : ?size:int -> unit -> t
            val set : t -> int -> elt -> unit
            val get : t -> int -> elt
            val clear : t -> unit
            val index_max : t -> int
            val length : t -> int
            val capacity : t -> int
            val blit : t -> int -> t -> int -> int -> unit
            val default : unit -> elt
          end
        type t = { mutable v : V.t; mutable back : int; }
        type elt = V.elt
        val create : ?size:int -> unit -> t
        val is_empty : t -> bool
        val clear : t -> unit
        val add : t -> V.elt -> unit
        val push : t -> V.elt -> unit
        val peek : t -> V.elt
        val pop : t -> V.elt
        val size : t -> int
      end
    exception Found of Traversal.Dfs.T.t
    val def : Traversal.G.t -> int -> Traversal.Dfs.T.t
  end