# Module OASISGraph

    module OASISGraph: sig .. end

    type vertex = int

    module SetInt: Stdlib.Set.Make(sig

    type t = int

    val compare : int -> int -> int

    end)

    type 'a t = {

`` | `mutable vertexes : `('a * SetInt.t Stdlib.ref) array`;`
`` | `values : `('a, int) Stdlib.Hashtbl.t`;`

`}`

    val create : int -> 'a t

    val copy : 'a t -> 'a t

    val value_of_vertex : 'a t -> int -> 'a

    val vertex_of_value : 'a t -> 'a -> int

    val add_vertex : 'a t -> 'a -> int

    val add_edge : 'a t -> int -> SetInt.elt -> unit

    val topological_sort : 'a t -> int list

    val fold_edges : (int -> SetInt.elt -> 'a -> 'a) -> 'b t -> 'a -> 'a

    val transitive_closure : 'a t -> unit