IntDomain.IntegersPredefined domains
The integers with their natural orderings. Calling top and bot will * raise exceptions.
module Ints_t : IntOps.IntOpsinclude B with type t = Ints_t.t with type int_t = Ints_t.tinclude Lattice.PO with type t = Ints_t.twiden x y assumes leq x y. Solvers guarantee this by calling widen old (join old new).
type int_t = Ints_t.tAccessing values of the ADT
val bot_of : GoblintCil.Cil.ikind -> tval top_of : ?bitfield:int -> GoblintCil.Cil.ikind -> tReturn a single integer value if the value is a known constant, otherwise * don't return anything.
val to_bool : t -> bool optionGive 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 -> boolChecks if the element is an exclusion set.
Gives a list representation of the included values if possible.
Cast
val cast_to :
?suppress_ovwarn:bool ->
kind:GoblintCil.castkind ->
?torg:GoblintCil.Cil.typ ->
GoblintCil.Cil.ikind ->
t ->
tCast 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.
val of_bool : bool -> tTransform a known boolean value to the default internal representation. It * should follow C: of_bool true = of_int 1 and of_bool false = of_int 0.
val arbitrary : unit -> t QCheck.arbitraryval invariant : GoblintCil.Cil.exp -> t -> Invariant.t