package goblint
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=ca24f72fa9a87d288affe97c411753f14b7802bab4ca3649b337276b89bf5674
sha512=394b3521ccda0da91540cebb2f433f7525763060be4bbe179edd3b952a3580a8e173c4e410fc6895dc67fe6d17e6699aeddfed600f4692858bec093dd912bf1e
doc/goblint.lib/Goblint_lib/AddressDomain/AddressLattice/index.html
Module AddressDomain.AddressLattice
Address lattice.
Actually a disjoint union of lattices without top or bottom. Addresses are grouped as follows:
- Each
Addr
, modulo precise index expressions in the offset, is a sublattice with ordering induced byMval
. NullPtr
is a singleton sublattice.UnknownPtr
is a singleton sublattice.- If
ana.base.limit-string-addresses
is enabled, then allStrPtr
are together in one sublattice with flat ordering. Ifana.base.limit-string-addresses
is disabled, then eachStrPtr
is a singleton sublattice.
Parameters
module Mval : Mval.Lattice
Signature
include sig ... end
type t = AddressBase(Mval).t =
| Addr of Mval.t
(*Pointer to mvalue.
*)| NullPtr
(*NULL pointer.
*)| UnknownPtr
(*Unknown pointer. Could point to globals, heap and escaped variables.
*)| StrPtr of string option
(*String literal pointer.
*)StrPtr None
abstracts any string pointer
val to_n_c_string : int -> t -> string option
Convert StrPtr
to C string of given maximum length if possible.
val to_string_length : t -> int option
Find length of C string if possible.
val is_definite : t -> bool
Whether address is a NULL
pointer or an mvalue that has only definite integer indexing (and fields).
val of_var : GoblintCil.varinfo -> t
Convert from variable (without offset).
val to_var : t -> GoblintCil.varinfo option
Convert to variable if possible.
val to_var_may : t -> GoblintCil.varinfo option
Convert to variable with any offset if possible.
val to_var_must : t -> GoblintCil.varinfo option
Convert to variable without offset if possible.
val to_exp : t -> GoblintCil.exp
Convert to CIL expression.
val type_of : t -> GoblintCil.typ
Type of address.
include Lattice.S with type t := t
include Lattice.PO with type t := t
include Printable.S with type t := t
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