AttributeConfiguredArrayDomain.Idx
include IntDomain.B with type int_t = Z.t
include Lattice.S
include Lattice.PO
widen x y
assumes leq x y
. Solvers guarantee this by calling widen old (join old new)
.
val bot : unit -> t
val is_bot : t -> bool
val top : unit -> t
val is_top : t -> bool
val bot_of : GoblintCil.Cil.ikind -> t
val top_of : GoblintCil.Cil.ikind -> t
Return a single integer value if the value is a known constant, otherwise * don't return anything.
val to_bool : t -> bool option
Give a boolean interpretation of an abstract value if possible, otherwise * don't return anything.
Gives a list representation of the excluded values from included range of bits if possible.
Creates an exclusion set from a given list of integers.
val is_excl_list : t -> bool
Checks if the element is an exclusion set.
Gives a list representation of the included values if possible.
Cast
Cast from original type torg
to integer type Cil.ikind
. Currently, torg
is only present for actual casts. The function is also called to handle overflows/wrap around after operations. In these cases (where the type stays the same) torg
is None.
include IntDomain.Arith with type t := t
Comparison operators
Bitwise logical operators
Logical operators
Transform an integer literal to your internal domain representation with the specified ikind.
val of_bool : GoblintCil.Cil.ikind -> bool -> t
Transform a known boolean value to the default internal representation of the specified ikind. It * should follow C: of_bool true = of_int 1
and of_bool false = of_int 0
.
val is_top_of : GoblintCil.Cil.ikind -> t -> bool
val project : PrecisionUtil.int_precision -> t -> t
val invariant : GoblintCil.Cil.exp -> t -> Invariant.t