sig
  type 'a t
  type 'a elt
  val create : unit -> 'Pqueue.MinPoly.t
  val length : 'Pqueue.MinPoly.t -> int
  val is_empty : 'Pqueue.MinPoly.t -> bool
  val add : 'Pqueue.MinPoly.t -> 'Pqueue.MinPoly.elt -> unit
  val add_iter :
    'Pqueue.MinPoly.t ->
    (('Pqueue.MinPoly.elt -> unit) -> '-> unit) -> '-> unit
  val min_elt : 'Pqueue.MinPoly.t -> 'Pqueue.MinPoly.elt option
  val get_min_elt : 'Pqueue.MinPoly.t -> 'Pqueue.MinPoly.elt
  val pop_min : 'Pqueue.MinPoly.t -> 'Pqueue.MinPoly.elt option
  val remove_min : 'Pqueue.MinPoly.t -> unit
  val clear : 'Pqueue.MinPoly.t -> unit
  val copy : 'Pqueue.MinPoly.t -> 'Pqueue.MinPoly.t
  val of_array : 'Pqueue.MinPoly.elt array -> 'Pqueue.MinPoly.t
  val of_list : 'Pqueue.MinPoly.elt list -> 'Pqueue.MinPoly.t
  val of_iter :
    (('Pqueue.MinPoly.elt -> unit) -> '-> unit) ->
    '-> 'Pqueue.MinPoly.t
  val iter_unordered :
    ('Pqueue.MinPoly.elt -> unit) -> 'Pqueue.MinPoly.t -> unit
  val fold_unordered :
    ('acc -> 'Pqueue.MinPoly.elt -> 'acc) ->
    'acc -> 'Pqueue.MinPoly.t -> 'acc
end