sig
  type t
  val empty : USet.t
  val is_empty : USet.t -> bool
  val mem : UChar.t -> USet.t -> bool
  val add : UChar.t -> USet.t -> USet.t
  val add_range : UChar.t -> UChar.t -> USet.t -> USet.t
  val singleton : UChar.t -> USet.t
  val remove : UChar.t -> USet.t -> USet.t
  val remove_range : UChar.t -> UChar.t -> USet.t -> USet.t
  val union : USet.t -> USet.t -> USet.t
  val inter : USet.t -> USet.t -> USet.t
  val diff : USet.t -> USet.t -> USet.t
  val compl : USet.t -> USet.t
  val compare : USet.t -> USet.t -> int
  val equal : USet.t -> USet.t -> bool
  val subset : USet.t -> USet.t -> bool
  val from : UChar.t -> USet.t -> USet.t
  val after : UChar.t -> USet.t -> USet.t
  val until : UChar.t -> USet.t -> USet.t
  val before : UChar.t -> USet.t -> USet.t
  val iter : (UChar.t -> unit) -> USet.t -> unit
  val iter_range : (UChar.t -> UChar.t -> unit) -> USet.t -> unit
  val fold : (UChar.t -> '-> 'a) -> USet.t -> '-> 'a
  val fold_range : (UChar.t -> UChar.t -> '-> 'a) -> USet.t -> '-> 'a
  val for_all : (UChar.t -> bool) -> USet.t -> bool
  val exists : (UChar.t -> bool) -> USet.t -> bool
  val filter : (UChar.t -> bool) -> USet.t -> USet.t
  val partition : (UChar.t -> bool) -> USet.t -> USet.t * USet.t
  val cardinal : USet.t -> int
  val elements : USet.t -> UChar.t list
  val ranges : USet.t -> (UChar.t * UChar.t) list
  val min_elt : USet.t -> UChar.t
  val max_elt : USet.t -> UChar.t
  val choose : USet.t -> UChar.t
  val uset_of_iset : ISet.t -> USet.t
  val iset_of_uset : USet.t -> ISet.t
end