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