module Biocaml_iset:sig..end
Sets of integers represented as ranges
    This data structure is efficient for large sets of integers where
    many adjacent integers are all part of the set.  This will have
    higher overhead for sets with lots of point elements, but will be
    much more efficient for sets containing mostly ranges.
type 
val empty : tval is_empty : t -> booltrue if the set is empty.val mem : t -> int -> boolval add : t -> int -> tval add_range : t -> int -> int -> tadd_range t lo hi adds the range of integers lo, hi (including both endpoints) to
    the given set, returning a new setInvalid_argument if lo > hival intersects_range : t -> int -> int -> boolval singleton : int -> tval remove : t -> int -> tval remove_range : t -> int -> int -> tremove_range lo hi t removes a range of elements from the given set, returning a new setInvalid_argument if lo > hival union : t -> t -> tval inter : t -> t -> tval diff : t -> t -> tunion and inter, order matters here.val compl : t -> tval compare : t -> t -> intval equal : t -> t -> boolval subset : t -> t -> boolsubset t u returns true if t is a subset of uval from : t -> n:int -> tfrom ~n t returns the portion of t in the range n, max_intval after : t -> n:int -> tafter ~n t returns the portion of t in the range n+1, max_intval until : t -> n:int -> tuntil ~n t returns the portion of t in the range min_int, nval before : t -> n:int -> tbefore x t returns the portion of t in the range min_int, n-1val iter : t -> f:(int -> unit) -> unititer f t calls f once for each element of tval iter_range : t -> f:(int -> int -> unit) -> unititer_range ~f t calls f once for each contiguous range of t.
    The contiguous ranges of a set are sequences of adjacent integers
    all part of the set.val fold : t -> init:'a -> f:(int -> 'a -> 'a) -> 'afold f t x0 returns the final result of merging each element of
    t into x0 using merge function fval fold_range : t -> init:'a -> f:(int -> int -> 'a -> 'a) -> 'aval for_all : t -> f:(int -> bool) -> boolval exists : t -> f:(int -> bool) -> boolval filter : t -> f:(int -> bool) -> tval partition : t -> f:(int -> bool) -> t * tval cardinal : t -> intval elements : t -> int listval ranges : t -> (int * int) listval min_elt : t -> intval max_elt : t -> intval choose : t -> intval to_stream : t -> (int * int) Stream.tval of_stream : (int * int) Stream.t -> tval of_list : (int * int) list -> t