sig
  type elt
  type t
  val empty : ExtSSet.S.t
  val is_empty : ExtSSet.S.t -> bool
  val mem : ExtSSet.S.elt -> ExtSSet.S.t -> bool
  val add : ExtSSet.S.elt -> ExtSSet.S.t -> ExtSSet.S.t
  val add_list : ExtSSet.S.elt list -> ExtSSet.S.t -> ExtSSet.S.t
  val singleton : ExtSSet.S.elt -> ExtSSet.S.t
  val remove : ExtSSet.S.elt -> ExtSSet.S.t -> ExtSSet.S.t
  val union : ExtSSet.S.t -> ExtSSet.S.t -> ExtSSet.S.t
  val inter : ExtSSet.S.t -> ExtSSet.S.t -> ExtSSet.S.t
  val diff : ExtSSet.S.t -> ExtSSet.S.t -> ExtSSet.S.t
  val compare : ExtSSet.S.t -> ExtSSet.S.t -> int
  val equal : ExtSSet.S.t -> ExtSSet.S.t -> bool
  val subset : ExtSSet.S.t -> ExtSSet.S.t -> bool
  val iter : (ExtSSet.S.elt -> unit) -> ExtSSet.S.t -> unit
  val fold : (ExtSSet.S.elt -> '-> 'a) -> ExtSSet.S.t -> '-> 'a
  val for_all : (ExtSSet.S.elt -> bool) -> ExtSSet.S.t -> bool
  val exists : (ExtSSet.S.elt -> bool) -> ExtSSet.S.t -> bool
  val filter : (ExtSSet.S.elt -> bool) -> ExtSSet.S.t -> ExtSSet.S.t
  val partition :
    (ExtSSet.S.elt -> bool) -> ExtSSet.S.t -> ExtSSet.S.t * ExtSSet.S.t
  val cardinal : ExtSSet.S.t -> int
  val elements : ExtSSet.S.t -> ExtSSet.S.elt list
  val min_elt : ExtSSet.S.t -> ExtSSet.S.elt
  val max_elt : ExtSSet.S.t -> ExtSSet.S.elt
  val choose : ExtSSet.S.t -> ExtSSet.S.elt
  val choose' : ExtSSet.S.t -> ExtSSet.S.elt option
  val split :
    ExtSSet.S.elt -> ExtSSet.S.t -> ExtSSet.S.t * bool * ExtSSet.S.t
  val from_list : ExtSSet.S.elt list -> ExtSSet.S.t
  val string_of : ExtSSet.S.t -> string
  val string_of_complex :
    ?start_char:string -> ?end_char:string -> ExtSSet.S.t -> string
end