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