functor
(G : 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 -> 'a) -> t -> int -> 'a -> 'a
val iter_vertex : (int -> unit) -> t -> unit
val fold_vertex : (int -> 'a -> 'a) -> t -> 'a -> 'a
val iter_edges : (int -> int -> unit) -> t -> unit
val fold_edges : (int -> int -> 'a -> 'a) -> t -> 'a -> 'a
val in_degree : t -> int -> int
val iter_pred : (int -> unit) -> t -> int -> unit
val fold_pred : (int -> 'a -> 'a) -> t -> int -> 'a -> 'a
val dump : out_channel -> t -> unit
val to_string : t -> string
type v_label = unit
type e_label
val add_vertex_l : t -> int -> v_label -> unit
val vertex_l : t -> int -> v_label
val add_edge_l : t -> int -> e_label -> int -> unit
val find_edge_l : t -> int -> int -> e_label
val find_all_edges_l : t -> int -> int -> e_label list
val fold_multi_edge_l :
(e_label -> 'a -> 'a) -> t -> int -> int -> 'a -> 'a
val iter_succ_l : (e_label -> int -> unit) -> t -> int -> unit
val fold_succ_l :
(e_label -> int -> 'a -> 'a) -> t -> int -> 'a -> 'a
val iter_vertex_l : (int -> v_label -> unit) -> t -> unit
val fold_vertex_l : (int -> v_label -> 'a -> 'a) -> t -> 'a -> 'a
val iter_edges_l : (int -> e_label -> int -> unit) -> t -> unit
val fold_edges_l :
(int -> e_label -> int -> 'a -> 'a) -> t -> 'a -> 'a
val iter_pred_l : (e_label -> int -> unit) -> t -> int -> unit
val fold_pred_l :
(e_label -> int -> 'a -> 'a) -> t -> int -> 'a -> 'a
val label_find_vertex : t -> v_label -> int
val label_add_vertex : t -> v_label -> int
val label_add_edge : t -> v_label -> v_label -> unit
val label_add_edge_l : t -> v_label -> e_label -> v_label -> unit
val to_string_l :
(v_label -> string) ->
?elab_to_str:(e_label -> string) -> t -> string
end) ->
sig
type t = G.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 -> 'a) -> t -> int -> 'a -> 'a
val iter_vertex : (int -> unit) -> t -> unit
val fold_vertex : (int -> 'a -> 'a) -> t -> 'a -> 'a
val iter_edges : (int -> int -> unit) -> t -> unit
val fold_edges : (int -> int -> 'a -> 'a) -> t -> 'a -> 'a
val in_degree : t -> int -> int
val iter_pred : (int -> unit) -> t -> int -> unit
val fold_pred : (int -> 'a -> 'a) -> t -> int -> 'a -> 'a
val dump : out_channel -> t -> unit
val to_string : t -> string
type v_label = unit
type e_label = G.e_label
val add_vertex_l : t -> int -> v_label -> unit
val vertex_l : t -> int -> v_label
val add_edge_l : t -> int -> e_label -> int -> unit
val find_edge_l : t -> int -> int -> e_label
val find_all_edges_l : t -> int -> int -> e_label list
val fold_multi_edge_l :
(e_label -> 'a -> 'a) -> t -> int -> int -> 'a -> 'a
val iter_succ_l : (e_label -> int -> unit) -> t -> int -> unit
val fold_succ_l : (e_label -> int -> 'a -> 'a) -> t -> int -> 'a -> 'a
val iter_vertex_l : (int -> v_label -> unit) -> t -> unit
val fold_vertex_l : (int -> v_label -> 'a -> 'a) -> t -> 'a -> 'a
val iter_edges_l : (int -> e_label -> int -> unit) -> t -> unit
val fold_edges_l : (int -> e_label -> int -> 'a -> 'a) -> t -> 'a -> 'a
val iter_pred_l : (e_label -> int -> unit) -> t -> int -> unit
val fold_pred_l : (e_label -> int -> 'a -> 'a) -> t -> int -> 'a -> 'a
val label_find_vertex : t -> v_label -> int
val label_add_vertex : t -> v_label -> int
val label_add_edge : t -> v_label -> v_label -> unit
val label_add_edge_l : t -> v_label -> e_label -> v_label -> unit
val to_string_l :
(v_label -> string) -> ?elab_to_str:(e_label -> string) -> t -> string
module V :
sig
type label = int
type t = int
val create : 'a -> 'a
val label : 'a -> 'a
end
module E :
sig
type label = G.e_label
type vertex = int
type t = int * IntDigraph.OcamlGraph.Concrete.E.label * int
val create : 'a -> 'b -> 'c -> 'a * 'b * 'c
val src : 'a * 'b * 'c -> 'a
val dst : 'a * 'b * 'c -> 'c
val label : 'a * 'b * 'c -> 'b
end
val nb_vertex : t -> int
val nb_edges : t -> int
val is_empty : t -> bool
val add_edge_e : 'a -> t * int * e_label -> int -> unit
val mem_edge_e : t -> int * 'a * int -> bool
val find_edge : 'a -> t -> int -> t * (int -> e_label) * int
val find_all_edges : t -> int -> int -> (int * e_label * int) list
val succ : t -> int -> int list
val succ_e : t -> int -> (int * e_label * int) list
val iter_succ_e : (int * e_label * int -> unit) -> t -> int -> unit
val fold_succ_e :
('a * e_label * int -> 'b -> 'b) -> t -> 'a -> int -> 'b -> 'b
val iter_edges_e : (int -> int * e_label * int -> unit) -> t -> unit
val fold_edges_e : (int * e_label * int -> 'a -> 'a) -> t -> 'a -> 'a
val pred : t -> int -> int list
val pred_e : t -> int -> (int * e_label * int) list
val iter_pred_e : (int * e_label * int -> unit) -> t -> int -> unit
val fold_pred_e :
('a * e_label * int -> 'b -> 'b) -> t -> 'a -> int -> 'b -> 'b
end