A Property Kind Calculus for Measurement Metrology

2.15. Out of scope (for now)🔗

User-specified base units — making the dimension system parametric in the chosen base set (so a quantity's dimensional decomposition is relative to a choice of generators, expressing e.g. Gaussian-CGS electromagnetism, natural units, or the four-base Finkelstein system) — was out of scope in an earlier draft and is now delivered. We made PhysLib's Dimension itself parametric in its basis and contributed the change upstream (github.com/leanprover-community/physlib/issues/1441, pull request 1447), where it has since been merged; PKC consumes it from leanprover-community/physlib master. The former fixed five-generator type is recovered as the default instance, so no existing result changes. The contribution did not stop at the dimension side: the unit twin is parametrized in the same basis (UnitScale B with its conversion-factor homomorphism dimScale, which PKC's VIM4 §1.22 prefix conversion instantiates at a single generator), and the seven-generator ISQ basis together with the embedding/projection bridge to the five-generator one are upstream as well. The division of labour that leaves is the one this development argues for throughout: the dimensional algebra — bases, homomorphisms between them, unit scaling — belongs in the physics library, while the kind layer and the catalogue's stances belong here. PKC then realizes the angle-augmented basis — PhysLib's five generators together with angle — as one instantiation among several (Gaussian-CGS, natural units, the four-base Finkelstein system, the seven-generator current-based ISQ of ISO/IEC 80000-1): in it plane angle, solid angle, and a pure number are dimensionally distinct (solid angle the square of plane angle, sr = rad²) and torque is energy per angle (so torque ≠ energy), the very separations the five-generator group cannot draw. The ISO 80000 catalogue stays faithful to the standard (SI convention, plane angle dimension one) in the five-generator basis and lifts into any of these along the injective embedding of those generators, with every kind invariant under the lift — a proved change-of-basis theorem. Not every such lift is an embedding of generators: passing to the current-based ISQ sends the charge generator to the product I·T (the coulomb as ampere-second), so it is realized not by reindexing generators but as a genuine group homomorphism, proved injective and hence lossless, and paired upstream with a projection that retracts it (Dimension.toISQHom, toISQHom_injective, fromISQHom_comp_toISQHom; consumed in IsqBase). The catalogue turns this to account for citation: its kinds are dimensioned internally over PhysLib's charge generator, yet the item-index dimensional formulae it prints are rendered in the ISQ base quantity current, so a capacitance reads M⁻¹·L⁻²·T⁴·I² exactly as IEC 80000-6 tabulates it rather than in the internal charge encoding. The same instantiation shows the mole/candela reduction to be a stance rather than a lack: the ISQ offers independent generators for amount of substance and luminous intensity, and the catalogue declines them (the mole stays dimension one, the candela stays power under the lift), so R13 is a modeling choice the change of basis preserves, not an artifact of the five-generator type. Committing the catalogue to one reformed basis would merely privilege a single contested proposal, which is exactly what the parametricity avoids. So the controversy over which units are base is answered on both layers: a kind is invariant under the choice of base, and only its dimensional shadow changes. R13 captures the specific base/scale-spanning/derived controversy over the five-generator basis.

Value representation in the structural sense — coordinate frames, tensor variance, bound-versus-free vectors, and frame transformations — is a separate, orthogonal axis, distinct from R10's numeric carrier R and R11's numerical array. Its principled home is an index over the kind, never a layer the kind hangs beneath (the inversion the Why a calculus, not a taxonomy section charges against SysML v2), and R20 above now occupies exactly that position: InFrame f var k R indexes a reading by its frame and its variance, and the invariance of a scalar product under an orthonormal change of frame is a theorem rather than a convention.

The axis is specified for Cartesian frames, which is less than the full requirement. What R20 states as owed, and this section keeps owed with it: the covariant/contravariant split for non-orthogonal changes (under an orthonormal change the two laws coincide, which is why one vector variance suffices there), curvilinear coordinates, bound-versus-free vectors, and affine frames. Naming the remainder is what keeps the boundary honest now that the first part is discharged.