Module Set_gen

type t('a) = pri
  1. | Empty
  2. | Leaf('a)
  3. | Node of {
    1. l: t('a),
    2. v: 'a,
    3. r: t('a),
    4. h: int,
    }
;
let empty: t('a);
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 choose: t('a) => '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;
module type S = { ... };