sig
exception Empty
type 'a t = 'a Heap.t
type 'a heap_el = 'a Heap.heap_el
val heap_el_is_valid : 'a heap_el -> bool
val heap_el_get_el : 'a heap_el -> 'a
val length : 'a t -> int
val is_empty : 'a t -> bool
val get_cmp : 'a t -> 'a -> 'a -> int
val create : ?min_size:int -> ('a -> 'a -> int) -> 'a t
val of_array : ?min_size:int -> ('a -> 'a -> int) -> 'a array -> 'a t
val copy : 'a t -> 'a t
val mem : 'a t -> 'a -> bool
val heap_el_mem : 'a t -> 'a heap_el -> bool
val find_heap_el : 'a t -> 'a -> 'a heap_el
val top : 'a t -> 'a option
val top_exn : 'a t -> 'a
val top_heap_el : 'a t -> 'a heap_el option
val top_heap_el_exn : 'a t -> 'a heap_el
val iter : 'a t -> f:('a -> unit) -> unit
val pop : 'a t -> 'a option
val pop_exn : 'a t -> 'a
val pop_heap_el : 'a t -> 'a heap_el option
val pop_heap_el_exn : 'a t -> 'a heap_el
val cond_pop : 'a t -> ('a -> bool) -> 'a option
val cond_pop_heap_el : 'a t -> ('a -> bool) -> 'a heap_el option
val push : 'a t -> 'a -> 'a heap_el
val push_heap_el : 'a t -> 'a heap_el -> unit
val remove : 'a heap_el -> unit
val update : 'a heap_el -> 'a -> unit
val check_heap_property : 'a t -> bool
end