sig
  module type G =
    sig
      type t
      module V : Sig.COMPARABLE
      val iter_vertex : (V.t -> unit) -> WeakTopological.G.t -> unit
      val iter_succ : (V.t -> unit) -> WeakTopological.G.t -> V.t -> unit
    end
  type 'a element = Vertex of 'a | Component of 'a * 'a WeakTopological.t
  and 'a t
  val fold_left :
    ('a -> 'b WeakTopological.element -> 'a) ->
    'a -> 'b WeakTopological.t -> 'a
  module Make :
    functor (G : G) ->
      sig
        val recursive_scc :
          WeakTopological.G.t -> G.V.t -> G.V.t WeakTopological.t
      end
end