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 tval size : 'a Apron.Manager.t -> 'a t -> intval minimize : 'a Apron.Manager.t -> 'a t -> unitval canonicalize : 'a Apron.Manager.t -> 'a t -> unitval hash : 'a Apron.Manager.t -> 'a t -> intval approximate : 'a Apron.Manager.t -> 'a t -> int -> unitapproximate 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 -> unitstdout C stream the internal representation of an abstract value, for debugging purposesval print : Format.formatter -> 'a t -> unitval bottom : 'a Apron.Manager.t -> Apron.Environment.t -> 'a tval top : 'a Apron.Manager.t -> Apron.Environment.t -> 'a tval 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.tval env : 'a t -> Apron.Environment.tval abstract0 : 'a t -> 'a Apron.Abstract0.tval is_bottom : 'a Apron.Manager.t -> 'a t -> boolval is_top : 'a Apron.Manager.t -> 'a t -> boolval is_leq : 'a Apron.Manager.t -> 'a t -> 'a t -> boolval is_eq : 'a Apron.Manager.t -> 'a t -> 'a t -> boolval sat_lincons : 'a Apron.Manager.t -> 'a t -> Apron.Lincons1.t -> boolval sat_tcons : 'a Apron.Manager.t -> 'a t -> Apron.Tcons1.t -> boolval sat_interval : 'a Apron.Manager.t ->
'a t -> Apron.Var.t -> Apron.Interval.t -> booldim in interval ?val is_variable_unconstrained : 'a Apron.Manager.t -> 'a t -> Apron.Var.t -> boolval bound_variable : 'a Apron.Manager.t -> 'a t -> Apron.Var.t -> Apron.Interval.tval 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.tval to_box : 'a Apron.Manager.t -> 'a t -> box1val 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.earrayval to_generator_array : 'a Apron.Manager.t -> 'a t -> Apron.Generator1.earrayval meet : 'a Apron.Manager.t ->
'a t -> 'a t -> 'a tval meet_array : 'a Apron.Manager.t -> 'a t array -> 'a tval meet_lincons_array : 'a Apron.Manager.t ->
'a t -> Apron.Lincons1.earray -> 'a tval meet_tcons_array : 'a Apron.Manager.t ->
'a t -> Apron.Tcons1.earray -> 'a tval join : 'a Apron.Manager.t ->
'a t -> 'a t -> 'a tval join_array : 'a Apron.Manager.t -> 'a t array -> 'a tval 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 -> unitval meet_lincons_array_with : 'a Apron.Manager.t -> 'a t -> Apron.Lincons1.earray -> unitval meet_tcons_array_with : 'a Apron.Manager.t -> 'a t -> Apron.Tcons1.earray -> unitval join_with : 'a Apron.Manager.t -> 'a t -> 'a t -> unitval add_ray_array_with : 'a Apron.Manager.t -> 'a t -> Apron.Generator1.earray -> unitval assign_linexpr_array : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Linexpr1.t array -> 'a t option -> 'a tval substitute_linexpr_array : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Linexpr1.t array -> 'a t option -> 'a tval assign_texpr_array : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Texpr1.t array -> 'a t option -> 'a tval substitute_texpr_array : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Texpr1.t array -> 'a t option -> 'a tval assign_linexpr_array_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Linexpr1.t array -> 'a t option -> unitval substitute_linexpr_array_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Linexpr1.t array -> 'a t option -> unitval assign_texpr_array_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Texpr1.t array -> 'a t option -> unitval substitute_texpr_array_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t array ->
Apron.Texpr1.t array -> 'a t option -> unitval forget_array : 'a Apron.Manager.t ->
'a t -> Apron.Var.t array -> bool -> 'a tval forget_array_with : 'a Apron.Manager.t ->
'a t -> Apron.Var.t array -> bool -> unitval 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 tval 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 -> unitval minimize_environment_with : 'a Apron.Manager.t -> 'a t -> unitval 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 texpand 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 tfold 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 -> unitval fold_with : 'a Apron.Manager.t -> 'a t -> Apron.Var.t array -> unitval widening : 'a Apron.Manager.t ->
'a t -> 'a t -> 'a tval widening_threshold : 'a Apron.Manager.t ->
'a t ->
'a t -> Apron.Lincons1.earray -> 'a tval closure : 'a Apron.Manager.t -> 'a t -> 'a tval closure_with : 'a Apron.Manager.t -> 'a t -> unitval of_lincons_array : 'a Apron.Manager.t ->
Apron.Environment.t -> Apron.Lincons1.earray -> 'a tval of_tcons_array : 'a Apron.Manager.t ->
Apron.Environment.t -> Apron.Tcons1.earray -> 'a tval assign_linexpr : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t ->
Apron.Linexpr1.t -> 'a t option -> 'a tval substitute_linexpr : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t ->
Apron.Linexpr1.t -> 'a t option -> 'a tval assign_texpr : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t ->
Apron.Texpr1.t -> 'a t option -> 'a tval substitute_texpr : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t ->
Apron.Texpr1.t -> 'a t option -> 'a tval assign_linexpr_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t -> Apron.Linexpr1.t -> 'a t option -> unitval substitute_linexpr_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t -> Apron.Linexpr1.t -> 'a t option -> unitval assign_texpr_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t -> Apron.Texpr1.t -> 'a t option -> unitval substitute_texpr_with : 'a Apron.Manager.t ->
'a t ->
Apron.Var.t -> Apron.Texpr1.t -> 'a t option -> unitval unify : 'a Apron.Manager.t ->
'a t -> 'a t -> 'a tval unify_with : 'a Apron.Manager.t -> 'a t -> 'a t -> unit