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, const 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. The other
dimensions of the array are then removed.
This document was generated
on December, 22 2006
using texi2html