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