sig
  type t
  type key
  type data
  exception Empty
  val create : unit -> PrioQueue.S.t
  val clear : PrioQueue.S.t -> unit
  val is_empty : PrioQueue.S.t -> bool
  val top : PrioQueue.S.t -> PrioQueue.S.data
  val pop : PrioQueue.S.t -> PrioQueue.S.data
  val push : PrioQueue.S.key -> PrioQueue.S.data -> PrioQueue.S.t -> unit
  val string_of : PrioQueue.S.t -> string
  val remove : PrioQueue.S.data -> PrioQueue.S.t -> unit
end