ApronDomain.D2
module Man = Man
module V : RelationDomain.RV
include sig ... end
module AO0 : sig ... end
module Bounds = AO0.Bounds
module Arg = AO0.Arg
module Convert = AO0.Convert
val envop :
(Apron.Environment.t -> 'a -> Apron.Environment.t) ->
Man.mt A.t ->
'b ->
unit
val add_vars_with : Man.mt A.t -> Apron.Var.t list -> unit
val keep_vars_with : Man.mt A.t -> Apron.Var.t list -> unit
val keep_filter_with : Man.mt A.t -> (Apron.Var.t -> bool) -> unit
val forget_vars_with : Man.mt A.t -> Apron.Var.t list -> unit
val assign_exp_with :
Queries.ask ->
Bounds.t ->
Apron.Var.t ->
GoblintCil.Cil.exp ->
bool Stdlib.Lazy.t ->
unit
val assign_exp_parallel_with :
Queries.ask ->
Man.mt A.t ->
(Apron.Var.t * GoblintCil.Cil.exp) list ->
bool ->
unit
val assign_var_with : Man.mt A.t -> Apron.Var.t -> Apron.Var.t -> unit
val substitute_exp_with :
Queries.ask ->
Bounds.t ->
Apron.Var.t ->
GoblintCil.Cil.exp ->
bool Stdlib.Lazy.t ->
unit
val substitute_exp_parallel_with :
Queries.ask ->
Man.mt A.t ->
(Apron.Var.t * GoblintCil.Cil.exp) list ->
bool Stdlib.Lazy.t ->
unit
val substitute_var_with : Man.mt A.t -> Apron.Var.t -> Apron.Var.t -> unit
val meet_tcons : 'a -> Man.mt A.t -> GobApron.Tcons1.t -> 'b -> Man.mt A.t
val to_lincons_array : Man.mt A.t -> Apron.Lincons1.earray
val of_lincons_array : Apron.Lincons1.earray -> Man.mt A.t
include SLattice with type t = Man.mt A.t
include SPrintable with type t = Man.mt A.t
include Printable.S with type t = Man.mt A.t
val top_env : GobApron.Environment.t -> {t}579
val bot_env : GobApron.Environment.t -> {t}579
include Lattice.S with type t := {t}552
include Lattice.PO with type t := {t}552
include Printable.S with type t := {t}552
include RelationDomain.S3
with type t = Man.mt A.t
and type var = GobApron.Var.t
include RelationDomain.S2
with type t = Man.mt A.t
with type var = GobApron.Var.t
type t = Man.mt A.t
type var = GobApron.Var.t
module Tracked : RelationDomain.Tracked
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