`sig type t = (int * int) BatAvlTree.tree type elt = int val empty : BatISet.t val is_empty : BatISet.t -> bool val mem : int -> BatISet.t -> bool val add : int -> BatISet.t -> BatISet.t val add_range : int -> int -> BatISet.t -> BatISet.t val singleton : int -> BatISet.t val remove : int -> BatISet.t -> BatISet.t val remove_range : int -> int -> BatISet.t -> BatISet.t val union : BatISet.t -> BatISet.t -> BatISet.t val inter : BatISet.t -> BatISet.t -> BatISet.t val diff : BatISet.t -> BatISet.t -> BatISet.t val compl : BatISet.t -> BatISet.t val compare : BatISet.t -> BatISet.t -> int val equal : BatISet.t -> BatISet.t -> bool val ord : BatISet.t -> BatISet.t -> BatOrd.order val subset : BatISet.t -> BatISet.t -> bool val from : int -> BatISet.t -> BatISet.t val after : int -> BatISet.t -> BatISet.t val until : int -> BatISet.t -> BatISet.t val before : int -> BatISet.t -> BatISet.t val iter : (int -> unit) -> BatISet.t -> unit val iter_range : (int -> int -> unit) -> BatISet.t -> unit val fold : (int -> 'a -> 'a) -> BatISet.t -> 'a -> 'a val fold_range : (int -> int -> 'a -> 'a) -> BatISet.t -> 'a -> 'a val for_all : (int -> bool) -> BatISet.t -> bool val exists : (int -> bool) -> BatISet.t -> bool val filter : (int -> bool) -> BatISet.t -> BatISet.t val partition : (int -> bool) -> BatISet.t -> BatISet.t * BatISet.t val cardinal : BatISet.t -> int val elements : BatISet.t -> int list val ranges : BatISet.t -> (int * int) list val min_elt : BatISet.t -> int val max_elt : BatISet.t -> int val choose : BatISet.t -> int val enum : BatISet.t -> (int * int) BatEnum.t val of_enum : (int * int) BatEnum.t -> BatISet.t val of_list : (int * int) list -> BatISet.t val print : 'a BatIO.output -> BatISet.t -> unit end`