package goblint
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=dba2b664c7c125687e708e871d83fbfb6ba6d9ee98d235b4850d9a238caa84de
sha512=529987cde39691ad9e955000a3603e89c1c8cf14ed5e8b4cd3a7fc26e47d016aff571b472e2329725133c46f8d0cb45a05b88994eeffaa221a4d31b4c543adcd
doc/goblint.lib/Goblint_lib/ArrayDomain/Trivial/index.html
Module ArrayDomain.Trivial
This functor creates a trivial single cell representation of an array. The * indexing type is taken as a parameter to satisfy the type system, it is not * used in the implementation.
Parameters
Signature
include Lattice.S
include Lattice.PO
include Printable.S
val hash : t -> int
val show : t -> string
val pretty : unit -> t -> Goblint_lib.Printable.Pretty.doc
val printXml : 'a BatInnerIO.output -> t -> unit
val to_yojson : t -> Yojson.Safe.t
val tag : t -> int
Unique ID, given by HConsed, for context identification in witness
val arbitrary : unit -> t QCheck.arbitrary
widen x y
assumes leq x y
. Solvers guarantee this by calling widen old (join old new)
.
val pretty_diff : unit -> (t * t) -> Goblint_lib.Lattice.Pretty.doc
If leq x y = false
, then pretty_diff () (x, y)
should explain why.
val bot : unit -> t
val is_bot : t -> bool
val top : unit -> t
val is_top : t -> bool
type idx = Idx.t
The abstract domain used to index on arrays.
type value = Val.t
The abstract domain of values stored in the array.
val get : Queries.ask -> t -> (ExpDomain.t * idx) -> value
Returns the element residing at the given index.
val set : Queries.ask -> t -> (ExpDomain.t * idx) -> value -> t
Returns a new abstract value, where the given index is replaced with the * given element.
make l e
creates an abstract representation of an array of length l
* containing the element e
.
val move_if_affected :
?replace_with_const:bool ->
Queries.ask ->
t ->
GoblintCil.Cil.varinfo ->
(GoblintCil.Cil.exp -> int option) ->
t
changes the way in which the array is partitioned if this is necessitated by a change * to the variable *
val get_vars_in_e : t -> GoblintCil.Cil.varinfo list
returns the variables occuring in the expression according to which the * array was partitioned (if any)
Left fold (like List.fold_left) over the arrays elements
val smart_join :
(GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
(GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
t ->
t ->
t
val smart_widen :
(GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
(GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
t ->
t ->
t
val smart_leq :
(GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
(GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
t ->
t ->
bool