With my apologies for any confusion between [
meta-denotation …] and [
literal … ] square brackets and ellipsis. (Note that
the latter leaves a space between … and ], while the former does not.)
The difference *does* matter –
see meta-denotations and templates. Note that the
presence of commas in these denotations distinguishes them from further uses of
square brackets which may arise in the tensor
notation and elsewhere.

- [ [ item [ , item …] ] ]
- [ [ item , …] [ … , item , [ item , …] …] … [ , item …] ]
in which each item must denote a value; the whole denotes a mapping (:h|N), for which N is either {naturals} or a natural, and the items are h's outputs. When N is 1+n for some natural n, (:h|1+n) is synonymous with [h(0), …, h(n)], just as 1+n is synonymous with {0,…,n} and, indeed, with [0,…,n].

A text matching either template is a sequence of sub-texts, separated by commas and enclosed in [ square brackets ], in which each sub-text either is an ellipsis, as … is known, or is intelligible to context as a denotation for a value; if none of the sub-texts is … the denotation is of the first form, otherwise the second. Where a sequence of value-denotations, i.e. of items, uninterrupted by … appears in a denotation of either form, describe it for the present as a

chunk

; the first form, when it contains any items at all, has a single chunk; the second form may contain arbitrarily many chunks. Taking any chunk and enclosing it in [ square brackets ] yields a text matching the first template; so, first, I'll give the meanings for these, then I'll use these to express what the second form means.Each chunk has a definite number of items in it, and no ellipsis; a list in the first form, having N items in its text, is that mapping (:h|N) for which the value of each item in the text is h's output when given, as input, the number of items to the left of the given one. Thus [a,b,c] is the mapping (:|3) which maps 0 to a, 1 to b and 2 to c; and [] is the mapping (:|0), there being only one such since 0 is empty = {} and a mapping (:|{}) has no right values, hence is empty, so indeed [] = {}.

Given this reading of the first form, any chunk is best described by the list one obtains by enclosing it in [ square brackets ]. In a use of the second template, denoting (:h|N), the presence of a chunk described by a list (:g|n) asserts that

- there is some m in N for which g = (: h(m+i) ←i :n) whence, in particular,
- N is at least n+m which is at least n
- if the chunk appears before the leftmost use of …, the denotation asserts that m is 0; if after the rightmost use of … that n+m is N; i.e. a chunk which starts or ends the denotation tells you the first or last few values in the list denoted, as you might expect. In particular, a chunk after the last ellipsis says that N is n+m for some naturals n, m – hence that N is a natural, not {naturals} itself.

Note that, aside from chunks which abut a [ square bracket ], nothing is asserted about the relative order of chunks – the lists [0, 1, 2, 3, 4, 5] and [1, 2, 3, 4] are both valid values for the denotation […, 2, 3, 4, … 1, 2, 3, …], for instance; as, indeed, is {naturals}.

A denotation of the second form may end in ellipsis, in which case the value it denotes may be an infinite sequence, (:h|{naturals}). One could probably do quite well extending the given notation to describing ordinal sequences; then n would be an integer while m might not (though it'll still be an ordinal); ending in ellipsis would then allow (but not constrain) N to be a limit ordinal.

Borrowing an idiom from ECMAScript, I *could* allow
list-like denotations in which two commas appear with no value between them;
this would naturally denote a mapping (:h:N) as above, but allowing some members
of N to not be right values of h. However, for now (up to 2014/Autumn), I
haven't felt a strong need to do this.