[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |

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_abstract1_t**ap_abstract1_expand***(ap_manager_t**`man`, bool`destructive`, ap_abstract1_t*`a`, ap_var_t`var`, ap_var_t*`tvar`, size_t`size`)- Expand the variable
`var`into itself + the`size`additional variables of the array`tvar`, which are given the same type as`var`. 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 environment.It results in

`size+1`

unrelated variables having same relations with other dimensions.

__Function:__ap_abstract1_t**ap_abstract1_fold***(ap_manager_t**`man`, bool`destructive`, ap_abstract1_t*`a`, ap_var_t*`tvar`, size_t`size`)- Fold the variables in the array
`tvar`of size`size`>=1 and put the result in the first variable in the array. The other variables of the array are then forgot and removed from the environment.

This document was generated on