`val first_value_for_cpt_vertex : int`
`val cpt_vertex : int Stdlib.ref`
`val max_cpt : int -> int -> int`
`val after_unserialization : int -> unit`

### Association table builder

`module type HM = sig ... end`

Common signature to an imperative/persistent association table

`module type TBL_BUILDER = functor (X : Sig.COMPARABLE) -> HM with type key = X.t`
`module Make_Hashtbl (X : Sig.COMPARABLE) : sig ... end`

`HM` implementation using hashtbl.

`module Make_Map (X : Sig.COMPARABLE) : sig ... end`

`HM` implementation using map

### Blocks builder

`module Minimal (S : Stdlib.Set.S) (HM : HM) : sig ... end`

Common implementation to all (directed) graph implementations.

`module Pred (S : sig ... end) : sig ... end`

All the predecessor operations from the iterators on the edges

`module Unlabeled (V : Sig.COMPARABLE) (HM : HM with type key = V.t) : sig ... end`

Common implementation to all the unlabeled (directed) graphs.

`module Labeled (V : Sig.COMPARABLE) (E : Sig.ORDERED_TYPE) (HM : HM with type key = V.t) : sig ... end`

Common implementation to all the labeled (directed) graphs.

`module ConcreteVertex (F : TBL_BUILDER) (V : Sig.COMPARABLE) : sig ... end`

The vertex module and the vertex table for the concrete graphs.

`module Make_Abstract (G : sig ... end) : sig ... end`

Support for explicitly maintaining edge set of predecessors. Crucial for algorithms that do a lot of backwards traversal.

`module BidirectionalMinimal (S : Stdlib.Set.S) (HM : HM) : sig ... end`
`module BidirectionalUnlabeled (V : Sig.COMPARABLE) (HM : HM with type key = V.t) : sig ... end`
`module BidirectionalLabeled (V : Sig.COMPARABLE) (E : Sig.ORDERED_TYPE) (HM : HM with type key = V.t) : sig ... end`
`module Make (F : TBL_BUILDER) : sig ... end`

Build persistent (resp. imperative) graphs from a persistent (resp. imperative) association table

`module Graph (G : sig ... end) : sig ... end`

Implementation of undirected graphs from implementation of directed graphs.