The multiplication, division and raising to a power of indexed objects are executed by the usual , and operations of REDUCE. Let us examine the multiplication first:
The terms to be multiplied cannot contain an abstract index more than one time with the same upper or lower position, namely for A(I)*B(I) one would obtain an error message. But because the operation of multiplication is left associative in REDUCE it may occur that a mistyping would not lead to an error message, for example
The product is evaluated from left to right and interpreted as , moreover due to the arbitrariness of the dummy indices the system changes them so that they would not interfere with the free index. Naturally the result may be wrong if one should choose to calculate as follows
Division is accepted only by scalar valued expression. If in the course of the division the denominator can be factorized to the multiplication of non-scalar valued expressions and simplification is possible then naturally it happens only with scalar valued terms. The division by scalar valued indexed expression can be an expensive operation in computation time.
Only a scalar valued indexed expression can be raised to a higher power. The internal representation of the indexed quantities requires the system to execute all raising to an integer power. Therefore in such cases it is possible that there are not enough predefined abstract indices to use them as dummy indices. The system has to introduce new abstract indices constructing them from the letter I and a serial number, e.g I0, I1, I2, ... even if they do not appear in the output: