Heap.Sval empty : tThe empty heap
add x h returns a new heap containing the elements of h, plus x; complexity $ O(log(n)) $
maximum h returns the maximum element of h; raises EmptyHeap when h is empty; complexity $ O(1) $
remove h returns a new heap containing the elements of h, except the maximum of h; raises EmptyHeap when h is empty; complexity $ O(log(n)) $
usual iterators and combinators; elements are presented in arbitrary order