A Property Kind Calculus for Measurement Metrology

11.1. The forgetful map (Dybkær Ch. 19)🔗

Definition11.1.1
Group: A kind is given a dimension by forgetting everything but its SI base-quantity exponents. To keep the core spine Mathlib-free, the dimension is paired with the kind in this separate library rather than stored on KindOfProperty : an application declares a dimensioned kind with a def , exactly as it declares a kind. The forgetful map then drops the kind identity and keeps the dimension. (2)
Group member previews
Preview
Theorem 11.1.2
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Definition 6.2.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 43
Reverse dependency previews
Preview
Theorem 10.1.13
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
✓L∃∀N

The dimension map \dim sends a dimensioned kind — a kind-of-property paired with a PhysLib Dimension (ℚ-exponents over length/time/mass/charge/temperature) — to that dimension. It is deliberately many-to-one: that is what makes the dimension-1 disambiguation true.

Lean code for Definition11.1.1●1 definition
  • defdefined in PropertyKindCalculus/Dimension.lean
    complete
    def PropertyKindCalculus.DimensionedKind.toDimension {B : Type}
      [DimensionBasis B] (dk : PropertyKindCalculus.DimensionedKind B) :
      Dimension B
    def PropertyKindCalculus.DimensionedKind.toDimension
      {B : Type} [DimensionBasis B]
      (dk :
        PropertyKindCalculus.DimensionedKind
          B) :
      Dimension B
    The **forgetful functor** on objects: drop the kind identity, keep only the
    dimension. Naming it as a standalone map is what lets the central fact — that it
    is *not injective* — be stated and proved. Generic in the basis `B`. 
Proof for Definition 11.1.1
uses 0

Realized in the Dimension library (dimension/). DimensionedKind is the structure pairing a kind with its Dimension; toDimension is the forgetful projection. PhysLib + Mathlib enter only here, as a separate library; the spine stays Mathlib-free.

Theorem11.1.2
Group: A kind is given a dimension by forgetting everything but its SI base-quantity exponents. To keep the core spine Mathlib-free, the dimension is paired with the kind in this separate library rather than stored on KindOfProperty : an application declares a dimensioned kind with a def , exactly as it declares a kind. The forgetful map then drops the kind identity and keeps the dimension. (2)
Group member previews
Preview
Definition 11.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Definition 11.1.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1✓L∃∀N

The forgetful functor preserves products. The dimension of a product of dimensioned kinds is the product of their dimensions, \dim (a \cdot b) = \dim a \cdot \dim b, the SI exponents adding — ordinary dimensional bookkeeping, proved as a law. This is the dimension-component of functoriality, stated for the provisional product; the full interaction-algebra version is the homomorphism capstone below. Builds on the dimension map.

Lean code for Theorem11.1.2●1 theorem
  • theoremdefined in PropertyKindCalculus/Dimension.lean
    complete
    theorem PropertyKindCalculus.DimensionedKind.toDimension_times {B : Type}
      [DimensionBasis B] (a b : PropertyKindCalculus.DimensionedKind B) :
      (a.times b).toDimension = a.toDimension * b.toDimension
    theorem PropertyKindCalculus.DimensionedKind.toDimension_times
      {B : Type} [DimensionBasis B]
      (a b :
        PropertyKindCalculus.DimensionedKind
          B) :
      (a.times b).toDimension =
        a.toDimension * b.toDimension
    **Coherence (multiplicativity).** `dim` carries products to products — it is
    a homomorphism into the multiplicative `Dimension` group. 
Proof for Theorem 11.1.2
uses 0

The provisional product multiplies the dimension components (PhysLib's Dimension.mul, i.e. exponent addition), so the equation holds by rfl. The unit law \dim 1 = 1 holds likewise.

Theorem11.1.3
Group: A kind is given a dimension by forgetting everything but its SI base-quantity exponents. To keep the core spine Mathlib-free, the dimension is paired with the kind in this separate library rather than stored on KindOfProperty : an application declares a dimensioned kind with a def , exactly as it declares a kind. The forgetful map then drops the kind identity and keeps the dimension. (2)
Group member previews
Preview
Definition 11.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Theorem 11.1.2
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 5
Reverse dependency previews
Preview
Theorem 7.4.1
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
✓L∃∀N

Dimensional coherence — \dim is a homomorphism over the full interaction algebra. Whenever the interaction algebra says k_1 and k_2 combine to k_3, their dimensions combine the same way: \mathrm{KMul}\ k_1\ k_2\ k_3 \;\Longrightarrow\; \dim k_3 = \dim k_1 \cdot \dim k_2. This is the theorem that licenses forgetting to the dimension layer without losing soundness: a kind-level product is always dimensionally consistent. It upgrades the proved multiplicativity from the provisional product to Flater's gated kind product.

Lean code for Theorem11.1.3●1 theorem
  • theoremdefined in PropertyKindCalculus/Interaction.lean
    complete
    theorem PropertyKindCalculus.InteractionAlgebra.dim_homomorphism
      (A : PropertyKindCalculus.InteractionAlgebra)
      {a b c : PropertyKindCalculus.DimensionedKind LTMCTDimensionBase}
      (h : A.KMul a b c) : c.toDimension = a.toDimension * b.toDimension
    theorem PropertyKindCalculus.InteractionAlgebra.dim_homomorphism
      (A :
        PropertyKindCalculus.InteractionAlgebra)
      {a b c :
        PropertyKindCalculus.DimensionedKind
          LTMCTDimensionBase}
      (h : A.KMul a b c) :
      c.toDimension =
        a.toDimension * b.toDimension
    **Dimensional coherence — `dim` is a homomorphism over the interaction algebra
    (R7).** Whenever the algebra sanctions `a × b = c`, forgetting to the dimension
    layer turns the kind product into PhysLib's `Dimension` product,
    `dim c = dim a · dim b`. This is the theorem that licenses *forgetting* to the
    dimension layer without losing soundness — and, read the other way, why matching
    dimensions are necessary but never sufficient: the kind relation, not `dim`, decides
    legality. 
Proof for Theorem 11.1.3
uses 0

Realized in the Interaction module as InteractionAlgebra.dim_homomorphism. Coherence is a well-formedness field of every InteractionAlgebra, so the homomorphism is its projection: any algebra that can be formed at all already guarantees \dim k_3 = \dim k_1 \cdot \dim k_2 on every sanctioned edge. The content sits in the worked algebra, where the obligation is discharged by the Dimension-group computation, case by case.