sig
  type t
  type elt
  val mem :
    ?equal:(Container_intf.S0.elt -> Container_intf.S0.elt -> bool) ->
    Container_intf.S0.t -> Container_intf.S0.elt -> bool
  val length : Container_intf.S0.t -> int
  val is_empty : Container_intf.S0.t -> bool
  val iter : Container_intf.S0.t -> f:(Container_intf.S0.elt -> unit) -> unit
  val fold :
    Container_intf.S0.t ->
    init:'accum -> f:('accum -> Container_intf.S0.elt -> 'accum) -> 'accum
  val exists :
    Container_intf.S0.t -> f:(Container_intf.S0.elt -> bool) -> bool
  val for_all :
    Container_intf.S0.t -> f:(Container_intf.S0.elt -> bool) -> bool
  val count : Container_intf.S0.t -> f:(Container_intf.S0.elt -> bool) -> int
  val sum :
    (module Commutative_group.S with type t = 'sum) ->
    Container_intf.S0.t -> f:(Container_intf.S0.elt -> 'sum) -> 'sum
  val find :
    Container_intf.S0.t ->
    f:(Container_intf.S0.elt -> bool) -> Container_intf.S0.elt option
  val find_map :
    Container_intf.S0.t ->
    f:(Container_intf.S0.elt -> 'a option) -> 'a option
  val to_list : Container_intf.S0.t -> Container_intf.S0.elt list
  val to_array : Container_intf.S0.t -> Container_intf.S0.elt array
  val min_elt :
    Container_intf.S0.t ->
    cmp:(Container_intf.S0.elt -> Container_intf.S0.elt -> int) ->
    Container_intf.S0.elt option
  val max_elt :
    Container_intf.S0.t ->
    cmp:(Container_intf.S0.elt -> Container_intf.S0.elt -> int) ->
    Container_intf.S0.elt option
end