Expansion and Folding of dimensions of abstract values 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]).
- Function: ap_abstract0_t* ap_abstract0_expand (ap_manager_t* man, bool destructive, ap_abstract0_t* a, ap_dim_t dim, size_t n)
- 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:
- original dimension dim;
- if dim is integer, the n additional dimensions are put at the
end of integer dimensions; if it is real, at the end of the real
dimensions.
- Function: ap_abstract0_t* ap_abstract0_fold (ap_manager_t* man, bool destructive, ap_abstract0_t* a, ap_dim_t* tdim, size_t size)
- 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.
This document was generated
by Bertrand Jeannet on December, 22 2009
using texi2html