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