package goblint
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=99b78e6def71534d195eef9084baa26d8334b36084e120aa6afb300c9bf8afa6
sha512=f3162bd95a03c00358a2991f6152fc6169205bfb4c55e2c483e98cc3935673df9656d025b6f1ea0fa5f1bd0aee037d4f483966b0d2907e3fa9bf11a93a3392af
doc/goblint_cdomain_value/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. NullPtris a singleton sublattice.UnknownPtris a singleton sublattice.- If
ana.base.strings.domainis disjoint, then eachStrPtris a singleton sublattice. Otherwise, allStrPtrare together in one sublattice with flat ordering.
Parameters
module Mval : Mval.LatticeSignature
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 StringDomain.t(*String literal pointer.
*)StrPtr Noneabstracts any string pointer
val to_n_c_string : int -> t -> string optionConvert StrPtr to C string of given maximum length if possible.
val to_string_length : t -> int optionFind length of C string if possible.
val is_definite : t -> boolWhether address is a NULL pointer or an mvalue that has only definite integer indexing (and fields).
val of_var : GoblintCil.varinfo -> tConvert from variable (without offset).
val to_var : t -> GoblintCil.varinfo optionConvert to variable if possible.
val to_var_may : t -> GoblintCil.varinfo optionConvert to variable with any offset if possible.
val to_var_must : t -> GoblintCil.varinfo optionConvert to variable without offset if possible.
val to_exp : t -> GoblintCil.expConvert to CIL expression.
val type_of : t -> GoblintCil.typType 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 -> intval show : t -> stringval pretty : unit -> t -> Printable.Pretty.docval printXml : 'a BatInnerIO.output -> t -> unitval to_yojson : t -> Yojson.Safe.tval tag : t -> intUnique ID, given by HConsed, for context identification in witness
val arbitrary : unit -> t QCheck.arbitrarywiden x y assumes leq x y. Solvers guarantee this by calling widen old (join old new).
val bot : unit -> tval is_bot : t -> boolval top : unit -> tval is_top : t -> bool