sig
type 'a t
val empty : 'a PSQueue.t
val add : 'a PSQueue.t -> int -> 'a -> int -> 'a PSQueue.t
val is_empty : 'a PSQueue.t -> bool
val top : 'a PSQueue.t -> int * 'a * int
val get : 'a PSQueue.t -> int -> 'a * int
val pop : 'a PSQueue.t -> 'a PSQueue.t
val remove : 'a PSQueue.t -> int -> 'a PSQueue.t
val fold : ('a -> int -> 'b -> int -> 'a) -> 'b PSQueue.t -> 'a -> 'a
end