functor (O : Map.OrderedType->
  sig
    type vertex = O.t
    type t
    val as_graph : t -> (vertex, vertex * vertex) graph
    val empty : t
    val add_edge : vertex -> vertex -> t -> t
    val remove_edge : vertex -> vertex -> t -> t
    val add : vertex -> t -> t
    val remove : vertex -> t -> t
    val union : t -> t -> t
    val vertices : t -> vertex sequence
    val vertices_l : t -> vertex list
    val of_list : (vertex * vertex) list -> t
    val add_list : (vertex * vertex) list -> t -> t
    val to_list : t -> (vertex * vertex) list
    val of_seq : (vertex * vertex) sequence -> t
    val add_seq : (vertex * vertex) sequence -> t -> t
    val to_seq : t -> (vertex * vertex) sequence
  end