sig type t type elem val empty : Heap.S.t val pop : Heap.S.t -> Heap.S.elem * Heap.S.t val add : Heap.S.t -> Heap.S.elem list -> Heap.S.t val elements : Heap.S.t -> Heap.S.elem list val length : Heap.S.t -> int end