Following are some simple examples of the creation of an indexed object, and the use of symmetries to canonicalize the index.
#: mkobj('q,'(1 1)); % q is a rank-2 contravariant tensor. a b q % w is like q, but is also symmetric. #: mkobj('w,'(1 1),'((1 1 2))); a b w % r is covariant, and is also flagged implicit. #: mkobj ('r,'(-1 -1),'(),'t); r a b #: q[b,a]; % this index will be unchanged. b a q #: w[b,a]; % because w is symmetric, the index is mapped to a % canonical form. a b w #: q[1,2]; % There are no components in q, so zero is returned. 0 #: r[1,2]; % Since r is implicit, the implicit value is returned. r 1 2Finally, if mkobj() is given a single name as an argument, without even an empty index-type list, a ``bare'' declaration is made. The name is given the minimum number of properties that allow it to be correctly parsed with an index; it is assumed that the object will be correctly made later, usually during an indexed assignment. This use is somewhat sloppy, however, and is not encouraged.