Previous: Tree constraints of level 0, Up: Level 0 of the interface
Datatype for abstract values at level 0.
Most operations are offered in 2 versions: functional or destructive. In such a case, the Boolean argument destructive controls the behaviour of the functionn:
Next: Control of internal representation of abstract values of level 0, Previous: Abstract values and operations of level 0, Up: Abstract values and operations of level 0
Return a copy of a, on which destructive update does not affect a.
Free all the memory used by a.
Return the abstract size of a.
Next: Printing abstract values of level 0, Previous: Allocating abstract values of level 0, Up: Abstract values and operations of level 0
Minimize the size of the representation of a. This may result in a later recomputation of internal information.
Put a in canonical form. (not yet clear definition)
Return an hash value for a. Two abstract values in canonical
from (according to ap_abstract0_canonicalize
) and considered as
equal by the function ap_abstract0_is_eq
should be given the
same hash value (this implies more or less a canonical form).
Perform some transformation on a, guided by the field algorithm.
The transformation may lose information. The argument
algorithm overrides the field algorithm of the structure of
type ap_funopt_t
associated to
ap_abstract0_approximate
.
Next: Serialization of abstract values of level 0, Previous: Control of internal representation of abstract values of level 0, Up: Abstract values and operations of level 0
Print a in a pretty way, using array name_of_dim to
name dimensions.. If name_of_dim is NULL
, use the
default names x0, x1, ...
.
Print the difference between a1 (old value) and a2 (new value), using array name_of_dim to name dimensions. The meaning of difference is library dependent.
Dump the internal representation of a for debugging purposes.
Next: Constructors for abstract values of level 0, Previous: Printing abstract values of level 0, Up: Abstract values and operations of level 0
Allocate a memory buffer (with malloc
), output a
in raw binary format to it and return a pointer on the memory
buffer and the number of bytes written. It is the user
responsability to free the memory afterwards (with free).
Return the abstract value read in raw binary format from the buffer pointed by ptr and store in size the number of bytes read.
Next: Accessors for abstract values of level 0, Previous: Serialization of abstract values of level 0, Up: Abstract values and operations of level 0
Create resp. a bottom (empty) value and a top (universe) value with intdim integer dimensions and realdim real dimensions.
Abstract an hypercube defined by the array of intervals array of size intdim+realdim.
Next: Tests on abstract values of level 0, Previous: Constructors for abstract values of level 0, Up: Abstract values and operations of level 0
Return the dimensionality of a.
Next: Extraction of properties of abstract values of level 0, Previous: Accessors for abstract values of level 0, Up: Abstract values and operations of level 0
In abstract tests,
Emtpiness and universality tests.
Inclusion and equality tests.
Is the dimension dim included in the interval interval in the abstract value a ?
Does the abstract value a satisfy the constraint cons ?
Is the dimension dim unconstrained in the abstract value a ?
If it is the case, we have forget(man,a,dim) == a
.
Next: Meet and Join of abstract values of level 0, Previous: Tests on abstract values of level 0, Up: Abstract values and operations of level 0
Return the interval taken by the dimension dim over the abstract valuea
Return the interval taken by a linear expression expr over the abstract value a.
This function allows to solve a Linear Programming (LP) problem, but depending on the underlying domain the solution may be not optimal.
Convert a to an interval/hypercube. The size of the resulting array is ap_abstract0_dimension(man,a).
Convert a to a conjunction of constraints.
The constraints are normally guaranteed to be scalar (without intervals)
Convert a to an array of generators.
Next: Assignements and Substitutions of abstract values of level 0, Previous: Extraction of properties of abstract values of level 0, Up: Abstract values and operations of level 0
Meet and Join of 2 abstract values
Meet and Join of the array array of abstract values of size size.
Raise an AP_EXC_INVALID_ARGUMENT
exception if
size==0
(no way to define the dimensionality of the result
in such a case).
Meet of the abstract value a with the set of constraints array.
array should have exactly the same dimensionality as a.
Generalized time elapse operator.
array is supposed to contain only rays or lines, no vertices.
array should have exactly the same dimensionality as a.
Next: Existential quantification of abstract values of level 0, Previous: Meet and Join of abstract values of level 0, Up: Abstract values and operations of level 0
Parallel Assignement and Substitution of several dimensions by expressions in abstract value org.
dest is an optional argument. If not NULL, semantically speaking, the result of the transformation is intersected with dest. This is useful for precise backward transformations in lattices like intervals or octagons.
Next: Change and permutation of dimensions of abstract values of level 0, Previous: Assignements and Substitutions of abstract values of level 0, Up: Abstract values and operations of level 0
Forget (project=false
) or Project (project=true
) the
array of dimensions tdim of size size in the abstract
value a.
Next: Expansion and Folding of dimensions in abstract values of level 0, Previous: Existential quantification of abstract values of level 0, Up: Abstract values and operations of level 0
Addition and Removal of dimensions in a according to
dimchange. In the case of addition, new dimensions are either
unconstrained (project==false
) or initialized to 0
((project==true
).
Apply the transformation specified by dimchange2. New dimensions
are either unconstrained (project==false
) or initialized to 0
((project==true
).
Permute the dimensions of a according to the permutation perm.
The size of the permutation is supposed to be large enough w.r.t. a.
Next: Widening of abstract values of level 0, Previous: Change and permutation of dimensions of abstract values of level 0, Up: Abstract values and operations of level 0
Formally, expanding z
into z
and w
in
abstract value (predicate) P
is defined by
expand(P(x,y,z),z,w) = P(x,y,z) and P(x,y,w).
Conversely, folding z
and w
into z
in
abstract value (predicate) Q
is defined by
fold(Q(x,y,z,w),z,w) = (exists w: Q(x,y,z,w)) or (exists z:Q(x,y,z,w)[z<-w]).
Expand 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:
Fold the dimensions in the array tdim of size size>=1 and put the result in the first dimension in the array assumed to be sorted. The other dimensions of the array are then removed.
Next: Topological closure of abstract values of level 0, Previous: Expansion and Folding of dimensions in abstract values of level 0, Up: Abstract values and operations of level 0
Widening of a1 with a2. a1 is supposed to be included in a2.
Next: Additional functions on abstract values of level 0, Previous: Widening of abstract values of level 0, Up: Abstract values and operations of level 0
Relax strict constraints into non strict constraints.
Previous: Topological closure of abstract values of level 0, Up: Abstract values and operations of level 0
These functions do not have corresponding functions into underlying libraries.
Return a reference to the manager contained in a.
The reference should not be freed.
Abstract a conjunction of constraints. The constraints in the array should have exactly the dimensions (intdim,realdim).
Assignement and Substitution of the dimension dim by the expression expr in abstract value org.
dest is an optional argument. If not NULL, semantically speaking, the result of the transformation is intersected with dest. This is useful for precise backward transformations in lattices like intervals or octagons.
Widening with threshold.
Intersect the result of the standard widening with all the constraints in array that are satisfied by both a1 and a2.