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