module Build: functor (
V
:
Lattice_With_Isotropy.S
) ->
sig
.. end
Parameters: |
V |
: |
Lattice_With_Isotropy.S
|
|
type
t
type
y = V.t
type
widen_hint = V.widen_hint
val empty : t
val is_empty : t -> bool
val equal : t -> t -> bool
val pretty_typ : Cil_types.typ option -> Format.formatter -> t -> unit
val pretty : Format.formatter -> t -> unit
val pretty_debug : Format.formatter -> t -> unit
val reduce : Ival.t ->
size:Abstract_interp.Int.t ->
y -> t -> t
val is_included : t -> t -> bool
val is_included_exn : t -> t -> unit
val is_included_exn_generic : (y -> y -> unit) ->
t -> t -> unit
val is_included_actual_generic : BaseUtils.BaseSet.t ->
BaseUtils.BaseSet.t Pervasives.ref ->
Locations.Location_Bytes.t BaseUtils.BaseMap.t Pervasives.ref ->
t -> t -> unit
val join : t ->
t ->
(Abstract_interp.Int.t * Abstract_interp.Int.t) list * t
val widen : widen_hint ->
t -> t -> t
val fold_internal : (Offsetmap.itv ->
Abstract_interp.Int.t * Abstract_interp.Int.t * y ->
'a -> 'a) ->
t -> 'a -> 'a
val find_ival : validity:Base.validity ->
with_alarms:CilE.warn_mode ->
Ival.t ->
t ->
Abstract_interp.Int.t -> y -> y
May raise Not_found
if V.top is found
val concerned_bindings_ival : offsets:Ival.t ->
offsetmap:t ->
size:Abstract_interp.Int.t ->
y list -> y list
Returns the list of the values associated to at least one bit of the
ival. For this function Top is not a binding !
val update_ival : with_alarms:CilE.warn_mode ->
validity:Base.validity ->
exact:bool ->
offsets:Ival.t ->
size:Abstract_interp.Int.t ->
t -> y -> t
May raise Result_is_bottom
if this is completely out of bound
val overwrite : t -> y -> Origin.t -> t
val over_intersection : t -> t -> t
An over-approximation of the intersection. The arguments can not be
arbitrary offsetmaps: the algorithm would be too complicated. The
provided algorithm should work fine with offsetmaps that correspond to
the relation view and the memory view of the same analysed code.
val from_string : string -> t
val add_whole : Offsetmap.itv -> y -> t -> t
val remove_whole : Offsetmap.itv -> t -> t
val fold_whole : size:Abstract_interp.Int.t ->
(Ival.t -> Abstract_interp.Int.t -> y -> 'a -> 'a) ->
t -> 'a -> 'a
May raise Invalid_argument "Offsetmap.Make.fold"
val shift_ival : Ival.t ->
t -> t option -> t option
shift_ival shift o acc
returns the join of acc
and
of o
shifted by all values in shift
.
Raises Found_Top
when the result is Top
.
val copy_paste : t ->
Abstract_interp.Int.t ->
Abstract_interp.Int.t ->
Abstract_interp.Int.t -> t -> t
val copy_merge : t ->
Abstract_interp.Int.t ->
Abstract_interp.Int.t ->
Abstract_interp.Int.t -> t -> t
val copy : t ->
Abstract_interp.Int.t -> Abstract_interp.Int.t -> t
val merge_by_itv : t ->
t -> Abstract_value.Int_Intervals.t -> t
val shift : Abstract_interp.Int.t -> t -> t
val sized_zero : size_in_bits:Abstract_interp.Int.t -> t
val reciprocal_image : t -> Base.t -> Abstract_value.Int_Intervals.t * Ival.t
reciprocal_image m b
is the set of bits in the offsetmap m
that may lead to Top(b
) and the set of offsets in m
where one can read an address b
+_
val create_initial : v:y -> modu:Abstract_interp.Int.t -> t
val reduce_by_int_intervals : t -> Abstract_value.Int_Intervals.t -> t
val top_stuff : (y -> bool) ->
(y -> y) ->
t -> t
val iter_contents : (y -> unit) ->
t -> Abstract_interp.Int.t -> unit
Iter on the contents of offsetmap of given size
val pretty_compare : Format.formatter -> t -> unit
val add_internal : Offsetmap.itv ->
Abstract_interp.Int.t * Abstract_interp.Int.t * y ->
t -> t