sig
  type elem = OrderedType.t
  type t = BatHeap.Make(OrderedType).t
  val empty : t
  val size : t -> int
  val insert : t -> elem -> t
  val add : elem -> t -> t
  val merge : t -> t -> t
  val find_min : t -> elem
  val del_min : t -> t
  val of_list : elem list -> t
  val to_list : t -> elem list
  val elems : t -> elem list
  val of_enum : elem BatEnum.t -> t
  val enum : t -> elem BatEnum.t
  val print :
    ?first:string ->
    ?last:string ->
    ?sep:string -> (elem, 'a) BatIO.printer -> (t, 'a) BatIO.printer
end