sig
  module type G =
    sig
      type t
      val iter_vertex : (State.t -> unit) -> State_topological.G.t -> unit
      val iter_succ :
        (State.t -> unit) -> State_topological.G.t -> State.t -> unit
      val in_degree : State_topological.G.t -> State.t -> int
    end
  module Make :
    functor (G : G->
      sig
        val fold : (State.t -> '-> 'a) -> State_topological.G.t -> '-> 'a
        val iter : (State.t -> unit) -> State_topological.G.t -> unit
      end
end