# Domain Indexes

The domain of a variable specifies the possible set of values for each atomic cell of the variable's result. A domain specification can consist either of an implicit description (such as Continuous(0, 1)) or as explicit (such as Discrete('a', 'b', 'c')).

An explicit domain specification provides a finite list of possible values, and this list can, in some situations, be used as an index in its own right. When used in this fashion, this is called a domain index. A variable's domain index is separate from its index value or self index. For example, it is entirely plausible for a variable to have an index value of ['a', 'c', 'd'] but a domain index with values ['a', 'b', 'c', 'd', 'e', 'f'].

The primary reason that domain indexes exist is to support DetermTables and ProbTables. A DetermTable provides a result for each of a variable's possible values. In order to represent this table as an edit table, we need a domain index with the set of possible values. A ProbTable functions as a DetermTable as well.

Prior to Analytica 4.3, when a domain was set to an explicit list of values, the values from the domain became a self index for the variable. There was no distinction between the domain index and the self index. This functionality made it possible to have DetermTables, and to support Choice(Self, 0) pulldowns, but it wasn't entirely consistent. Just because you've specified the set of possible or allowed values doesn't mean that a variable's result is indexed, or that it should be valid to treat the variable as an index. It conflicted with the principle that an implicit dimension in the computed result of a variable should be promoted to become the self index (since the domain was already occupying that role). This distinction of a separate domain index remedies these consistencies.

## History

Introduced in Analytica 4.3.