sig
  module V :
    sig
      type t = State.t
      val compare : t -> t -> int
      val hash : t -> int
      val equal : t -> t -> bool
      type label = State.t
      val create : label -> t
      val label : t -> label
    end
  module E :
    sig
      type t = State.t * State.t
      val compare : t -> t -> int
      type vertex = State.t
      val src : t -> vertex
      val dst : t -> vertex
      type label
      val create : vertex -> label -> vertex -> t
      val label : t -> label
    end
  type t
  val iter_vertex :
    (State_dependency_graph.G.V.t -> unit) ->
    State_dependency_graph.G.t -> unit
  val fold_vertex :
    (State_dependency_graph.G.V.t -> '-> 'a) ->
    State_dependency_graph.G.t -> '-> 'a
  val iter_edges_e :
    (State_dependency_graph.G.E.t -> unit) ->
    State_dependency_graph.G.t -> unit
  val fold_edges :
    (State_dependency_graph.G.V.t -> State_dependency_graph.G.V.t -> '-> 'a) ->
    State_dependency_graph.G.t -> '-> 'a
  val fold_edges_e :
    (State_dependency_graph.G.E.t -> '-> 'a) ->
    State_dependency_graph.G.t -> '-> 'a
  val iter_succ :
    (State_dependency_graph.G.V.t -> unit) ->
    State_dependency_graph.G.t -> State_dependency_graph.G.V.t -> unit
  val fold_succ :
    (State_dependency_graph.G.V.t -> '-> 'a) ->
    State_dependency_graph.G.t -> State_dependency_graph.G.V.t -> '-> 'a
  val fold_pred :
    (State_dependency_graph.G.V.t -> '-> 'a) ->
    State_dependency_graph.G.t -> State_dependency_graph.G.V.t -> '-> 'a
  val mem_vertex :
    State_dependency_graph.G.t -> State_dependency_graph.G.V.t -> bool
  val mem_edge_e :
    State_dependency_graph.G.t -> State_dependency_graph.G.E.t -> bool
  val in_degree :
    State_dependency_graph.G.t -> State_dependency_graph.G.V.t -> int
  val out_degree :
    State_dependency_graph.G.t -> State_dependency_graph.G.V.t -> int
  val nb_vertex : State_dependency_graph.G.t -> int
end