Module ApronDomain.D2

Parameters

module Man : Manager

Signature

module Man = Man
include sig ... end
module AO0 : sig ... end
module Bounds = AO0.Bounds
module Arg = AO0.Arg
module Convert = AO0.Convert
val env : 'a A.t -> Apron.Environment.t
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
val is_top_env : {t}579 -> bool
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
type marshal
include Lattice.S with type t := t
include Lattice.PO with type t := t
include Printable.S with type t := t
val equal : t -> t -> bool
val hash : t -> int
val compare : t -> t -> int
val show : t -> string
val pretty : unit -> t -> Printable.Pretty.doc
val printXml : 'a BatInnerIO.output -> t -> unit
val name : unit -> string
val to_yojson : t -> Yojson.Safe.t
val tag : t -> int

Unique ID, given by HConsed, for context identification in witness

val arbitrary : unit -> t QCheck.arbitrary
val relift : t -> t
val leq : t -> t -> bool
val join : t -> t -> t
val meet : t -> t -> t
val widen : t -> t -> t

widen x y assumes leq x y. Solvers guarantee this by calling widen old (join old new).

val narrow : t -> t -> t
val pretty_diff : unit -> (t * t) -> Lattice.Pretty.doc

If leq x y = false, then pretty_diff () (x, y) should explain why.

val bot : unit -> t
val is_bot : t -> bool
val top : unit -> t
val is_top : t -> bool
val is_bot_env : t -> bool
val vars : t -> var list
val add_vars : t -> var list -> t
val remove_vars : t -> var list -> t
val remove_vars_with : t -> var list -> unit

Remove variables in-place. This avoids an extra copy like remove_vars if the input relation is unshared.

val remove_filter : t -> (var -> bool) -> t
val remove_filter_with : t -> (var -> bool) -> unit

Filter variables in-place. This avoids an extra copy like remove_filter if the input relation is unshared.

val copy : t -> t
val keep_vars : t -> var list -> t
val keep_filter : t -> (var -> bool) -> t
val forget_vars : t -> var list -> t

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
val assign_var : t -> var -> var -> t
val assign_var_parallel_with : t -> (var * var) list -> unit

Assign variables in parallel in-place. This avoids an extra copy like assign_var_parallel' if the input relation is unshared.

val assign_var_parallel' : t -> var list -> var list -> t
val substitute_exp : Queries.ask -> t -> var -> GoblintCil.exp -> bool Stdlib.Lazy.t -> t
val unify : t -> t -> t
val marshal : t -> marshal
val unmarshal : marshal -> t
val mem_var : t -> var -> bool
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