functor (Ord : OrderedType->
  sig
    type elt = Ord.t
    type t
    val empty : t
    val is_empty : t -> bool
    val add : elt -> t -> t
    val union : t -> t -> t
    val find_min : t -> elt
    val remove_min : t -> t
    val size : t -> int
    val fold : ('-> elt -> 'a) -> '-> t -> 'a
  end