sig
  type elt = int
  type t
  val empty : Domain.t
  val create : Domain.elt list -> Domain.t
  val unsafe_create : Domain.elt list -> Domain.t
  val interval : Domain.elt -> Domain.elt -> Domain.t
  val int : Domain.t
  val boolean : Domain.t
  val is_empty : Domain.t -> bool
  val size : Domain.t -> Domain.elt
  val min : Domain.t -> Domain.elt
  val max : Domain.t -> Domain.elt
  val min_max : Domain.t -> Domain.elt * Domain.elt
  val iter : (Domain.elt -> unit) -> Domain.t -> unit
  val interval_iter : (Domain.elt -> Domain.elt -> unit) -> Domain.t -> unit
  val mem : Domain.elt -> Domain.t -> bool
  val member : Domain.elt -> Domain.t -> bool
  val values : Domain.t -> Domain.elt list
  val fprint_elt : Pervasives.out_channel -> Domain.elt -> unit
  val fprint : Pervasives.out_channel -> Domain.t -> unit
  val sprint : Domain.t -> string
  val included : Domain.t -> Domain.t -> bool
  val smallest_geq : Domain.t -> Domain.elt -> Domain.elt
  val greatest_leq : Domain.t -> Domain.elt -> Domain.elt
  val largest_hole_around : Domain.t -> Domain.elt -> Domain.elt * Domain.elt
  val choose : (Domain.elt -> Domain.elt -> bool) -> Domain.t -> Domain.elt
  val add : Domain.elt -> Domain.t -> Domain.t
  val remove : Domain.elt -> Domain.t -> Domain.t
  val remove_up : Domain.elt -> Domain.t -> Domain.t
  val remove_low : Domain.elt -> Domain.t -> Domain.t
  val remove_low_up : Domain.elt -> Domain.elt -> Domain.t -> Domain.t
  val remove_closed_inter : Domain.elt -> Domain.elt -> Domain.t -> Domain.t
  val remove_min : Domain.t -> Domain.t
  val remove_max : Domain.t -> Domain.t
  val intersection : Domain.t -> Domain.t -> Domain.t
  val union : Domain.t -> Domain.t -> Domain.t
  val difference : Domain.t -> Domain.t -> Domain.t
  val diff : Domain.t -> Domain.t -> Domain.t
  val minus : Domain.t -> Domain.t
  val plus : Domain.t -> Domain.elt -> Domain.t
  val times : Domain.t -> Domain.elt -> Domain.t
  val compare : Domain.t -> Domain.t -> Domain.elt
  val compare_elt : Domain.elt -> Domain.elt -> Domain.elt
  val disjoint : Domain.t -> Domain.t -> bool
  val strictly_inf : Domain.elt -> Domain.elt -> bool
end