type t('a) = pri
| Empty
| Leaf('a)
| Node of {
l: t('a),
v: 'a,
r: t('a),
h: int,
}
;
let is_empty: t('a) => bool;
let unsafe_two_elements: 'a => 'a => t('a);
let cardinal: t('a) => int;
let elements: t('a) => list('a);
let iter: t('a) => ('a => unit) => unit;
let fold: t('a) => 'c => ('a => 'c => 'c) => 'c;
let for_all: t('a) => ('a => bool) => bool;
let exists: t('a) => ('a => bool) => bool;
let check: t('a) => unit;
let bal: t('a) => 'a => t('a) => t('a);
let remove_min_elt: t('a) => t('a);
let singleton: 'a => t('a);
let internal_merge: t('a) => t('a) => t('a);
let internal_join: t('a) => 'a => t('a) => t('a);
let internal_concat: t('a) => t('a) => t('a);
let partition: t('a) => ('a => bool) => (t('a), t('a));
let of_sorted_array: array('a) => t('a);
let is_ordered: cmp:('a => 'a => int) => t('a) => bool;
let invariant: cmp:('a => 'a => int) => t('a) => bool;