module Abstract0:sig..end
type 'a t
'a allows to distinguish abstract values with different underlying abstract domains.val set_gc : int -> unitval copy : 'a Manager.t -> 'a t -> 'a tval size : 'a Manager.t -> 'a t -> intval minimize : 'a Manager.t -> 'a t -> unitval canonicalize : 'a Manager.t -> 'a t -> unitval hash : 'a Manager.t -> 'a t -> int
val approximate : 'a 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 Manager.t -> 'a t -> unitstdout C stream the internal representation of an abstract value, for debugging purposesval print : (int -> string) -> Format.formatter -> 'a t -> unitval bottom : 'a Manager.t -> int -> int -> 'a tval top : 'a Manager.t -> int -> int -> 'a tval of_box : 'a Manager.t -> int -> int -> Interval.t array -> 'a t
of_box man intdim realdim array abstracts an hypercube defined by the array of intervals of size intdim+realdim
val dimension : 'a Manager.t -> 'a t -> Dim.dimension
val manager : 'a t -> 'a Manager.tval is_bottom : 'a Manager.t -> 'a t -> boolval is_top : 'a Manager.t -> 'a t -> boolval is_leq : 'a Manager.t -> 'a t -> 'a t -> boolval is_eq : 'a Manager.t -> 'a t -> 'a t -> boolval sat_lincons : 'a Manager.t -> 'a t -> Lincons0.t -> boolval sat_tcons : 'a Manager.t -> 'a t -> Tcons0.t -> boolval sat_interval : 'a Manager.t -> 'a t -> Dim.t -> Interval.t -> booldim in interval ?val is_dimension_unconstrained : 'a Manager.t -> 'a t -> Dim.t -> boolval bound_dimension : 'a Manager.t -> 'a t -> Dim.t -> Interval.tval bound_linexpr : 'a Manager.t -> 'a t -> Linexpr0.t -> 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 Manager.t -> 'a t -> Texpr0.t -> Interval.tval to_box : 'a Manager.t -> 'a t -> Interval.t arrayval to_lincons_array : 'a Manager.t -> 'a t -> Lincons0.t arrayval to_tcons_array : 'a Manager.t -> 'a t -> Tcons0.t arrayval to_generator_array : 'a Manager.t -> 'a t -> Generator0.t arrayval meet : 'a Manager.t -> 'a t -> 'a t -> 'a tval meet_array : 'a Manager.t -> 'a t array -> 'a tval meet_lincons_array : 'a Manager.t -> 'a t -> Lincons0.t array -> 'a tval meet_tcons_array : 'a Manager.t -> 'a t -> Tcons0.t array -> 'a tval join : 'a Manager.t -> 'a t -> 'a t -> 'a tval join_array : 'a Manager.t -> 'a t array -> 'a tval add_ray_array : 'a Manager.t -> 'a t -> Generator0.t array -> 'a t
The generators should either lines or rays, not vertices.
val meet_with : 'a Manager.t -> 'a t -> 'a t -> unit
val meet_lincons_array_with : 'a Manager.t -> 'a t -> Lincons0.t array -> unit
val meet_tcons_array_with : 'a Manager.t -> 'a t -> Tcons0.t array -> unit
val join_with : 'a Manager.t -> 'a t -> 'a t -> unit
val add_ray_array_with : 'a Manager.t -> 'a t -> Generator0.t array -> unitval assign_linexpr_array : 'a Manager.t ->
'a t ->
Dim.t array -> Linexpr0.t array -> 'a t option -> 'a tval substitute_linexpr_array : 'a Manager.t ->
'a t ->
Dim.t array -> Linexpr0.t array -> 'a t option -> 'a tval assign_texpr_array : 'a Manager.t ->
'a t ->
Dim.t array -> Texpr0.t array -> 'a t option -> 'a tval substitute_texpr_array : 'a Manager.t ->
'a t ->
Dim.t array -> Texpr0.t array -> 'a t option -> 'a tval assign_linexpr_array_with : 'a Manager.t ->
'a t ->
Dim.t array -> Linexpr0.t array -> 'a t option -> unit
val substitute_linexpr_array_with : 'a Manager.t ->
'a t ->
Dim.t array -> Linexpr0.t array -> 'a t option -> unit
val assign_texpr_array_with : 'a Manager.t ->
'a t ->
Dim.t array -> Texpr0.t array -> 'a t option -> unit
val substitute_texpr_array_with : 'a Manager.t ->
'a t ->
Dim.t array -> Texpr0.t array -> 'a t option -> unitval forget_array : 'a Manager.t -> 'a t -> Dim.t array -> bool -> 'a t
val forget_array_with : 'a Manager.t -> 'a t -> Dim.t array -> bool -> unitval add_dimensions : 'a Manager.t -> 'a t -> Dim.change -> bool -> 'a t
val remove_dimensions : 'a Manager.t -> 'a t -> Dim.change -> 'a t
val apply_dimchange2 : 'a Manager.t -> 'a t -> Dim.change2 -> bool -> 'a t
val permute_dimensions : 'a Manager.t -> 'a t -> Dim.perm -> 'a tval add_dimensions_with : 'a Manager.t -> 'a t -> Dim.change -> bool -> unit
val remove_dimensions_with : 'a Manager.t -> 'a t -> Dim.change -> unit
val apply_dimchange2_with : 'a Manager.t -> 'a t -> Dim.change2 -> bool -> unit
val permute_dimensions_with : 'a Manager.t -> 'a t -> Dim.perm option -> unit
val expand : 'a Manager.t -> 'a t -> Dim.t -> int -> 'a texpand a dim n expands the dimension dim into itself + n
additional dimensions. It results in (n+1) unrelated dimensions having
same relations with other dimensions. The (n+1) dimensions are put as
follows:
dimval fold : 'a Manager.t -> 'a t -> Dim.t array -> 'a tfold a tdim fold the dimensions in the array tdim of size n>=1
and put the result in the first dimension of the array. The other
dimensions of the array are then removed (using
ap_abstract0_permute_remove_dimensions).val expand_with : 'a Manager.t -> 'a t -> Dim.t -> int -> unit
val fold_with : 'a Manager.t -> 'a t -> Dim.t array -> unitval widening : 'a Manager.t -> 'a t -> 'a t -> 'a tval widening_threshold : 'a Manager.t ->
'a t -> 'a t -> Lincons0.t array -> 'a tval closure : 'a Manager.t -> 'a t -> 'a tval closure_with : 'a Manager.t -> 'a t -> unitval of_lincons_array : 'a Manager.t -> int -> int -> Lincons0.t array -> 'a t
val of_tcons_array : 'a Manager.t -> int -> int -> Tcons0.t array -> 'a tval assign_linexpr : 'a Manager.t ->
'a t ->
Dim.t -> Linexpr0.t -> 'a t option -> 'a t
val substitute_linexpr : 'a Manager.t ->
'a t ->
Dim.t -> Linexpr0.t -> 'a t option -> 'a t
val assign_texpr : 'a Manager.t ->
'a t ->
Dim.t -> Texpr0.t -> 'a t option -> 'a t
val substitute_texpr : 'a Manager.t ->
'a t ->
Dim.t -> Texpr0.t -> 'a t option -> 'a tval assign_linexpr_with : 'a Manager.t ->
'a t -> Dim.t -> Linexpr0.t -> 'a t option -> unit
val substitute_linexpr_with : 'a Manager.t ->
'a t -> Dim.t -> Linexpr0.t -> 'a t option -> unit
val assign_texpr_with : 'a Manager.t ->
'a t -> Dim.t -> Texpr0.t -> 'a t option -> unit
val substitute_texpr_with : 'a Manager.t ->
'a t -> Dim.t -> Texpr0.t -> 'a t option -> unitval print_array : ?first:(unit, Format.formatter, unit) Pervasives.format ->
?sep:(unit, Format.formatter, unit) Pervasives.format ->
?last:(unit, Format.formatter, unit) Pervasives.format ->
(Format.formatter -> 'a -> unit) -> Format.formatter -> 'a array -> unit