sig
  type t = Fcl_domain.t
  val empty : Fcl_setDomain.S.t
  val is_empty : Fcl_setDomain.S.t -> bool
  val mem : int -> Fcl_setDomain.S.t -> bool
  val add : int -> Fcl_setDomain.S.t -> Fcl_setDomain.S.t
  val singleton : int -> Fcl_setDomain.S.t
  val remove : int -> Fcl_setDomain.S.t -> Fcl_setDomain.S.t
  val union : Fcl_setDomain.S.t -> Fcl_setDomain.S.t -> Fcl_setDomain.S.t
  val inter : Fcl_setDomain.S.t -> Fcl_setDomain.S.t -> Fcl_setDomain.S.t
  val diff : Fcl_setDomain.S.t -> Fcl_setDomain.S.t -> Fcl_setDomain.S.t
  val compare : Fcl_setDomain.S.t -> Fcl_setDomain.S.t -> int
  val equal : Fcl_setDomain.S.t -> Fcl_setDomain.S.t -> bool
  val subset : Fcl_setDomain.S.t -> Fcl_setDomain.S.t -> bool
  val iter : (int -> unit) -> Fcl_setDomain.S.t -> unit
  val cardinal : Fcl_setDomain.S.t -> int
  val elements : Fcl_setDomain.S.t -> int list
  val min_elt : Fcl_setDomain.S.t -> int
  val max_elt : Fcl_setDomain.S.t -> int
  val choose : Fcl_setDomain.S.t -> int
  val remove_up : int -> Fcl_setDomain.S.t -> Fcl_setDomain.S.t
  val remove_low : int -> Fcl_setDomain.S.t -> Fcl_setDomain.S.t
end