`sig
module type T =
sig
type +'a t
module Key : sig type t end
val nil : 'a Cf_pqueue.T.t
val empty : 'a Cf_pqueue.T.t -> bool
val size : 'a Cf_pqueue.T.t -> int
val head : 'a Cf_pqueue.T.t -> Cf_pqueue.T.Key.t * 'a
val tail : 'a Cf_pqueue.T.t -> 'a Cf_pqueue.T.t
val pop :
'a Cf_pqueue.T.t ->
((Cf_pqueue.T.Key.t * 'a) * 'a Cf_pqueue.T.t) option
val put :
Cf_pqueue.T.Key.t * 'a -> 'a Cf_pqueue.T.t -> 'a Cf_pqueue.T.t
val merge : 'a Cf_pqueue.T.t -> 'a Cf_pqueue.T.t -> 'a Cf_pqueue.T.t
val iterate :
(Cf_pqueue.T.Key.t * 'a -> unit) -> 'a Cf_pqueue.T.t -> unit
val predicate :
(Cf_pqueue.T.Key.t * 'a -> bool) -> 'a Cf_pqueue.T.t -> bool
val fold :
('b -> Cf_pqueue.T.Key.t * 'a -> 'b) -> 'b -> 'a Cf_pqueue.T.t -> 'b
val filter :
(Cf_pqueue.T.Key.t * 'a -> bool) ->
'a Cf_pqueue.T.t -> 'a Cf_pqueue.T.t
val map :
(Cf_pqueue.T.Key.t * 'a -> 'b) ->
'a Cf_pqueue.T.t -> 'b Cf_pqueue.T.t
val optmap :
(Cf_pqueue.T.Key.t * 'a -> 'b option) ->
'a Cf_pqueue.T.t -> 'b Cf_pqueue.T.t
val partition :
(Cf_pqueue.T.Key.t * 'a -> bool) ->
'a Cf_pqueue.T.t -> 'a Cf_pqueue.T.t * 'a Cf_pqueue.T.t
val of_seq : (Cf_pqueue.T.Key.t * 'a) Cf_seq.t -> 'a Cf_pqueue.T.t
val of_list : (Cf_pqueue.T.Key.t * 'a) list -> 'a Cf_pqueue.T.t
val to_seq : 'a Cf_pqueue.T.t -> (Cf_pqueue.T.Key.t * 'a) Cf_seq.t
val to_seq2 :
'a Cf_pqueue.T.t ->
((Cf_pqueue.T.Key.t * 'a) * 'a Cf_pqueue.T.t) Cf_seq.t
end
end`