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