The user interface to an indexed object consists of a name followed by an index enclosed in square brackets. The various index operators are all translated into an internal form when they are parsed as shown in table A.1 . The index itself becomes an ordinary lisp list, most operators exist as elements at the top level of this list, except for the shift operations which become sublists with the operator first, and the index element second. Each line of the function is described separately after. In this example a name is not required, but if one is given it need not be indexed.
Any index is ignored.
If an index was attached to the input name, that name is already indexed, and, if not protected, will be destroyed and remade. If the user did supply a name for the output object, then a new object will be created and the calculations performed, even if the same calculation has already been done. The generic name for the Riemann tensor will point to this object. The object has four covariant tensor indices, a Riemann symmetry, is not implicit, the itype is riemann , and the description string is set to something informative. These are replaced in sequence by the remaining elements of the list.