BoxProd.D
include SLattice
include SPrintable
include Printable.S
val top_env : GobApron.Environment.t -> t
val bot_env : GobApron.Environment.t -> t
val is_top_env : t -> bool
val is_bot_env : t -> bool
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
include AOps with type t := t
include AOpsExtra with type t := t
val vars : t -> GobApron.Var.t list
val mem_var : t -> GobApron.Var.t -> bool
val assign_var_parallel' : t -> GobApron.Var.t list -> GobApron.Var.t list -> t
val meet_tcons : Queries.ask -> t -> GobApron.Tcons1.t -> GoblintCil.exp -> t
val to_lincons_array : t -> GobApron.Lincons1.earray
val of_lincons_array : GobApron.Lincons1.earray -> t
val cil_exp_of_lincons1 : GobApron.Lincons1.t -> GoblintCil.exp option
val invariant : t -> GobApron.Lincons1.t list
include AOpsImperative with type t := t
val add_vars_with : t -> GobApron.Var.t list -> unit
val remove_vars_with : t -> GobApron.Var.t list -> unit
val remove_filter_with : t -> (GobApron.Var.t -> bool) -> unit
val keep_vars_with : t -> GobApron.Var.t list -> unit
val keep_filter_with : t -> (GobApron.Var.t -> bool) -> unit
val forget_vars_with : t -> GobApron.Var.t list -> unit
val assign_exp_with :
Queries.ask ->
t ->
GobApron.Var.t ->
GoblintCil.exp ->
bool Stdlib.Lazy.t ->
unit
val assign_exp_parallel_with :
Queries.ask ->
t ->
(GobApron.Var.t * GoblintCil.exp) list ->
bool ->
unit
val assign_var_with : t -> GobApron.Var.t -> GobApron.Var.t -> unit
val assign_var_parallel_with :
t ->
(GobApron.Var.t * GobApron.Var.t) list ->
unit
val substitute_exp_with :
Queries.ask ->
t ->
GobApron.Var.t ->
GoblintCil.exp ->
bool Stdlib.Lazy.t ->
unit
val substitute_exp_parallel_with :
Queries.ask ->
t ->
(GobApron.Var.t * GoblintCil.exp) list ->
bool Stdlib.Lazy.t ->
unit
val substitute_var_with : t -> GobApron.Var.t -> GobApron.Var.t -> unit
include AOpsPure with type t := t
val add_vars : t -> GobApron.Var.t list -> t
val remove_vars : t -> GobApron.Var.t list -> t
val remove_filter : t -> (GobApron.Var.t -> bool) -> t
val keep_vars : t -> GobApron.Var.t list -> t
val keep_filter : t -> (GobApron.Var.t -> bool) -> t
val forget_vars : t -> GobApron.Var.t list -> t
val assign_exp :
Queries.ask ->
t ->
GobApron.Var.t ->
GoblintCil.exp ->
bool Stdlib.Lazy.t ->
t
val assign_var : t -> GobApron.Var.t -> GobApron.Var.t -> t
val substitute_exp :
Queries.ask ->
t ->
GobApron.Var.t ->
GoblintCil.exp ->
bool Stdlib.Lazy.t ->
t
module V : RelationDomain.RV
module Tracked : RelationDomain.Tracked
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