module Make:
include struct ... end
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 -> 'a -> bool) ->
Abstract_interp.Int.t -> 'a -> t -> t * Abstract_interp.Int.t
val handle_rightmost_itv : extend_right:bool ->
(value -> 'a -> bool) ->
Abstract_interp.Int.t ->
'a -> ('b * Abstract_interp.Int.t) * value -> t -> t * Abstract_interp.Int.t
val enlarge_to_left : extend_left:bool ->
(Value.t -> 'a -> bool) ->
Abstract_interp.Int.t -> 'a -> t -> t * Abstract_interp.Int.t
val handle_leftmost_itv : extend_left:bool ->
(value -> 'a -> bool) ->
Abstract_interp.Int.t ->
'a -> (Abstract_interp.Int.t * 'b) * value -> t -> t * Abstract_interp.Int.t
val cleanup_overwritten_bindings : ?extend_left:bool ->
?extend_right:bool ->
(value -> 'a -> bool) ->
Abstract_interp.Int.t * Abstract_interp.Int.t ->
'a -> t -> (Abstract_interp.Int.t * Abstract_interp.Int.t * t) option
val remove_itv : 'a -> Abstract_interp.Int.t * Abstract_interp.Int.t -> t -> t
val shift : Integer.t -> t -> t