These remarks about declaring functional indices apply to the following commands: the creation of functions via the F: command, the declaration of assignments via the ASSIGN: command, and the specification of functional beliefs over components and between components and elements via the FVAR: and FE: commands.
The quantities addressed by these commands can be defined so that they have indices that are allowed to vary and will later take positive integer values (assignments are a special exception). Suppose, for example, that you wished to generate an ANOVA type model of the form . We could explicitly create as elements all the terms given here, but it is more convenient and natural to define them as one assignment with indices that are permitted to vary as necessary. For example we might establish this model in [B/D] by issuing the command
BD>assign Y.i.j=m+a.i+b.j+e.i.j
Notice that we use the full stop character `.', followed by an alphabetic character to represent an index that can vary. When integer values to replace the indices become known, the integers replace the alphabetic characters, but not the full stop. Thus, were we actually to create an element from the assignment with i=2 and j=3, we would create an element with the name `Y.2.3'. Moreover, the act of creation would make reference to the quantities `a.2', `b.3', and `e.2.3'. The alphabetic characters representing a particular index must be unique to the occasion. That is, it is not permitted to define the assignment .
Given a particular command, we call the part to the left hand side of the equals symbol the naming part, and the part to the right hand side the definition part of the construction. Thus here is the naming part, and is the definition part of the construction.
To avoid confusion about when an index is not an index, we insist that the naming part may not contain both varying indices and integer indices. That is, the assignment name `X.2.i' is not allowed as it contains both integer and varying indices. However, as we have seen `Y.i.j' is allowed as it contains only varying indices, and `Z.4.1' is allowed as it contains only integer indices. However, the definition part is not limited in this way, so that you may mix varying and integer indices freely. For example, the following modification to the previous example is permitted:
BD>assign Y.i.j=m+a.i+b.j+e.2.j