sig
  type t
  val create : ?n:int -> ?m:int -> unit -> t
  val n : t -> int
  val n_mem : t -> int
  val m : t -> int
  val add_vertex : t -> int -> unit
  val del_vertex : t -> t -> int -> unit
  val mem_vertex : t -> int -> bool
  val add_edge : t -> int -> int -> unit
  val del_edge : ?only_first:bool -> t -> int -> int -> unit
  val mem_edge : t -> int -> int -> bool
  val multiplicity_edge : t -> int -> int -> int
  val out_degree : t -> int -> int
  val reverse : ?store_reverse:bool -> t -> t
  val symmetrize : t -> unit
  val sort : ?store_reverse:bool -> t -> unit
  val iter_succ : (int -> unit) -> t -> int -> unit
  val fold_succ : (int -> '-> 'a) -> t -> int -> '-> 'a
  val iter_vertex : (int -> unit) -> t -> unit
  val fold_vertex : (int -> '-> 'a) -> t -> '-> 'a
  val iter_edges : (int -> int -> unit) -> t -> unit
  val fold_edges : (int -> int -> '-> 'a) -> t -> '-> 'a
  val in_degree : t -> int -> int
  val iter_pred : (int -> unit) -> t -> int -> unit
  val fold_pred : (int -> '-> 'a) -> t -> int -> '-> 'a
  val dump : out_channel -> t -> unit
  val to_string : t -> string
  type v_label
  type e_label
  val add_vertex_l : t -> int -> IntDigraph.LS.v_label -> unit
  val vertex_l : t -> int -> IntDigraph.LS.v_label
  val add_edge_l : t -> int -> IntDigraph.LS.e_label -> int -> unit
  val find_edge_l : t -> int -> int -> IntDigraph.LS.e_label
  val find_all_edges_l : t -> int -> int -> IntDigraph.LS.e_label list
  val fold_multi_edge_l :
    (IntDigraph.LS.e_label -> '-> 'a) -> t -> int -> int -> '-> 'a
  val iter_succ_l :
    (IntDigraph.LS.e_label -> int -> unit) -> t -> int -> unit
  val fold_succ_l :
    (IntDigraph.LS.e_label -> int -> '-> 'a) -> t -> int -> '-> 'a
  val iter_vertex_l : (int -> IntDigraph.LS.v_label -> unit) -> t -> unit
  val fold_vertex_l :
    (int -> IntDigraph.LS.v_label -> '-> 'a) -> t -> '-> 'a
  val iter_edges_l :
    (int -> IntDigraph.LS.e_label -> int -> unit) -> t -> unit
  val fold_edges_l :
    (int -> IntDigraph.LS.e_label -> int -> '-> 'a) -> t -> '-> 'a
  val iter_pred_l :
    (IntDigraph.LS.e_label -> int -> unit) -> t -> int -> unit
  val fold_pred_l :
    (IntDigraph.LS.e_label -> int -> '-> 'a) -> t -> int -> '-> 'a
  val label_find_vertex : t -> IntDigraph.LS.v_label -> int
  val label_add_vertex : t -> IntDigraph.LS.v_label -> int
  val label_add_edge :
    t -> IntDigraph.LS.v_label -> IntDigraph.LS.v_label -> unit
  val label_add_edge_l :
    t ->
    IntDigraph.LS.v_label ->
    IntDigraph.LS.e_label -> IntDigraph.LS.v_label -> unit
  val to_string_l :
    (IntDigraph.LS.v_label -> string) ->
    ?elab_to_str:(IntDigraph.LS.e_label -> string) -> t -> string
end