module type GRAPH_acyclic = sig  end
For this implementation, the client must provide an implementation of
    graph which fullfills the signature GRAPH_acyclic .
type graph 
The type of graphs.
type node 
The type of nodes.
val iter_nodes : (node -> unit) ->
       graph -> unit
iter_nodes f g applies f on every nodes of the graph g.  The 
      order in which nodes are considered does not matter.  However, each
      node must be considered exactly once.
val iter_successors : (node -> unit) ->
       node -> unit
iter_successors f nd applies f on every successors of the node
      nd in its graph.  The order in which successors are considere does
      not matter.  Multiple occurences of the same successor are allowed.
val get : node -> int
Every node must carry a transient integer field.  No
      assumption is made about the initial content. The following
      functions allows reading and updating this field.
val set : node -> int -> unit