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