functor (L : OrderedType) (R : OrderedType->   sig     type t     type left = L.t     type right = R.t     val empty : t     val is_empty : t -> bool     val add : t -> left -> right -> t     val remove : t -> left -> right -> t     val cardinal_left : t -> int     val cardinal_right : t -> int     val remove_left : t -> left -> t     val remove_right : t -> right -> t     val mem_left : t -> left -> bool     val mem_right : t -> right -> bool     val find_left : t -> left -> right sequence     val find_right : t -> right -> left sequence     val find1_left : t -> left -> right option     val find1_right : t -> right -> left option     val fold : ('-> left -> right -> 'a) -> '-> t -> 'a     val pairs : t -> (left * right) sequence     val add_pairs : t -> (left * right) sequence -> t     val seq_left : t -> left sequence     val seq_right : t -> right sequence   end