functor (Value : Rangemap.Value->
  sig
    type key = Int_Interv.t
    type value = Value.t
    type rangemap = Rangemap.Make(Int_Interv)(Value).rangemap
    type t = rangemap
    val ty : t Type.t
    val name : string
    val descr : t Descr.t
    val packed_descr : Structural_descr.pack
    val reprs : t list
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val hash : t -> int
    val pretty_code : Format.formatter -> t -> unit
    val internal_pretty_code :
      Type.precedence -> Format.formatter -> t -> unit
    val pretty : Format.formatter -> t -> unit
    val varname : t -> string
    val mem_project : (Project_skeleton.t -> bool) -> t -> bool
    val copy : t -> t
    val create : t -> key -> value -> t -> t
    val empty : t
    val is_empty : t -> bool
    val add : key -> value -> t -> t
    val singleton : key -> value -> t
    val find : key -> t -> value
    val remove : key -> t -> t
    val mem : key -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val mapii : (key -> value -> key * value) -> t -> t
    val fold : (key -> value -> '-> 'a) -> t -> '-> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val max_binding : t -> key * value
    val choose : t -> key * value
    val merge :
      (key -> value option -> value option -> value option) -> t -> t -> t
    val for_all2 :
      (key -> value option -> value option -> bool) -> t -> t -> bool
    val exists2 :
      (key -> value option -> value option -> bool) -> t -> t -> bool
    val iter2 :
      (key -> value option -> value option -> unit) -> t -> t -> unit
    val fold2 :
      (key -> value option -> value option -> '-> 'a) -> t -> t -> '-> 'a
    val fold_range :
      (key -> Rangemap.fuzzy_order) ->
      (key -> Value.t -> '-> 'a) -> t -> '-> 'a
    val height : t -> int
    val concerned_intervals :
      (key -> key -> Rangemap.fuzzy_order) ->
      key -> t -> (key * Value.t) list
    exception Empty_rangemap
    val lowest_binding : t -> key * Value.t
    exception No_such_binding
    val lowest_binding_above : (key -> bool) -> t -> key * Value.t
    val add_whole :
      (key -> key -> Rangemap.fuzzy_order) -> key -> Value.t -> t -> t
    val remove_whole : (key -> key -> Rangemap.fuzzy_order) -> key -> t -> t
    val check : Abstract_interp.Int.t * Abstract_interp.Int.t -> unit
    val add : key -> value -> t -> t
    val find : key -> t -> value
    exception No_binding_above
    val find_above : Abstract_interp.Int.t -> t -> key * Value.t
    val pretty :
      (Format.formatter -> value -> unit) -> Format.formatter -> t -> unit
    val enlarge_to_right :
      extend_right:bool ->
      (Value.t -> '-> bool) ->
      Abstract_interp.Int.t -> '-> t -> t * Abstract_interp.Int.t
    val handle_rightmost_itv :
      extend_right:bool ->
      (value -> '-> bool) ->
      Abstract_interp.Int.t ->
      '->
      ('b * Abstract_interp.Int.t) * value -> t -> t * Abstract_interp.Int.t
    val enlarge_to_left :
      extend_left:bool ->
      (Value.t -> '-> bool) ->
      Abstract_interp.Int.t -> '-> t -> t * Abstract_interp.Int.t
    val handle_leftmost_itv :
      extend_left:bool ->
      (value -> '-> bool) ->
      Abstract_interp.Int.t ->
      '->
      (Abstract_interp.Int.t * 'b) * value -> t -> t * Abstract_interp.Int.t
    val cleanup_overwritten_bindings :
      ?extend_left:bool ->
      ?extend_right:bool ->
      (value -> '-> bool) ->
      Abstract_interp.Int.t * Abstract_interp.Int.t ->
      '-> t -> (Abstract_interp.Int.t * Abstract_interp.Int.t * t) option
    val remove_itv :
      '-> Abstract_interp.Int.t * Abstract_interp.Int.t -> t -> t
    val shift : Integer.t -> t -> t
  end