type t = | Empty| Leaf of int| Branch of int * int * t * t
val zero_bit : int -> int -> boolval mem : int -> t -> boolval lowest_bit : int -> intval branching_bit : int -> int -> intval mask : int -> int -> intval join : (int * t * int * t) -> tval match_prefix : int -> int -> int -> boolval branch : (int * int * t * t) -> tval remove : int -> t -> tval subset : t -> t -> boolval iter : (int -> unit) -> t -> unitval fold : (int -> 'a -> 'a) -> t -> 'a -> 'aval for_all : (int -> bool) -> t -> boolval exists : (int -> bool) -> t -> boolval filter : (int -> bool) -> t -> tval partition : (int -> bool) -> t -> t * tval elements : t -> int listval equal : 'a -> 'a -> boolval compare : 'a -> 'a -> intval intersect : t -> t -> bool