16.2. The census of object types
The useful distinction is not between objects this calculus defines and objects a
host library defines. It is how an object carries its identity, crossed with whether
its type is primitive or derived from another. Six shapes arise, and each is
exhibited — acceptances as example, refusals as #check_failure — in the
MiniObjectTypes module of the Examples library.
Nominal. Identity is the name: System, a terminological id and nothing else.
Naming and telling apart are one act, so both questions are answered at once. This is
the reading the layer shipped with, and the right one for a sample, an instrument, a
rover.
Structural. Identity is a position: a particle of a mechanical system, a cell of a mesh. Gated for free — the exhibit states this at an arbitrary type variable, about which nothing whatever is assumed — and not designatable, because there is no name anywhere to designate with.
Indexed. The position determines a name: a pixel, a spectral band, a layer. Between the two — gated like a structural object, designatable like a nominal one, with the injectivity discharged rather than assumed.
Composite. Derived: the parts of an assembly and the whole they compose, in one type. The construct aggregation needs, below.
Joint. Derived: an ordered pair, for a quantity that characterizes a coupling rather than a system — a flow, a transfer, a torque across an interface. The gate falls out with nothing added, so an interface quantity is an instance of the scheme rather than a construct of its own. Designation is where this shape instructs: the obvious nominal encoding, concatenating the two names with a separator, is not injective, because the separator can occur inside a name. The exhibit gives the two couplings that collide, and that counterexample is the argument for the injectivity field.
Singleton. One object, Unit. Worth naming because it bounds the cost: a model with
nothing to disambiguate pays nothing for the object layer, since there is exactly one
term to write.
A seventh shape suggests itself and is not one. An object at a time — the same apparatus examined on Tuesday — is not a new object type: the time dependence belongs to the quantity, which is a function of time, and the difference between two occasions is an examination. Whether a sample drawn at one moment is a different system from the sample drawn at the next is a modeling decision about the system, not something the parameterization settles.