sig
  module S :
    sig
      type t = Domain.t
      val empty : SetDomain.S.t
      val is_empty : SetDomain.S.t -> bool
      val mem : int -> SetDomain.S.t -> bool
      val add : int -> SetDomain.S.t -> SetDomain.S.t
      val singleton : int -> SetDomain.S.t
      val remove : int -> SetDomain.S.t -> SetDomain.S.t
      val union : SetDomain.S.t -> SetDomain.S.t -> SetDomain.S.t
      val inter : SetDomain.S.t -> SetDomain.S.t -> SetDomain.S.t
      val diff : SetDomain.S.t -> SetDomain.S.t -> SetDomain.S.t
      val compare : SetDomain.S.t -> SetDomain.S.t -> int
      val equal : SetDomain.S.t -> SetDomain.S.t -> bool
      val subset : SetDomain.S.t -> SetDomain.S.t -> bool
      val iter : (int -> unit) -> SetDomain.S.t -> unit
      val cardinal : SetDomain.S.t -> int
      val elements : SetDomain.S.t -> int list
      val min_elt : SetDomain.S.t -> int
      val max_elt : SetDomain.S.t -> int
      val choose : SetDomain.S.t -> int
      val remove_up : int -> SetDomain.S.t -> SetDomain.S.t
      val remove_low : int -> SetDomain.S.t -> SetDomain.S.t
    end
  type elt = SetDomain.S.t
  type t
  val elt_of_list : int list -> SetDomain.elt
  val interval : SetDomain.elt -> SetDomain.elt -> SetDomain.t
  val size : SetDomain.t -> int
  val min : SetDomain.t -> SetDomain.elt
  val max : SetDomain.t -> SetDomain.elt
  val min_max : SetDomain.t -> SetDomain.elt * SetDomain.elt
  val fprint_elt : Pervasives.out_channel -> SetDomain.elt -> unit
  val fprint : Pervasives.out_channel -> SetDomain.t -> unit
  val mem : SetDomain.elt -> SetDomain.t -> bool
  val included : SetDomain.t -> SetDomain.t -> bool
  val iter : (SetDomain.elt -> 'a) -> SetDomain.t -> 'a
  val values : SetDomain.t -> SetDomain.elt list
  val intersection : SetDomain.elt -> SetDomain.elt -> SetDomain.elt
  val strictly_inf : SetDomain.elt -> SetDomain.elt -> bool
  val compare_elt : SetDomain.elt -> SetDomain.elt -> int
  val unsafe_interval : SetDomain.elt -> SetDomain.elt -> SetDomain.t
  val remove_up : SetDomain.elt -> SetDomain.t -> SetDomain.t
  val remove_low : SetDomain.elt -> SetDomain.t -> SetDomain.t
end