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