module Abstract1:sig
..end
type 'a
t = {
|
mutable abstract0 : |
|
mutable env : |
'a
allows to distinguish abstract values with different underlying abstract domains.type
box1 = {
|
mutable interval_array : |
|
mutable box1_env : |
val copy : 'a Apron.Manager.t -> 'a t -> 'a t
val size : 'a Apron.Manager.t -> 'a t -> int
val minimize : 'a Apron.Manager.t -> 'a t -> unit
val canonicalize : 'a Apron.Manager.t -> 'a t -> unit
val hash : 'a Apron.Manager.t -> 'a t -> int
val approximate : 'a Apron.Manager.t -> 'a t -> int -> unit
approximate man abs alg
perform some transformation on the abstract value, guided by the argument alg
. The transformation may lose information. The argument alg
overrides the field algorithm of the structure of type Manager.funopt
associated to ap_abstract0_approximate (commodity feature).val fdump : 'a Apron.Manager.t -> 'a t -> unit
stdout
C stream the internal representation of an abstract value, for debugging purposesval print : Format.formatter -> 'a t -> unit
val bottom : 'a Apron.Manager.t -> Apron.Environment.t -> 'a t
val top : 'a Apron.Manager.t -> Apron.Environment.t -> 'a t
val of_box : 'a Apron.Manager.t ->
Apron.Environment.t ->
Apron.Var.t array -> Apron.Interval.t array -> 'a t
of_box man env tvar tinterval
abstracts an hypercube defined by the arrays tvar
and tinterval
. The result is defined on the environment env
, which should contain all the variables in tvar
(and defines their type)
val manager : 'a t -> 'a Apron.Manager.t
val env : 'a t -> Apron.Environment.t
val abstract0 : 'a t -> 'a Apron.Abstract0.t
val is_bottom : 'a Apron.Manager.t -> 'a t -> bool
val is_top : 'a Apron.Manager.t -> 'a t -> bool
val is_leq : 'a Apron.Manager.t -> 'a t -> 'a t -> bool
val is_eq : 'a Apron.Manager.t -> 'a t -> 'a t -> bool
val sat_lincons : 'a Apron.Manager.t -> 'a t -> Apron.Lincons1.t -> bool
val sat_tcons : 'a Apron.Manager.t -> 'a t -> Apron.Tcons1.t -> bool
val sat_interval : 'a Apron.Manager.t ->
'a t -> Apron.Var.t -> Apron.Interval.t -> bool
dim in interval
?val is_variable_unconstrained : 'a Apron.Manager.t -> 'a t -> Apron.Var.t -> bool
val bound_variable : 'a Apron.Manager.t -> 'a t -> Apron.Var.t -> Apron.Interval.t
val bound_linexpr : 'a Apron.Manager.t ->
'a t -> Apron.Linexpr1.t -> Apron.Interval.t
Implement a form of linear programming, where the argument linear expression is the one to optimize under the constraints induced by the abstract value.
val bound_texpr : 'a Apron.Manager.t ->
'a t -> Apron.Texpr1.t -> Apron.Interval.t
val to_box : 'a Apron.Manager.t -> 'a t -> box1
val to_lincons_array : 'a Apron.Manager.t -> 'a t -> Apron.Lincons1.earray
Convert the abstract value to a conjunction of tree expressions constraints.
val to_tcons_array : 'a Apron.Manager.t -> 'a t -> Apron.Tcons1.earray
val to_generator_array : 'a Apron.Manager.t -> 'a t -> Apron.Generator1.earray
val meet : 'a Apron.Manager.t ->
'a t -> 'a t -> 'a t
val meet_array : 'a Apron.Manager.t -> 'a t array -> 'a t
val meet_lincons_array : 'a Apron.Manager.t ->
'a t -> Apron.Lincons1.earray -> 'a t
val meet_tcons_array : 'a Apron.Manager.t ->
'a t -> Apron.Tcons1.earray -> 'a t
val join : 'a Apron.Manager.t ->
'a t -> 'a t -> 'a t
val join_array : 'a Apron.Manager.t -> 'a t array -> 'a t
val add_ray_array : 'a Apron.Manager.t ->
'a t -> Apron.Generator1.earray -> 'a t
The generators should either lines or rays, not vertices.
val meet_with : 'a Apron.Manager.t -> 'a t -> 'a t -> unit
val meet_lincons_array_with : 'a Apron.Manager.t -> 'a t -> Apron.Lincons1.earray -> unit
val meet_tcons_array_with : 'a Apron.Manager.t -> 'a t -> Apron.Tcons1.earray -> unit
val join_with : 'a Apron.Manager.t -> 'a t -> 'a t -> unit
val add_ray_array_with : 'a Apron.Manager.t -> 'a t -> Apron.Generator1.earray -> unit
val assign_linexpr_array : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Linexpr1.t array -> 'a t option -> 'a t
val substitute_linexpr_array : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Linexpr1.t array -> 'a t option -> 'a t
val assign_texpr_array : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Texpr1.t array -> 'a t option -> 'a t
val substitute_texpr_array : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Texpr1.t array -> 'a t option -> 'a t
val assign_linexpr_array_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Linexpr1.t array -> 'a t option -> unit
val substitute_linexpr_array_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Linexpr1.t array -> 'a t option -> unit
val assign_texpr_array_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Texpr1.t array -> 'a t option -> unit
val substitute_texpr_array_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Texpr1.t array -> 'a t option -> unit
val forget_array : 'a Apron.Manager.t ->
'a t -> Apron.Var.t array -> bool -> 'a t
val forget_array_with : 'a Apron.Manager.t ->
'a t -> Apron.Var.t array -> bool -> unit
val change_environment : 'a Apron.Manager.t ->
'a t -> Apron.Environment.t -> bool -> 'a t
Variables that are removed are first existentially quantified, and variables that are introduced are unconstrained. The Boolean, if true, adds a projection onto 0-plane for these ones.
val minimize_environment : 'a Apron.Manager.t -> 'a t -> 'a t
val rename_array : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array -> Apron.Var.t array -> 'a t
The new variables should not interfere with the variables that are not renamed.
val change_environment_with : 'a Apron.Manager.t ->
'a t -> Apron.Environment.t -> bool -> unit
val minimize_environment_with : 'a Apron.Manager.t -> 'a t -> unit
val rename_array_with : 'a Apron.Manager.t ->
'a t -> Apron.Var.t array -> Apron.Var.t array -> unit
val expand : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t -> Apron.Var.t array -> 'a t
expand a var tvar
expands the variable var
into itself and
the additional variables in tvar
, which are given the same type as var
.
It results in (n+1) unrelated variables having
same relations with other variables. The additional variables are added to the environment of
the argument for making the environment of the result, so they should
not belong to the initial environement.
val fold : 'a Apron.Manager.t ->
'a t -> Apron.Var.t array -> 'a t
fold a tvar
fold the variables in the array tvar
of size n>=1
and put the result in the first variable of the array. The other
variables of the array are then removed, both from the environment and the abstract value.val expand_with : 'a Apron.Manager.t ->
'a t -> Apron.Var.t -> Apron.Var.t array -> unit
val fold_with : 'a Apron.Manager.t -> 'a t -> Apron.Var.t array -> unit
val widening : 'a Apron.Manager.t ->
'a t -> 'a t -> 'a t
val widening_threshold : 'a Apron.Manager.t ->
'a t ->
'a t -> Apron.Lincons1.earray -> 'a t
val closure : 'a Apron.Manager.t -> 'a t -> 'a t
val closure_with : 'a Apron.Manager.t -> 'a t -> unit
val of_lincons_array : 'a Apron.Manager.t ->
Apron.Environment.t -> Apron.Lincons1.earray -> 'a t
val of_tcons_array : 'a Apron.Manager.t ->
Apron.Environment.t -> Apron.Tcons1.earray -> 'a t
val assign_linexpr : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t ->
Apron.Linexpr1.t -> 'a t option -> 'a t
val substitute_linexpr : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t ->
Apron.Linexpr1.t -> 'a t option -> 'a t
val assign_texpr : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t ->
Apron.Texpr1.t -> 'a t option -> 'a t
val substitute_texpr : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t ->
Apron.Texpr1.t -> 'a t option -> 'a t
val assign_linexpr_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t -> Apron.Linexpr1.t -> 'a t option -> unit
val substitute_linexpr_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t -> Apron.Linexpr1.t -> 'a t option -> unit
val assign_texpr_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t -> Apron.Texpr1.t -> 'a t option -> unit
val substitute_texpr_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t -> Apron.Texpr1.t -> 'a t option -> unit
val unify : 'a Apron.Manager.t ->
'a t -> 'a t -> 'a t
val unify_with : 'a Apron.Manager.t -> 'a t -> 'a t -> unit