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