Dimensional analysis of physical constants: unit changes, dimensionless monomials, natural units
DefinitionVaryingConstants_unitsThis file fixes the vocabulary of dimensional analysis used throughout the mission.
We consider dimensional constants measured with respect to base units (for mechanics, : length , mass , time ). The dimension matrix records that constant has dimension . Real exponents are allowed (e.g. Gaussian units give the charge the dimension ).
- Change of units. For a vector (in practice ), the rescaled configuration is
Here is the factor by which numerical values of quantities of dimension change. 2. Positivity. A vector is positive if all its entries are . 3. Unit-invariant observable. is unit invariant if for every positive and every positive . 4. Dimensionless exponents. The subspace (the left kernel of ). 5. Power monomial. . 6. Natural units. Given chosen constants , a positive is a system of natural units for if for all . 7. Planck dimension matrix. With rows and columns :
i.e. , , .
These objects make precise the statements of Uzan's §2.1: natural units are defined by setting three independent constants to , and "only the variation of dimensionless constants can be measured".
Formalization Note Real powers are Real.rpow; positivity is not built into the vectors but carried as explicit hypotheses. is the kernel of .
import Mathlib
/-!
Dimensional analysis of physical constants (Uzan 2011, Living Rev. Relativity 14:2, §2.1).
`n` dimensional constants are measured with respect to `d` base units (for mechanics
`d = 3`: length, mass, time). The dimension matrix `D : Matrix (Fin n) (Fin d) ℝ` records
that constant `i` has dimension `∏ⱼ Uⱼ ^ D i j`. A configuration `x : Fin n → ℝ` lists the
(positive) numerical values of the constants in some system of units.
-/
namespace VaryingConstants
/-- Change of units: if every base unit `j` is rescaled so that numerical values of quantities
of dimension `Uⱼ` are multiplied by `s j > 0`, the numerical value of constant `i` is multiplied
by `∏ⱼ (s j) ^ (D i j)`. -/
noncomputable def unitRescale {n d : ℕ} (D : Matrix (Fin n) (Fin d) ℝ) (s : Fin d → ℝ)
(x : Fin n → ℝ) : Fin n → ℝ :=
fun i => x i * ∏ j, s j ^ D i j
/-- All entries of a vector are strictly positive. -/
def IsPositive {m : ℕ} (x : Fin m → ℝ) : Prop :=
∀ i, 0 < x i
/-- A real-valued function of the numerical values of the constants is *unit invariant*
(the outcome of a measurement): on positive configurations it does not change under any
change of units. -/
def IsUnitInvariant {n d : ℕ} (D : Matrix (Fin n) (Fin d) ℝ) (f : (Fin n → ℝ) → ℝ) : Prop :=
∀ x : Fin n → ℝ, IsPositive x → ∀ s : Fin d → ℝ, IsPositive s → f (unitRescale D s x) = f x
/-- Exponent vectors `a` for which the power product `∏ᵢ xᵢ ^ aᵢ` is dimensionless,
i.e. `∑ᵢ aᵢ D i j = 0` for every base unit `j`. -/
def dimensionlessExponents {n d : ℕ} (D : Matrix (Fin n) (Fin d) ℝ) :
Submodule ℝ (Fin n → ℝ) :=
LinearMap.ker (Matrix.vecMulLinear D)
/-- The power product `∏ᵢ xᵢ ^ aᵢ` (real exponents). -/
noncomputable def powerMonomial {n : ℕ} (a x : Fin n → ℝ) : ℝ :=
∏ i, x i ^ a i
/-- `s` is a system of natural units for the configuration `x` built on the constants
`e 0, …, e (d-1)`: `s` is a positive change of units after which each chosen constant
has numerical value `1`. -/
def IsNaturalUnitsFor {n d : ℕ} (D : Matrix (Fin n) (Fin d) ℝ) (e : Fin d → Fin n)
(x : Fin n → ℝ) (s : Fin d → ℝ) : Prop :=
IsPositive s ∧ ∀ j, unitRescale D s x (e j) = 1
/-- Dimension matrix of Planck's triple `(c, G, ħ)` in the base units `(L, M, T)`:
`[c] = L T⁻¹`, `[G] = L³ M⁻¹ T⁻²`, `[ħ] = L² M T⁻¹`. -/
def planckDims : Matrix (Fin 3) (Fin 3) ℝ :=
!![1, 0, -1; 3, -1, -2; 2, 1, -1]
end VaryingConstants
Read-back
What the Lean code literally says, in plain math · Aristotle (Harmonic)
Non-blind read-back. This read-back was written by the same agent that drafted the Lean statement, at the explicit request of the proposal owner. It is not an independent, blind audit and must not be treated as independent testimony; the reviewer should compare the Lean code against the source directly.
The file declares, inside the namespace VaryingConstants, the following objects (all indices range over or , and is an arbitrary real matrix; no hypothesis is placed on ).
-
Unit rescaling. For , a real vector and , the vector with entries , where the power is the real power function. Positivity of is not required by the definition; for the real power returns Mathlib's convention values (e.g. for , , and for negative bases a value defined via the complex logarithm).
-
Positive vector. is positive iff for every (vacuous when ).
-
Unit invariance. A function is unit invariant for iff for every positive and every positive , evaluated at the rescaled vector equals . Nothing is required of at non-positive arguments; no continuity or measurability is required.
-
Dimensionless exponents. The linear subspace of consisting of those with for every column .
-
Power monomial. For , the real number (real powers; convention values at non-positive ).
-
Natural units. Given , a map (not required to be injective), and : is positive and, for every , the -th entry of the rescaled vector equals .
-
Planck matrix. The fixed real matrix with rows , , .
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.