module Interval_tree: Biocaml_interval_treetype 'a t 
exception Empty_tree
val is_empty  : 'a t -> boolval cardinal  : 'a t -> intval intersects  : 'a t -> low:int -> high:int -> boolintersects a b t returns true if one interval in t
 intersects with the interval [a;b].val empty  : 'a t val add  : 'a t ->
 low:int -> high:int -> data:'a -> 'a t add lo hi v t adds the interval (lo, hi) labeled with value
 v to the contents of t. Note that in contrast to sets,
 identical intervals (even with identical labels) may be *repeated*
 in an interval tree. E.g., add 1 2 () (add 1 2 ()) contains 2
 intervals.val elements  : 'a t -> (int * int * 'a) listval to_stream  : 'a t -> (int * int * 'a) Stream.tval to_backwards_stream  : 'a t -> (int * int * 'a) Stream.tval find_closest  : int -> int -> 'a t -> int * int * 'a * intfind_closest lo hi t returns the interval in t which is at
 minimal distance of the interval [lo;hi]. The resulting
 tuple contains from left to right, left-end of the interval,
 right-end of the interval, value associated to the interval and
 distance to the interval given in argument. Overlapping intervals
 are at distance 0 of each other.
 Raises Empty_tree if t is empty
val find_intersecting_elem  : int -> int -> 'a t -> (int * int * 'a) Stream.tfind_intersecting_elem a b t is equivalent to Stream.filter ~f:(fun
 (x,y,_) -> intersects x y t) (stream t) but is more efficient.val filter_overlapping  : 'a t ->
 low:int -> high:int -> 'a t [low, high].val print  : 'a t -> unitval check_integrity  : 'a t -> unit