ValueDomain.Compound
include S with type t := t and type offs = IndexDomain.t Offset.t
include Lattice.S with type t := t
include Lattice.PO with type t := t
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 offs = IndexDomain.t Offset.t
val affecting_vars : t -> GoblintCil.varinfo list
val is_dynamically_safe_cast : GoblintCil.typ -> GoblintCil.typ -> t -> bool
val bot_value : ?varAttr:GoblintCil.attributes -> GoblintCil.typ -> t
val is_bot_value : t -> bool
val init_value : ?varAttr:GoblintCil.attributes -> GoblintCil.typ -> t
val top_value : ?varAttr:GoblintCil.attributes -> GoblintCil.typ -> t
val is_top_value : t -> GoblintCil.typ -> bool
val zero_init_value : ?varAttr:GoblintCil.attributes -> GoblintCil.typ -> t
val project :
VDQ.t ->
PrecisionUtil.int_precision option ->
(GoblintCil.attributes * GoblintCil.attributes) option ->
t ->
t