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