# Module type MoreLabels.Set.S

    module type S = sig .. end

    type elt

    type t

    val empty : t

    val is_empty : t -> bool

    val mem : elt -> t -> bool

    val add : elt -> t -> t

    val singleton : elt -> t

    val remove : elt -> t -> t

    val union : t -> t -> t

    val inter : t -> t -> t

    val disjoint : t -> t -> bool

    val diff : t -> t -> t

    val compare : t -> t -> int

    val equal : t -> t -> bool

    val subset : t -> t -> bool

    val iter : f:(elt -> unit) -> t -> unit

    val map : f:(elt -> elt) ->
           t -> t

    val fold : f:(elt -> 'a -> 'a) -> t -> init:'a -> 'a

    val for_all : f:(elt -> bool) -> t -> bool

    val exists : f:(elt -> bool) -> t -> bool

    val filter : f:(elt -> bool) -> t -> t

    val filter_map : f:(elt -> elt option) ->
           t -> t

    val partition : f:(elt -> bool) ->
           t -> t * t

    val cardinal : t -> int

    val elements : t -> elt list

    val min_elt : t -> elt

    val min_elt_opt : t -> elt option

    val max_elt : t -> elt

    val max_elt_opt : t -> elt option

    val choose : t -> elt

    val choose_opt : t -> elt option

    val split : elt ->
           t -> t * bool * t

    val find : elt -> t -> elt

    val find_opt : elt -> t -> elt option

    val find_first : f:(elt -> bool) ->
           t -> elt

    val find_first_opt : f:(elt -> bool) ->
           t -> elt option

    val find_last : f:(elt -> bool) ->
           t -> elt

    val find_last_opt : f:(elt -> bool) ->
           t -> elt option

    val of_list : elt list -> t

    val to_seq_from : elt ->
           t -> elt Seq.t

    val to_seq : t -> elt Seq.t

    val add_seq : elt Seq.t -> t -> t

    val of_seq : elt Seq.t -> t