# Functor Classic.I

    module I: functor (G : Sig.I  with type V.label = int) -> S  with type graph = G.t

Classic Imperative Graphs

Parameters: |
`G` | : | `Sig.I with type V.label = int`

    type graph

    val divisors : int -> graph

`divisors n` builds the graph of divisors. Vertices are integers from `2` to `n`. `i` is connected to `j` if and only if `i` divides `j`.
Raises `Invalid_argument` is `n < 2`.

    val de_bruijn : int -> graph

`de_bruijn n` builds the de Bruijn graph of order `n`. Vertices are bit sequences of length `n` (encoded as their interpretation as binary integers). The sequence `xw` is connected to the sequence `wy` for any bits `x` and `y` and any bit sequence `w` of length `n-1`.
Raises `Invalid_argument` is `n < 1` or `n > Sys.word_size-1`.

    val vertex_only : int -> graph

`vertex_only n` builds a graph with `n` vertices and no edge.

    val full : ?self:bool -> int -> graph

`full n` builds a graph with `n` vertices and all possible edges. The optional argument `self` indicates if loop edges should be added (default value is `true`).