ApronDomain.DWithOps
include module type of struct include D end
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}156
val bot_env : GobApron.Environment.t -> {t}156
include Lattice.S with type t := {t}152
include Lattice.PO with type t := {t}152
include Printable.S with type t := {t}152
val pretty : unit -> {t}152 -> Printable.Pretty.doc
widen x y
assumes leq x y
. Solvers guarantee this by calling widen old (join old new)
.
val pretty_diff : unit -> ({t}152 * {t}152) -> Lattice.Pretty.doc
If leq x y = false
, then pretty_diff () (x, y)
should explain why.
include sig ... end
module AO0 : sig ... end
module Bounds = AO0.Bounds
module Arg = AO0.Arg
module Convert = AO0.Convert
type var = GobApron.Var.t
type marshal = Man.mt Goblint_lib__.GobApron.Abstract0.t * string array
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 remove_vars_with : Man.mt A.t -> Apron.Var.t list -> unit
val remove_filter_with : Man.mt A.t -> (Apron.Var.t -> bool) -> 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 assign_var_parallel_with :
Man.mt A.t ->
(Apron.Var.t * Apron.Var.t) list ->
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
val cil_exp_of_lincons1 : GobApron.Lincons1.t -> GoblintCil.Cil.exp option
type t = AO0.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
include module type of struct include SharedFunctions.Tracked end
val eval_interval :
'a ->
Man.mt A.t ->
Apron.Texpr1.t ->
Z.t option * Z.t option
val assert_constraint :
Queries.ask ->
AO0.Bounds.t ->
GoblintCil.exp ->
bool ->
bool Stdlib.Lazy.t ->
{t}15
Assert a constraint expression.
LAnd, LOr, LNot are directly supported by Apron domain in order to confirm logic-containing Apron invariants from witness while deep-query is disabled
val invariant : Man.mt A.t -> GobApron.Lincons1.t list