sig
type elt = Abstract_interp.Int.t
type t
val empty : Ival.O.t
val is_empty : Ival.O.t -> bool
val mem : Ival.O.elt -> Ival.O.t -> bool
val add : Ival.O.elt -> Ival.O.t -> Ival.O.t
val singleton : Ival.O.elt -> Ival.O.t
val remove : Ival.O.elt -> Ival.O.t -> Ival.O.t
val union : Ival.O.t -> Ival.O.t -> Ival.O.t
val inter : Ival.O.t -> Ival.O.t -> Ival.O.t
val diff : Ival.O.t -> Ival.O.t -> Ival.O.t
val compare : Ival.O.t -> Ival.O.t -> int
val equal : Ival.O.t -> Ival.O.t -> bool
val subset : Ival.O.t -> Ival.O.t -> bool
val iter : (Ival.O.elt -> unit) -> Ival.O.t -> unit
val fold : (Ival.O.elt -> 'a -> 'a) -> Ival.O.t -> 'a -> 'a
val for_all : (Ival.O.elt -> bool) -> Ival.O.t -> bool
val exists : (Ival.O.elt -> bool) -> Ival.O.t -> bool
val filter : (Ival.O.elt -> bool) -> Ival.O.t -> Ival.O.t
val partition : (Ival.O.elt -> bool) -> Ival.O.t -> Ival.O.t * Ival.O.t
val cardinal : Ival.O.t -> int
val elements : Ival.O.t -> Ival.O.elt list
val min_elt : Ival.O.t -> Ival.O.elt
val max_elt : Ival.O.t -> Ival.O.elt
val choose : Ival.O.t -> Ival.O.elt
val split : Ival.O.elt -> Ival.O.t -> Ival.O.t * bool * Ival.O.t
end