Module type Reins.Maps.Map_

module type Map_ = sig .. end

type 'k key_ 
type 'e elt_ 
type ('k, 'e) map 
type ('a, 'k, 'e) result_ 
val empty : ('k, 'e) map
val is_empty : ('k, 'e) map -> bool
val mem : 'k key_ ->
('k, 'e) map -> (bool, 'k, 'e) result_
val add : 'k key_ ->
'e elt_ ->
('k, 'e) map -> ('k, 'e) map
val singleton : 'k key_ ->
'e elt_ -> ('k, 'e) map
val remove : 'k key_ ->
('k, 'e) map -> ('k, 'e) map
val find : 'k key_ ->
('k, 'e) map ->
('e elt_, 'k, 'e) result_
val min_key : ('k, 'e) map ->
('k key_, 'k, 'e) result_
val max_key : ('k, 'e) map ->
('k key_, 'k, 'e) result_
val min_keyval : ('k, 'e) map ->
('k key_ * 'e elt_, 'k, 'e)
result_
val max_keyval : ('k, 'e) map ->
('k key_ * 'e elt_, 'k, 'e)
result_
val cardinal : ('k, 'e) map -> int
val iter : ('k key_ -> 'e elt_ -> unit) ->
('k, 'e) map -> unit
val fold : ('acc -> 'k key_ -> 'e elt_ -> 'acc) ->
'acc -> ('k, 'e) map -> 'acc
val map : ('e elt_ -> 'f elt_) ->
('k, 'e) map -> ('k, 'f) map
val mapi : ('k key_ ->
'e elt_ -> 'f elt_) ->
('k, 'e) map -> ('k, 'f) map
val union : ('k key_ ->
'e elt_ ->
'e elt_ -> 'e elt_) ->
('k, 'e) map ->
('k, 'e) map -> ('k, 'e) map
val inter : ('k key_ ->
'e elt_ ->
'e elt_ -> 'e elt_) ->
('k, 'e) map ->
('k, 'e) map -> ('k, 'e) map
val diff : ('k key_ ->
'e elt_ -> 'e elt_ -> bool) ->
('k, 'e) map ->
('k, 'e) map -> ('k, 'e) map
val well_formed : ('k, 'e) map -> bool
val of_result : ('a, 'k, 'e) result_ -> 'a
type ('k, 'e) cursor_ 
val to_cursor : ('k, 'e) map -> ('k, 'e) cursor_
val from_cursor : ('k, 'e) cursor_ -> ('k, 'e) map
val at_top : ('k, 'e) cursor_ -> bool
val at_left : ('k, 'e) cursor_ -> bool
val at_right : ('k, 'e) cursor_ -> bool
val move_up : ('k, 'e) cursor_ -> ('k, 'e) cursor_
val move_down_left : ('k, 'e) cursor_ -> ('k, 'e) cursor_
val move_down_right : ('k, 'e) cursor_ -> ('k, 'e) cursor_
val went_left : ('k, 'e) cursor_ -> bool
val went_right : ('k, 'e) cursor_ -> bool
val has_value : ('k, 'e) cursor_ -> bool
val get_value : ('k, 'e) cursor_ ->
'k key_ * 'e elt_