On 2/10/26 12:57, Bradley J Lucier wrote:
>> On Feb 10, 2026, at 12:09, Bradley J Lucier <xxxxxx@purdue.edu> wrote:
>>
>>> On Feb 10, 2026, at 01:28, Peter McGoron <xxxxxx@mcgoron.com> wrote:
>>>
>>> Would it be better to describe the multi-index as a proper list of exact
>>> integers?
>> Perhaps it would be more accurate to say that a multi-index is not reified as a Scheme object, but conceptually is a sequence of zero or more exact integers, which may be returned by (values …).
>>
>> Brad
> And instead of saying that an interval “contains” multi-indices, one should say that it specifies or determines multi-indices.
>
> Brad
I thought it would be good to add a small Terminology section near the
top of the document to really lay out the terms I'm using. I came up
with this as a first draft. It converted the MathJax-formatted LaTeX to
HTML, so it's a bit rough.
Comments and suggestions welcome.
Brad
Terminology
An /index/ (plural: indices) is a Scheme exact integer.
A /multi-index/ (plural: multi-indices) is a finite sequence of zero or
more indices. Multi-indices are not scheme objects, they are finite
sequences of Scheme exact integers. The number of indices in a
multi-index is called its /dimension/. There is only one
zero-dimensional multi-index, which is a sequence of no indices at all,
which we call the /empty sequence/ or /empty multi-index/.
A d-dimensional /interval/, as defined here, is determined by a Scheme
vector of /lower bounds/ ℓ0ℓ1…ℓd−1, all indices, and a Scheme vector of
/upper bounds/ u0u1…ud−1, again all indices, with ℓk≤ukfor k=0,…,d−1.
This interval specifies a set of valid multi-indices i0i1…id−1with
ℓk≤ik<ukfor k=0,…,d−1. If a multi-index i0i1…id−1is determined by an
interval, we say that the interval /contains/ that multi-index. The
number of multi-indices contained in an interval is that interval's
/volume/.
From these definitions, we see that if ℓk=ukfor any k, then no
multi-indices satisfy the condition to be contained in the interval, and
we say that the interval is /empty/, its volume is zero. If d=0, there
is one and only multi-index contained in the interval, the empty
multi-index, and that interval's volume is 1.
An /array/ is determined by an interval, called its /domain/ and a
Scheme procedure, called the array's /getter/ that takes a multi-index
in that interval as arguments and returns a Scheme object. We call the
Scheme objects returned by an array's getter the /elements/ of that array.
A /mutable array/ has an additional Scheme procedure called the array's
/setter/ that takes as arguments a multi-index contained in its domain
and a Scheme object and sets the array's element at that multi-index to
the Scheme object given as an argument.