sig
  module type OrderedType = Set.OrderedType
  module type S =
    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
    end
  module Make :
    functor (Ord : OrderedType->
      sig
        type elt = Ord.t
        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
      end
end