RelComponents.D3
include S2
type var = GobApron.Var.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
val is_bot_env : t -> bool
Remove variables in-place. This avoids an extra copy like remove_vars
if the input relation is unshared.
Filter variables in-place. This avoids an extra copy like remove_filter
if the input relation is unshared.
Lazy bool no_ov parameter has been added to functions where functions of the Convert module are used. This is to also to make used of the improved overflow handling.
val assign_exp :
Queries.ask ->
t ->
var ->
GoblintCil.exp ->
bool Stdlib.Lazy.t ->
t
Assign variables in parallel in-place. This avoids an extra copy like assign_var_parallel'
if the input relation is unshared.
val substitute_exp :
Queries.ask ->
t ->
var ->
GoblintCil.exp ->
bool Stdlib.Lazy.t ->
t
val assert_inv :
Queries.ask ->
t ->
GoblintCil.exp ->
bool ->
bool Stdlib.Lazy.t ->
t
val eval_int :
Queries.ask ->
t ->
GoblintCil.exp ->
bool Stdlib.Lazy.t ->
ValueDomainQueries.ID.t
val cil_exp_of_lincons1 : GobApron.Lincons1.t -> GoblintCil.exp option
val invariant : t -> GobApron.Lincons1.t list