(E : OrderedPolyType->
  sig
    type 'a t
    val create : unit -> 'a t
    val length : 'a t -> int
    val is_empty : 'a t -> bool
    val add : 'a t -> 'E.t -> unit
    val add_iter : 'a t -> (('E.t -> unit) -> '-> unit) -> '-> unit
    val min_elt : 'a t -> 'E.t option
    val get_min_elt : 'a t -> 'E.t
    val pop_min : 'a t -> 'E.t option
    val remove_min : 'a t -> unit
    val clear : 'a t -> unit
    val copy : 'a t -> 'a t
    val of_array : 'E.t array -> 'a t
    val of_list : 'E.t list -> 'a t
    val of_iter : (('E.t -> unit) -> '-> unit) -> '-> 'a t
    val iter_unordered : ('E.t -> unit) -> 'a t -> unit
    val fold_unordered : ('acc -> 'E.t -> 'acc) -> 'acc -> 'a t -> 'acc
  end