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