sig
  type elt
  and t
  val empty : MoreLabels.Set.S.t
  val is_empty : MoreLabels.Set.S.t -> bool
  val mem : MoreLabels.Set.S.elt -> MoreLabels.Set.S.t -> bool
  val add : MoreLabels.Set.S.elt -> MoreLabels.Set.S.t -> MoreLabels.Set.S.t
  val singleton : MoreLabels.Set.S.elt -> MoreLabels.Set.S.t
  val remove :
    MoreLabels.Set.S.elt -> MoreLabels.Set.S.t -> MoreLabels.Set.S.t
  val union : MoreLabels.Set.S.t -> MoreLabels.Set.S.t -> MoreLabels.Set.S.t
  val inter : MoreLabels.Set.S.t -> MoreLabels.Set.S.t -> MoreLabels.Set.S.t
  val diff : MoreLabels.Set.S.t -> MoreLabels.Set.S.t -> MoreLabels.Set.S.t
  val compare : MoreLabels.Set.S.t -> MoreLabels.Set.S.t -> int
  val equal : MoreLabels.Set.S.t -> MoreLabels.Set.S.t -> bool
  val subset : MoreLabels.Set.S.t -> MoreLabels.Set.S.t -> bool
  val iter : f:(MoreLabels.Set.S.elt -> unit) -> MoreLabels.Set.S.t -> unit
  val fold :
    f:(MoreLabels.Set.S.elt -> '-> 'a) ->
    MoreLabels.Set.S.t -> init:'-> 'a
  val for_all :
    f:(MoreLabels.Set.S.elt -> bool) -> MoreLabels.Set.S.t -> bool
  val exists : f:(MoreLabels.Set.S.elt -> bool) -> MoreLabels.Set.S.t -> bool
  val filter :
    f:(MoreLabels.Set.S.elt -> bool) ->
    MoreLabels.Set.S.t -> MoreLabels.Set.S.t
  val partition :
    f:(MoreLabels.Set.S.elt -> bool) ->
    MoreLabels.Set.S.t -> MoreLabels.Set.S.t * MoreLabels.Set.S.t
  val cardinal : MoreLabels.Set.S.t -> int
  val elements : MoreLabels.Set.S.t -> MoreLabels.Set.S.elt list
  val min_elt : MoreLabels.Set.S.t -> MoreLabels.Set.S.elt
  val max_elt : MoreLabels.Set.S.t -> MoreLabels.Set.S.elt
  val choose : MoreLabels.Set.S.t -> MoreLabels.Set.S.elt
  val split :
    MoreLabels.Set.S.elt ->
    MoreLabels.Set.S.t -> MoreLabels.Set.S.t * bool * MoreLabels.Set.S.t
end