sig   type t = OpamParallel.MakeGraph(O).t   module V :     sig       type t = O.t       val compare : t -> t -> int       val hash : t -> int       val equal : t -> t -> bool       type label = OpamParallel.MakeGraph(O).V.label       val create : label -> t       val label : t -> label     end   type vertex = V.t   module E :     sig       type t = OpamParallel.MakeGraph(O).E.t       val compare : t -> t -> int       type vertex = vertex       val src : t -> vertex       val dst : t -> vertex       type label = OpamParallel.MakeGraph(O).E.label       val create : vertex -> label -> vertex -> t       val label : t -> label     end   type edge = E.t   val is_directed : bool   val is_empty : t -> bool   val nb_vertex : t -> int   val nb_edges : t -> int   val out_degree : t -> vertex -> int   val in_degree : t -> vertex -> int   val mem_vertex : t -> vertex -> bool   val mem_edge : t -> vertex -> vertex -> bool   val mem_edge_e : t -> edge -> bool   val find_edge : t -> vertex -> vertex -> edge   val find_all_edges : t -> vertex -> vertex -> edge list   val succ : t -> vertex -> vertex list   val pred : t -> vertex -> vertex list   val succ_e : t -> vertex -> edge list   val pred_e : t -> vertex -> edge list   val iter_vertex : (vertex -> unit) -> t -> unit   val fold_vertex : (vertex -> '-> 'a) -> t -> '-> 'a   val iter_edges : (vertex -> vertex -> unit) -> t -> unit   val fold_edges : (vertex -> vertex -> '-> 'a) -> t -> '-> 'a   val iter_edges_e : (edge -> unit) -> t -> unit   val fold_edges_e : (edge -> '-> 'a) -> t -> '-> 'a   val map_vertex : (vertex -> vertex) -> t -> t   val iter_succ : (vertex -> unit) -> t -> vertex -> unit   val iter_pred : (vertex -> unit) -> t -> vertex -> unit   val fold_succ : (vertex -> '-> 'a) -> t -> vertex -> '-> 'a   val fold_pred : (vertex -> '-> 'a) -> t -> vertex -> '-> 'a   val iter_succ_e : (edge -> unit) -> t -> vertex -> unit   val fold_succ_e : (edge -> '-> 'a) -> t -> vertex -> '-> 'a   val iter_pred_e : (edge -> unit) -> t -> vertex -> unit   val fold_pred_e : (edge -> '-> 'a) -> t -> vertex -> '-> 'a   val create : ?size:int -> unit -> t   val clear : t -> unit   val copy : t -> t   val add_vertex : t -> vertex -> unit   val remove_vertex : t -> vertex -> unit   val add_edge : t -> vertex -> vertex -> unit   val add_edge_e : t -> edge -> unit   val remove_edge : t -> vertex -> vertex -> unit   val remove_edge_e : t -> edge -> unit   type g = t   val transitive_closure : ?reflexive:bool -> g -> g   val add_transitive_closure : ?reflexive:bool -> g -> g   val transitive_reduction : ?reflexive:bool -> g -> g   val replace_by_transitive_reduction : ?reflexive:bool -> g -> g   val mirror : g -> g   val complement : g -> g   val intersect : g -> g -> g   val union : g -> g -> g   module Topological :     sig       val fold : (V.t -> '-> 'a) -> t -> '-> 'a       val iter : (V.t -> unit) -> t -> unit     end   module Parallel :     sig       module G :         sig           type t = t           module V :             sig               type t = vertex               val compare : t -> t -> int               val hash : t -> int               val equal : t -> t -> bool               type label = OpamParallel.MakeGraph(O).Parallel.G.V.label               val create : label -> t               val label : t -> label             end           type vertex = V.t           module E :             sig               type t = OpamParallel.MakeGraph(O).Parallel.G.E.t               val compare : t -> t -> int               type vertex = vertex               val src : t -> vertex               val dst : t -> vertex               type label = OpamParallel.MakeGraph(O).Parallel.G.E.label               val create : vertex -> label -> vertex -> t               val label : t -> label             end           type edge = E.t           val is_directed : bool           val is_empty : t -> bool           val nb_vertex : t -> int           val nb_edges : t -> int           val out_degree : t -> vertex -> int           val in_degree : t -> vertex -> int           val mem_vertex : t -> vertex -> bool           val mem_edge : t -> vertex -> vertex -> bool           val mem_edge_e : t -> edge -> bool           val find_edge : t -> vertex -> vertex -> edge           val find_all_edges : t -> vertex -> vertex -> edge list           val succ : t -> vertex -> vertex list           val pred : t -> vertex -> vertex list           val succ_e : t -> vertex -> edge list           val pred_e : t -> vertex -> edge list           val iter_vertex : (vertex -> unit) -> t -> unit           val fold_vertex : (vertex -> '-> 'a) -> t -> '-> 'a           val iter_edges : (vertex -> vertex -> unit) -> t -> unit           val fold_edges : (vertex -> vertex -> '-> 'a) -> t -> '-> 'a           val iter_edges_e : (edge -> unit) -> t -> unit           val fold_edges_e : (edge -> '-> 'a) -> t -> '-> 'a           val map_vertex : (vertex -> vertex) -> t -> t           val iter_succ : (vertex -> unit) -> t -> vertex -> unit           val iter_pred : (vertex -> unit) -> t -> vertex -> unit           val fold_succ : (vertex -> '-> 'a) -> t -> vertex -> '-> 'a           val fold_pred : (vertex -> '-> 'a) -> t -> vertex -> '-> 'a           val iter_succ_e : (edge -> unit) -> t -> vertex -> unit           val fold_succ_e : (edge -> '-> 'a) -> t -> vertex -> '-> 'a           val iter_pred_e : (edge -> unit) -> t -> vertex -> unit           val fold_pred_e : (edge -> '-> 'a) -> t -> vertex -> '-> 'a           val create : ?size:int -> unit -> t           val clear : t -> unit           val copy : t -> t           val add_vertex : t -> vertex -> unit           val remove_vertex : t -> vertex -> unit           val add_edge : t -> vertex -> vertex -> unit           val add_edge_e : t -> edge -> unit           val remove_edge : t -> vertex -> vertex -> unit           val remove_edge_e : t -> edge -> unit           module Vertex :             sig               type t = V.t               val to_string : t -> string               val to_json : t -> OpamJson.t               val compare : t -> t -> int               val hash : t -> int               val equal : t -> t -> bool             end           module Topological :             sig val fold : (V.t -> '-> 'a) -> t -> '-> 'end           val has_cycle : t -> bool           val scc_list : t -> V.t list list         end       val iter :         jobs:int ->         command:(pred:(G.V.t * 'a) list -> G.V.t -> 'OpamProcess.job) ->         ?dry_run:bool -> ?mutually_exclusive:G.V.t list list -> G.t -> unit       val map :         jobs:int ->         command:(pred:(G.V.t * 'a) list -> G.V.t -> 'OpamProcess.job) ->         ?dry_run:bool ->         ?mutually_exclusive:G.V.t list list -> G.t -> (G.V.t * 'a) list       exception Errors of G.V.t list * (G.V.t * exn) list * G.V.t list       exception Cyclic of G.V.t list list     end   module Dot : sig val output_graph : out_channel -> t -> unit end end