Order_intervalval root : unit -> tCreate a new ordering with a single element. O(1)
after t inserts a new element to the ordering, greater than t but less than all existing elements greater than t.
O(1) amortized.
before t inserts a new element to the ordering, less than t but greater than all existing elements less than t.
O(1) amortized.
val cardinal : t -> intHow many elements are ordered. O(1)
val forget : t -> unitWhen you know you are not going to use an element any longer, forget it to release memory. It makes operations slightly faster to not have to wait for the GC to release elements.
val is_valid : t -> boolAfter calling forget, an element should not be used. You can check if it is the case with is_valid.
Algorithm due to: Two Simplified Algorithms for Maintaining Order in a List Bender et al., 2002
val unsafe_check : t -> string -> unit