sig
  module type GRAPH =
    sig
      type graph
      and node
      val iter_nodes :
        (Avl_topo.GRAPH.node -> unit) -> Avl_topo.GRAPH.graph -> unit
      val iter_successors :
        (Avl_topo.GRAPH.node -> unit) -> Avl_topo.GRAPH.node -> unit
      val get : Avl_topo.GRAPH.node -> int
      val set : Avl_topo.GRAPH.node -> int -> unit
    end
  module Make :
    functor (X : GRAPH->
      sig
        exception Cyclic
        val fold : (X.node -> '-> 'a) -> '-> X.graph -> 'a
        val iter : (X.node -> unit) -> X.graph -> unit
        val list : X.graph -> X.node list
        val stack : X.graph -> X.node Stack.t
        val queue : X.graph -> X.node Queue.t
      end
end