package goblint
Static analysis framework for C
Install
Dune Dependency
Authors
Maintainers
Sources
goblint-2.2.1.tbz
sha256=ca24f72fa9a87d288affe97c411753f14b7802bab4ca3649b337276b89bf5674
sha512=394b3521ccda0da91540cebb2f433f7525763060be4bbe179edd3b952a3580a8e173c4e410fc6895dc67fe6d17e6699aeddfed600f4692858bec093dd912bf1e
doc/goblint.lib/Goblint_lib/ValueDomain/CArrays/index.html
Module ValueDomain.CArrays
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 bot : unit -> t
val is_bot : t -> bool
val top : unit -> t
val is_top : t -> bool
type idx = ArrIdxDomain.t
The abstract domain used to index on arrays.
type value = Compound.t
The abstract domain of values stored in the array.
val domain_of_t : t -> ArrayDomain.domain
val get :
?checkBounds:bool ->
ValueDomainQueries.t ->
t ->
(Basetype.CilExp.t option * idx) ->
value
Returns the element residing at the given index.
val set :
ValueDomainQueries.t ->
t ->
(Basetype.CilExp.t option * idx) ->
value ->
t
Returns a new abstract value, where the given index is replaced with the * given element.
val make :
?varAttr:GoblintCil.Cil.attributes ->
?typAttr:GoblintCil.Cil.attributes ->
idx ->
value ->
t
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 ->
ValueDomainQueries.t ->
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
val project :
?varAttr:GoblintCil.Cil.attributes ->
?typAttr:GoblintCil.Cil.attributes ->
ValueDomainQueries.t ->
t ->
t
val invariant :
value_invariant:
(offset:GoblintCil.Cil.offset ->
lval:GoblintCil.Cil.lval ->
value ->
Invariant.t) ->
offset:GoblintCil.Cil.offset ->
lval:GoblintCil.Cil.lval ->
t ->
Invariant.t
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>