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