sig
  module type G =
    sig
      type t
      module V : Sig.COMPARABLE
      val iter_vertex : (V.t -> unit) -> Topological.G.t -> unit
      val iter_succ : (V.t -> unit) -> Topological.G.t -> V.t -> unit
    end
  module Make :
    functor (G : G->
      sig
        val fold : (G.V.t -> '-> 'a) -> Topological.G.t -> '-> 'a
        val iter : (G.V.t -> unit) -> Topological.G.t -> unit
      end
  module Make_stable :
    functor
      (G : sig
             type t
             module V : Sig.COMPARABLE
             val iter_vertex : (V.t -> unit) -> t -> unit
             val iter_succ : (V.t -> unit) -> t -> V.t -> unit
             val in_degree : t -> V.t -> int
           end->
      sig
        val fold : (G.V.t -> '-> 'a) -> Topological.G.t -> '-> 'a
        val iter : (G.V.t -> unit) -> Topological.G.t -> unit
      end
end