The core module lean/FrcCore/Theme/Hadrons.lean — the substrate from first principles, no Mathlib, no axioms (the modules in order: Nat, Pigeonhole, Shell, Series, Cycle, Ring, FrameCore, Frame, Parity, Transform, Orbit, Sum, Theme/Projective, Theme/Fourier, Theme/Fractional, Theme/Lifts, Theme/Dichotomy, Theme/Rotations, Theme/Heisenberg, Theme/Spectra, Theme/Exclusivity, Theme/Quadratic, Theme/Extension, Theme/Tally, Theme/Numbers, Theme/Logic, Theme/SecondOrder, Theme/Formation, Theme/Field, Theme/Foundation, Theme/Drive, Theme/Carrier, Theme/Subject, Theme/Pair, Theme/Hopf, Theme/Symbol, Theme/Gravity, Theme/Quantum, Theme/Unitary, Theme/Interactions, Theme/Fields, Theme/Horizon, Theme/Zeros, Theme/Shift, Theme/Lattice, Theme/Drift, Theme/Observation, Theme/Interference, Theme/Composite, Theme/Ladder, Theme/Flavour, Theme/Dark, Meridian, Fourier, Algebra, Epi, Dimensions, Poly, Quaternion, Causality, Representation, Reductio, Godel, Finitism, Geometry, Complex, Instances, Rh, Entropy, Dirac, Gravity, S13, Fields, Qm, Pnp, Flavour, Dark, Keys/Frame, Keys/Extension, Keys/Projective, Keys/Fourier, Keys/Numbers, Keys/Logic, Keys/Foundation, Keys/Carrier, Keys/Subject, Keys/Gravity, Keys/Quantum, Keys/Interactions, Keys/Horizon, Keys/Flavour, Keys/Dark, Theme/Hadrons, Hadrons, Keys/Hadrons): 19 theorems (53 definitions): 19 with no axioms, 0 at tier 1 (propext, Quot.sound), 0 at tier 2 (Classical.choice), 0 red; the mark's colour is the library's (green, the core; red a proof the gate rejects), each declaration's axioms on hover; the small plain glyph marks a definition (no proof, no axioms; on the ledger pages the plain glyph is instead a module cited as a whole). Each declaration is anchored; the ledger predicates cite them by name. ▶ open in Lean Live · axioms.log.
1import FrcCore.Theme.Fields2import FrcCore.Ring34/-!5# FrcCore.Theme.Hadrons — the hadrons theme (35-hadrons, 19 October 2026)67The exact content of *Ground-State Light Hadron Spectroscopy over Finite Substrate* (tree `35-hadrons-20260629`) above the8interactions theme's colour sector over `𝔽₄` (`Theme/Fields.lean`), as `frc/hadrons.py` and `frc/ledgers/p35_hadrons.py`9compute it: the colour group `SU(3, 2)` built by orthonormal frames and its centre (`colour_group`, 35:C1), the colourless10content `(1, 0, 0, 1)` of the exterior algebra `Λ•(𝟛)` (`colourless_content`, 35:C15), the meson contraction11(`meson_invariant`, 35:C18), the Weyl constant terms of `SU(3)` — the representation content behind the character sums12(`adjoint_channel`, 35:C14) and the flavour cube `𝟛⊗𝟛⊗𝟛 = 𝟙𝟘 ⊕ 𝟠 ⊕ 𝟠 ⊕ 𝟙` (`flavour_cube`, 35:P5) — the Casimir, spin13and charge arithmetic with cleared denominators (`colour_factor`, `spin_pattern`, `sigma_lambda`, `charge_structure`,1435:C4, C5, C9, C13), the flavour and isospin relations as ring identities on the shell (`gmo`, `spacing`,15`third_difference`, `hyperfine_links`, `coleman_glashow`, `vector_spacing`, `lambda_n_gap`, `spin_split`), the admissible16shells (`admissible_shells`, 35:C20) and Sturm's count of the finite confinement operator (`airy_sturm`, 35:C16).17Kernel-decided throughout (`decide +kernel`); no axioms (`check_core_axioms.py`).18-/1920namespace FRC.Hadrons2122open FRC.Shell FRC.Shell.Frame FRC.Interactions FRC.Interactions.F42324/-! ## The colour group `SU(3, 2)` over `𝔽₄` by frames (35:C1, X2) -/2526/-- The four elements of `𝔽₄`. -/27def f4 : List F4 := [z, o, w, w2]2829/-- The `64` vectors of `𝔽₄³`, as lists of three entries. -/30
def vecs : List (List F4) := f4.flatMap fun a => f4.flatMap fun b => f4.map fun c => [a, b, c]3132/-- The Hermitian form `u†v = Σ ū_i v_i`. -/33
def hv (u v : List F4) : F4 :=34 conj (fget u 0) * fget v 0 + conj (fget u 1) * fget v 1 + conj (fget u 2) * fget v 23536/-- The unit vectors `v†v = 1`: `q²(q³ + 1) = 36` of them at `q = 2`. -/37
def unitv : List (List F4) := vecs.filter (fun v => hv v v == o)3839/-- The matrix with the given columns. -/40
def cols (c₁ c₂ c₃ : List F4) : M :=41 [fget c₁ 0, fget c₂ 0, fget c₃ 0, fget c₁ 1, fget c₂ 1, fget c₃ 1, fget c₁ 2, fget c₂ 2, fget c₃ 2]4243/-- `U(3, 2)`: the orthonormal frames, column by column. -/44
def u3 : List M := unitv.flatMap fun c₁ =>45 (unitv.filter (fun v => hv c₁ v == z)).flatMap fun c₂ =>46 (unitv.filter (fun v => hv c₁ v == z && hv c₂ v == z)).map fun c₃ => cols c₁ c₂ c₃4748/-- `SU(3, 2)`: the frames of determinant one. -/49
def su3 : List M := u3.filter (fun g => det g == o)5051/-- The action on a vector. -/52
def mv (A : M) (v : List F4) : List F4 :=53 [at' A 0 0 * fget v 0 + at' A 0 1 * fget v 1 + at' A 0 2 * fget v 2,54 at' A 1 0 * fget v 0 + at' A 1 1 * fget v 1 + at' A 1 2 * fget v 2,55 at' A 2 0 * fget v 0 + at' A 2 1 * fget v 1 + at' A 2 2 * fget v 2]5657/-- The entrywise conjugate: the action on `Λ²(𝟛) ≅ 𝟛̄` (for `g†g = I`, `Λ²g = (g⁻¹)ᵀ det g = ḡ`). -/58
def conjm (A : M) : M := A.map conj5960
def zero3 : List F4 := [z, z, z]6162/-- The diagonal drive `diag(1, w, w²)` and the permutation `U1` of `Theme/Fields.lean`. -/63
def D1 : M := [o, z, z, z, w, z, z, z, w2]64
def U1 : M := [z, z, o, z, o, z, o, z, z]6566/-- 35:C1, 35:X2 — the colour group built exactly: `36` unit vectors, `648` orthonormal frames (`U(3, 2)`), `216` of67determinant one (`SU(3, 2)`), every element unitary (`g†g = I`) with `det g = 1`; the triality centre: the elements68commuting with `D1` and `U1` are exactly the three scalars `I, wI, w²I`, and each scalar commutes with the whole group.69`su3_centre` of the interactions theme shows the scalars central; here the centre is no larger. -/70
theorem colour_group :71 unitv.length = 36 ∧ u3.length = 648 ∧ su3.length = 216 ∧72 (su3.all (fun g => mm (dg g) g == one && det g == o)) = true ∧73 (su3.filter (fun g => mm g D1 == mm D1 g && mm g U1 == mm U1 g)).length = 3 ∧74 ((su3.filter (fun g => mm g D1 == mm D1 g && mm g U1 == mm U1 g)).all75 (fun g => g == one || g == scal w || g == scal w2)) = true ∧76 ([o, w, w2].all (fun x => su3.all (fun g => mm (scal x) g == mm g (scal x)))) = true := by77 decide +kernel7879/-- The nonzero vectors fixed by every element, on `𝟛` and on `Λ²(𝟛) ≅ 𝟛̄`. -/80
def fixed1 : List (List F4) := vecs.filter (fun v => !(v == zero3) && su3.all (fun g => mv g v == v))81
def fixed2 : List (List F4) := vecs.filter (fun v => !(v == zero3) && su3.all (fun g => mv (conjm g) v == v))8283/-- 35:C15, 35:X1, 35:X3, 35:X7, 35:P4 — the colourless content of `Λ•(𝟛)` is `(1, 0, 0, 1)`: the vacuum; no nonzero vector of `𝟛`84fixed by the group (a single quark has residue `0`); none of `Λ²(𝟛) ≅ 𝟛̄` (the diquark); `Λ³(𝟛) = det`, fixed by every85element (`det g = 1`), the one-dimensional invariant — the baryon at `k = N = 3`, residue `1`. The dimensions86`1, 3, 3, 1` sum to `8 = 2³`. -/87
theorem colourless_content :88 fixed1.length = 0 ∧ fixed2.length = 0 ∧ (su3.all (fun g => det g == o)) = true ∧89 [1, fixed1.length, fixed2.length, 1] = [1, 0, 0, 1] ∧ 1 + 3 + 3 + 1 = 2 ^ 3 := by90 decide +kernel9192/-- 35:C18, 35:X12 — the meson contraction: `g†g = I` for every element is the invariance of the Hermitian form on the basis pairs,93`⟨g e_i, g e_j⟩ = (g†g)_{ij} = δ_{ij}`, so the `q q̄` contraction `v^a w̄_a` is the one-dimensional invariant of94`𝟛 ⊗ 𝟛̄`; the triality of `q q̄` is `1 + 2 ≡ 0`, of `qqq` is `3 ≡ 0` (mod 3). -/95
theorem meson_invariant :96 (su3.all (fun g => mm (dg g) g == one && det g == o)) = true ∧ (1 + 2) % 3 = 0 ∧ 3 % 3 = 0 ∧ 1 % 3 = 1 ∧ 2 % 3 = 2 :=97 ⟨colour_group.2.2.2.1, by decide⟩9899/-! ## The Weyl constant terms of `SU(3)`: the representation content (35:C14, P5) -/100101/-- Laurent polynomials in the torus variables `z1, z2` (with `z3 = 1/(z1z2)`): terms `(e₁, e₂, coefficient)`. -/102
abbrev LP := List (Int × Int × Int)103104
def lpAdd1 (t : Int × Int × Int) : LP → LP105 | [] => if t.2.2 == 0 then [] else [t]106 | u :: l => if u.1 == t.1 && u.2.1 == t.2.1 then107 (if u.2.2 + t.2.2 == 0 then l else (u.1, u.2.1, u.2.2 + t.2.2) :: l) else u :: lpAdd1 t l108109
def lpAdd (p q : LP) : LP := q.foldl (fun acc t => lpAdd1 t acc) p110
def lpMul (p q : LP) : LP :=111 p.foldl (fun acc t => q.foldl (fun acc₂ u => lpAdd1 (t.1 + u.1, t.2.1 + u.2.1, t.2.2 * u.2.2) acc₂) acc) []112
def lpNeg (p : LP) : LP := p.map (fun t => (t.1, t.2.1, -t.2.2))113
def lpPow (p : LP) : Nat → LP114 | 0 => [(0, 0, 1)]115 | n + 1 => lpMul (lpPow p n) p116117/-- The constant term. -/118
def ct (p : LP) : Int := (p.filter (fun t => t.1 == 0 && t.2.1 == 0)).foldl (fun s t => s + t.2.2) 0119120
def z1 : LP := [(1, 0, 1)]121
def z2 : LP := [(0, 1, 1)]122
def z3 : LP := [(-1, -1, 1)]123/-- The fundamental character `χ = z1 + z2 + z3` and its conjugate. -/124
def chi : LP := lpAdd (lpAdd z1 z2) z3125
def chib : LP := lpAdd (lpAdd [(-1, 0, 1)] [(0, -1, 1)]) [(1, 1, 1)]126/-- The Weyl denominator `|Δ|² = Π_{i<j} (z_i − z_j)(z̄_i − z̄_j)`. -/127
def weyl : LP :=128 let d := lpMul (lpMul (lpAdd z1 (lpNeg z2)) (lpAdd z1 (lpNeg z3))) (lpAdd z2 (lpNeg z3))129 let db := lpMul (lpMul (lpAdd [(-1, 0, 1)] (lpNeg [(0, -1, 1)])) (lpAdd [(-1, 0, 1)] (lpNeg [(1, 1, 1)])))130 (lpAdd [(0, -1, 1)] (lpNeg [(1, 1, 1)]))131 lpMul d db132133/-- `6 E[χ^a χ̄^b]`: the constant term of `|Δ|² χ^a χ̄^b` (the Weyl integration formula; the Haar moment is one sixth). -/134
def moment6 (a b : Nat) : Int := ct (lpMul (lpMul weyl (lpPow chi a)) (lpPow chib b))135136/-- 35:C14, 35:C6, 35:C23 — the representation content behind the character sums, as Haar moments by the Weyl constant term:137`E[χχ̄] = 1` (`𝟛 ⊗ 𝟛̄` has one singlet), `E[χ²] = 0` (`𝟛 ⊗ 𝟛` has none), `E[χ²χ̄²] − E[χχ̄] = 1` (the adjoint `𝟠 = χχ̄ − 1`138sits in `𝟛 ⊗ 𝟛̄` once), `E[χ³χ̄] − E[χ²] = 0` (`𝟠` is absent from `𝟛 ⊗ 𝟛`). The single-plaquette coefficients139`c₁ = β/(2N²) = β/18` and `c_adj = β²/(2N)² = β²/36` at `N = 3`. -/140
theorem adjoint_channel :141 moment6 1 1 = 6 * 1 ∧ moment6 2 0 = 0 ∧ moment6 2 2 - moment6 1 1 = 6 * 1 ∧ moment6 3 1 - moment6 2 0 = 0 ∧142 2 * 3 ^ 2 = 18 ∧ (2 * 3) ^ 2 = 36 := by143 decide +kernel144145/-- 35:P5 — the flavour cube `𝟛 ⊗ 𝟛 ⊗ 𝟛 = 𝟙𝟘 ⊕ 𝟠 ⊕ 𝟠 ⊕ 𝟙`: one singlet (`E[χ³] = 1`), the adjoint twice146(`E[χ⁴χ̄] − E[χ³] = 2`), the squared multiplicities summing to `E[χ³χ̄³] = 6 = 1 + 2² + 1`, the dimensions147`27 = 10 + 8 + 8 + 1`; the symmetric spin–flavour cube `Sym³(𝟞)` has `8·7·6/3! = 56 = 10 · 4 + 8 · 2` states:148no multiplet beyond the `𝟠` and the `𝟙𝟘` at leading order. -/149
theorem flavour_cube :150 moment6 3 0 = 6 * 1 ∧ moment6 4 1 - moment6 3 0 = 6 * 2 ∧ moment6 3 3 = 6 * (1 + 2 ^ 2 + 1) ∧151 3 ^ 3 = 10 + 8 + 8 + 1 ∧ 8 * 7 * 6 / (3 * 2 * 1) = 56 ∧ 10 * 4 + 8 * 2 = 56 := by152 decide +kernel153154/-! ## The Casimir, spin and charge arithmetic (35:C4, C5, C8, C9, C13, X6, X8, X9) -/155156/-- 35:C4, 35:X6 — the colour factor of the singlet with denominators cleared: `2N C₂(𝟛) = N² − 1` gives `6 C₂ = 8`157(`C₂ = 4/3`); `2 Σ_{i<j} T_i·T_j = C₂(𝟙) − 3 C₂(𝟛)` gives `12 Σ T·T = −24` (`−2`); `λ = 2T` gives `Σ λ·λ = −8`,158`−8/3` per pair. -/159
theorem colour_factor :160 (3 * 3 - 1 : Int) = 8 ∧ 2 * 3 * 4 = 3 * 8 ∧ (0 - 3 * 8 : Int) = -24 ∧ (-24 : Int) / 12 = -2 ∧ 4 * (-2 : Int) = -8 := by161 decide162163/-- 35:C5, 35:X6, 35:P3 — the spin pattern with denominators cleared: for `S = n/2`, `8 g_spin = 8[½S(S+1) − 9/8] = n(n+2) − 9`:164the octet (`n = 1`) `−6/8 = −3/4`, the decuplet (`n = 3`) `6/8 = 3/4`, the separation `12/8 = 3/2`; the eigenvalues of165`Σ(λ·λ)(S·S)` on the singlet, `(−8/3) g`: `(−8)(−6) = 48 = 2 · 24` (`+2`) and `(−8)(6) = −48` (`−2`). -/166
theorem spin_pattern :167 (1 * (1 + 2) - 9 : Int) = -6 ∧ (3 * (3 + 2) - 9 : Int) = 6 ∧ (6 - (-6) : Int) = 12 ∧168 (-8) * (-6 : Int) = 2 * 24 ∧ (-8) * (6 : Int) = -2 * 24 := by169 decide170171/-- 35:C9, 35:X9 — the `Σ`–`Λ` fine structure: the light pair's `S_u·S_d` is `−3/4` at spin `0` and `+1/4` at spin `1`172(`4 S·S = 2S(S+1) − 3`: `−3`, `+1`); the strange quark's coupling to the pair, `2 S_s·(S_u + S_d) = S(S+1) − S_ud(S_ud+1) − 3/4`173at total spin `½` (`4S(S+1) = 3`): `0` for the spin-`0` pair, `−1` for the spin-`1` pair (`8 S_s·S_pair = 3 − 4S_ud(S_ud+1) − 3`: `0`, `−8`). So174`M_Σ − M_Λ = a_ll(1/4 + 3/4) + a_ls(−1 − 0) = a_ll − a_ls`. -/175
theorem sigma_lambda :176 (2 * 0 * 1 - 3 : Int) = -3 ∧ (2 * 1 * 2 - 3 : Int) = 1 ∧ (1 - (-3) : Int) = 4 ∧177 (3 - 4 * (0 * 1) - 3 : Int) = 0 ∧ (3 - 4 * (1 * 2) - 3 : Int) = -8 := by178 decide179180/-- 35:C8, 35:C13, 35:X8, 35:C21 — the charge structure with `9Q²` integral (`Q_u = 2/3`, `Q_d = −1/3`): one-body181`9 Σ Q² = 4 + 4 + 1 = 9` for the proton (`1`) and `4 + 1 + 1 = 6` for the neutron (`2/3`); two-body182`9 Σ_{i<j} Q_iQ_j = 4 − 2 − 2 = 0` for the proton and `−2 − 2 + 1 = −3` for the neutron (`−1/3`); both differences183`p − n` positive (`+3`, `+3`, that is `+1/3` each): the electromagnetic term makes the proton heavier. -/184
theorem charge_structure :185 (4 + 4 + 1 : Int) = 9 ∧ (4 + 1 + 1 : Int) = 6 ∧ (2 * 2 + 2 * (-1) + 2 * (-1) : Int) = 0 ∧186 (2 * (-1) + 2 * (-1) + (-1) * (-1) : Int) = -3 ∧ (9 - 6 : Int) = 3 ∧ (0 - (-3) : Int) = 3 ∧ 0 < (3 : Int) := by187 decide188189/-! ## The flavour and isospin relations as ring identities on the shell (35:C2, C3, C7, C11, C12, C16, C17, C18)190191Every mass is a named expression in the shell's ring; a relation is `RE.sound`'s normalisation of both sides, so it holds on192every shell for every value of the parameters. Coefficients are written as repeated sums (`a + a + a` for `3a`), the dark193theme's convention, since a numeral on the shell is not definitionally a sum. -/194195variable {p : Nat} [Pos p]196197/-! ### The octet operator `M = M₀ + aY + 2c[I(I+1) − Y²/4]` (`b = 2c`, so the halves are integral) -/198199/-- `N`: `Y = 1`, `I = 1/2`: `M₀ + a + b/2`. -/200
def octN (m a c : Shell p) : Shell p := m + a + c201202/-- `Λ`: `Y = 0`, `I = 0`: `M₀`. -/203
def octL (m _a _c : Shell p) : Shell p := m204205/-- `Σ`: `Y = 0`, `I = 1`: `M₀ + 2b`. -/206
def octS (m _a c : Shell p) : Shell p := m + (c + c + c + c)207208/-- `Ξ`: `Y = −1`, `I = 1/2`: `M₀ − a + b/2`. -/209
def octX (m a c : Shell p) : Shell p := m + -a + c210211/-- 35:C2, 35:X4, 35:P1 — Gell-Mann–Okubo as a ring identity: `2N + 2Ξ − 3Λ − Σ = 0` for every `M₀, a, c`; the scale and the breaking parameters cancel. -/212
theorem gmo (m a c : Shell p) :213 octN m a c + octN m a c + (octX m a c + octX m a c) + -(octL m a c + octL m a c + octL m a c) + -octS m a c = 0 :=214 RE.sound (look [m, a, c]) (.add (.add (.add (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.add (.add (.var 0) (.var 1)) (.var 2))) (.add (.add (.add (.var 0) (.neg (.var 1))) (.var 2)) (.add (.add (.var 0) (.neg (.var 1))) (.var 2)))) (.neg (.add (.add (.var 0) (.var 0)) (.var 0)))) (.neg (.add (.var 0) (.add (.add (.add (.var 2) (.var 2)) (.var 2)) (.var 2))))) .zero (by decide +kernel)215216/-! ### The decuplet at first order, `M = α + β n_s` -/217218/-- `Δ`, `n_s = 0`. -/219
def decD (m _b : Shell p) : Shell p := m220221/-- `Σ*`, `n_s = 1`. -/222
def decSs (m b : Shell p) : Shell p := m + b223224/-- `Ξ*`, `n_s = 2`. -/225
def decXs (m b : Shell p) : Shell p := m + b + b226227/-- `Ω`, `n_s = 3`. -/228
def decO (m b : Shell p) : Shell p := m + b + b + b229230/-- 35:C3, 35:X5, 35:P2 — decuplet equal spacing as a ring identity: the two second differences `Δ − 2Σ* + Ξ*` and `Σ* − 2Ξ* + Ω` vanish for every `α, β`. -/231
theorem spacing (m b : Shell p) :232 decD m b + -(decSs m b + decSs m b) + decXs m b = 0 ∧233 decSs m b + -(decXs m b + decXs m b) + decO m b = 0 :=234 ⟨RE.sound (look [m, b]) (.add (.add (.var 0) (.neg (.add (.add (.var 0) (.var 1)) (.add (.var 0) (.var 1))))) (.add (.add (.var 0) (.var 1)) (.var 1))) .zero (by decide +kernel),235 RE.sound (look [m, b]) (.add (.add (.add (.var 0) (.var 1)) (.neg (.add (.add (.add (.var 0) (.var 1)) (.var 1)) (.add (.add (.var 0) (.var 1)) (.var 1))))) (.add (.add (.add (.var 0) (.var 1)) (.var 1)) (.var 1))) .zero (by decide +kernel)⟩236237/-! ### The linear-seed pairwise-hyperfine model, `A_ij = A (m/m_i)(m/m_j)`, `r = m/m_s`, with `A = 4a` so that the quarter238correlators `±1/4`, `−3/4` are integral: the decuplet pairs `+1/4`, the octet as in `Theme/Hadrons`'s `sigma_lambda` -/239240/-- `Δ = M₀ + 3A/4`. -/241
def hfD (m _d a _r : Shell p) : Shell p := m + (a + a + a)242243/-- `Σ* = M₀ + d + (A/4)(1 + 2r)`. -/244
def hfSs (m d a r : Shell p) : Shell p := m + d + a + (a * r + a * r)245246/-- `Ξ* = M₀ + 2d + (A/4)(2r + r²)`. -/247
def hfXs (m d a r : Shell p) : Shell p := m + d + d + (a * r + a * r) + a * r * r248249/-- `Ω = M₀ + 3d + 3Ar²/4`. -/250
def hfO (m d a r : Shell p) : Shell p := m + d + d + d + (a * r * r + a * r * r + a * r * r)251252/-- `N = M₀ − 3A/4`. -/253
def hfN (m _d a _r : Shell p) : Shell p := m + -(a + a + a)254255/-- `Λ = M₀ + d − 3A/4` (the `ud` pair at spin `0`, the strange quark decoupled). -/256
def hfL (m d a _r : Shell p) : Shell p := m + d + -(a + a + a)257258/-- `Σ = M₀ + d + A(1/4 − r)`. -/259
def hfS (m d a r : Shell p) : Shell p := m + d + a + -(a * r + a * r + a * r + a * r)260261/-- `Ξ = M₀ + 2d + A(r²/4 − r)`. -/262
def hfX (m d a r : Shell p) : Shell p := m + d + d + a * r * r + -(a * r + a * r + a * r + a * r)263264/-- 35:C11, 35:P8 — the decuplet third difference vanishes identically in the model: `Δ − 3Σ* + 3Ξ* − Ω = 0` for every `M₀, d, A, r`. -/265
theorem third_difference (m d a r : Shell p) :266 hfD m d a r + -(hfSs m d a r + hfSs m d a r + hfSs m d a r) + (hfXs m d a r + hfXs m d a r + hfXs m d a r) + -hfO m d a r = 0 :=267 RE.sound (look [m, d, a, r]) (.add (.add (.add (.add (.var 0) (.add (.add (.var 2) (.var 2)) (.var 2))) (.neg (.add (.add (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3)))) (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3))))) (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3))))))) (.add (.add (.add (.add (.add (.add (.var 0) (.var 1)) (.var 1)) (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3)))) (.mul (.mul (.var 2) (.var 3)) (.var 3))) (.add (.add (.add (.add (.var 0) (.var 1)) (.var 1)) (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3)))) (.mul (.mul (.var 2) (.var 3)) (.var 3)))) (.add (.add (.add (.add (.var 0) (.var 1)) (.var 1)) (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3)))) (.mul (.mul (.var 2) (.var 3)) (.var 3))))) (.neg (.add (.add (.add (.add (.var 0) (.var 1)) (.var 1)) (.var 1)) (.add (.add (.mul (.mul (.var 2) (.var 3)) (.var 3)) (.mul (.mul (.var 2) (.var 3)) (.var 3))) (.mul (.mul (.var 2) (.var 3)) (.var 3)))))) .zero (by decide +kernel)268269/-- 35:C12 — the two octet–decuplet hyperfine links, parameter-free: `3(Σ − Λ) = 2[(Δ − N) − (Σ* − Σ)]` and `(Σ* − Σ) − (Ξ* − Ξ) = 0`. -/270
theorem hyperfine_links (m d a r : Shell p) :271 hfS m d a r + -hfL m d a r + (hfS m d a r + -hfL m d a r) + (hfS m d a r + -hfL m d a r) = hfD m d a r + -hfN m d a r + -(hfSs m d a r + -hfS m d a r) + (hfD m d a r + -hfN m d a r + -(hfSs m d a r + -hfS m d a r)) ∧272 hfSs m d a r + -hfS m d a r + -(hfXs m d a r + -hfX m d a r) = 0 :=273 ⟨RE.sound (look [m, d, a, r]) (.add (.add (.add (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.neg (.add (.add (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))))) (.neg (.add (.add (.var 0) (.var 1)) (.neg (.add (.add (.var 2) (.var 2)) (.var 2)))))) (.add (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.neg (.add (.add (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))))) (.neg (.add (.add (.var 0) (.var 1)) (.neg (.add (.add (.var 2) (.var 2)) (.var 2))))))) (.add (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.neg (.add (.add (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))))) (.neg (.add (.add (.var 0) (.var 1)) (.neg (.add (.add (.var 2) (.var 2)) (.var 2))))))) (.add (.add (.add (.add (.var 0) (.add (.add (.var 2) (.var 2)) (.var 2))) (.neg (.add (.var 0) (.neg (.add (.add (.var 2) (.var 2)) (.var 2)))))) (.neg (.add (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3)))) (.neg (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.neg (.add (.add (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))))))))) (.add (.add (.add (.var 0) (.add (.add (.var 2) (.var 2)) (.var 2))) (.neg (.add (.var 0) (.neg (.add (.add (.var 2) (.var 2)) (.var 2)))))) (.neg (.add (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3)))) (.neg (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.neg (.add (.add (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3)))))))))) (by decide +kernel),274 RE.sound (look [m, d, a, r]) (.add (.add (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3)))) (.neg (.add (.add (.add (.var 0) (.var 1)) (.var 2)) (.neg (.add (.add (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))))))) (.neg (.add (.add (.add (.add (.add (.var 0) (.var 1)) (.var 1)) (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3)))) (.mul (.mul (.var 2) (.var 3)) (.var 3))) (.neg (.add (.add (.add (.add (.var 0) (.var 1)) (.var 1)) (.mul (.mul (.var 2) (.var 3)) (.var 3))) (.neg (.add (.add (.add (.mul (.var 2) (.var 3)) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))) (.mul (.var 2) (.var 3))))))))) .zero (by decide +kernel)⟩275276/-! ### Isospin, the vector nonet, the gap and the split -/277278/-- 35:C7, 35:X10, 35:P6 — Coleman–Glashow as a one-body identity: counting the `d − u` content, `n − p = δ`, `Ξ⁻ − Ξ⁰ = δ`, `Σ⁻ − Σ⁺ = 2δ`, so `(n − p) + (Ξ⁻ − Ξ⁰) − (Σ⁻ − Σ⁺) = 0` for every one-body unit `δ`. -/279
theorem coleman_glashow (δ : Shell p) :280 δ + δ + -(δ + δ) = 0 :=281 RE.sound (look [δ]) (.add (.add (.var 0) (.var 0)) (.neg (.add (.var 0) (.var 0)))) .zero (by decide +kernel)282283/-- `ρ`, `n_s = 0`: `M = a + b n_s`. -/284
def vecRho (a _b : Shell p) : Shell p := a285286/-- `K*`, `n_s = 1`. -/287
def vecKs (a b : Shell p) : Shell p := a + b288289/-- `φ`, `n_s = 2`. -/290
def vecPhi (a b : Shell p) : Shell p := a + b + b291292/-- 35:C18, 35:X12, 35:P9 — the vector-nonet equal spacing as a ring identity: `2K* − ρ − φ = 0` for every `a, b`. -/293
theorem vector_spacing (a b : Shell p) :294 vecKs a b + vecKs a b + -vecRho a b + -vecPhi a b = 0 :=295 RE.sound (look [a, b]) (.add (.add (.add (.add (.var 0) (.var 1)) (.add (.var 0) (.var 1))) (.neg (.var 0))) (.neg (.add (.add (.var 0) (.var 1)) (.var 1)))) .zero (by decide +kernel)296297/-- `M_Λ = 2m_l + m_s − 3u` with `v_ll = 4u` (the correlator sum `−3/4`). -/298
def massL (l s u : Shell p) : Shell p := l + l + s + -(u + u + u)299300/-- `M_N = 3m_l − 3u`, the same hyperfine. -/301
def massN (l _s u : Shell p) : Shell p := l + l + l + -(u + u + u)302303/-- 35:C16, 35:P11, 35:P10 — the Λ–N gap is the strange constituent excess: `M_Λ − M_N = m_s − m_l` for every `l, s, u`, the hyperfine cancelling. -/304
theorem lambda_n_gap (l s u : Shell p) :305 massL l s u + -massN l s u = s + -l :=306 RE.sound (look [l, s, u]) (.add (.add (.add (.add (.var 0) (.var 0)) (.var 1)) (.neg (.add (.add (.var 2) (.var 2)) (.var 2)))) (.neg (.add (.add (.add (.var 0) (.var 0)) (.var 0)) (.neg (.add (.add (.var 2) (.var 2)) (.var 2)))))) (.add (.var 1) (.neg (.var 0))) (by decide +kernel)307308/-- `M_N/√σ = 3λ_l − 3f` with `λ_hf = 4f`. -/309
def splitN (l f : Shell p) : Shell p := l + l + l + -(f + f + f)310311/-- `M_Δ/√σ = 3λ_l + 3f`. -/312
def splitD (l f : Shell p) : Shell p := l + l + l + (f + f + f)313314/-- 35:C17, 35:C19, 35:C16, 35:P10 — the exact spin split inverts: `M_N + M_Δ = 6λ_l` and `M_Δ − M_N = 6f = (3/2)λ_hf`, so `λ_l = (M_N + M_Δ)/6` and `λ_hf = (2/3)(M_Δ − M_N)`. -/315
theorem spin_split (l f : Shell p) :316 splitN l f + splitD l f = l + l + l + l + l + l ∧317 splitD l f + -splitN l f = f + f + f + f + f + f :=318 ⟨RE.sound (look [l, f]) (.add (.add (.add (.add (.var 0) (.var 0)) (.var 0)) (.neg (.add (.add (.var 1) (.var 1)) (.var 1)))) (.add (.add (.add (.var 0) (.var 0)) (.var 0)) (.add (.add (.var 1) (.var 1)) (.var 1)))) (.add (.add (.add (.add (.add (.var 0) (.var 0)) (.var 0)) (.var 0)) (.var 0)) (.var 0)) (by decide +kernel),319 RE.sound (look [l, f]) (.add (.add (.add (.add (.var 0) (.var 0)) (.var 0)) (.add (.add (.var 1) (.var 1)) (.var 1))) (.neg (.add (.add (.add (.var 0) (.var 0)) (.var 0)) (.neg (.add (.add (.var 1) (.var 1)) (.var 1)))))) (.add (.add (.add (.add (.add (.var 1) (.var 1)) (.var 1)) (.var 1)) (.var 1)) (.var 1)) (by decide +kernel)⟩320321322/-! ## The admissible shells (35:C20, C23, X13, Z1) -/323324/-- 35:C20, 35:C23, 35:X13, 35:Z1 — the colour rank is shell-independent: on every admissible shell `Ω ≡ 5 (mod 12)`,325`3 ∣ Ω + 1` (`12k + 6 = 3(4k + 2)`); the four laboratory shells `53, 173, 389, 1373` are admissible. -/326
theorem admissible_shells :327 (∀ k : Nat, (12 * k + 5 + 1) % 3 = 0) ∧ [53, 173, 389, 1373].all (fun n => n % 12 == 5 && (n + 1) % 3 == 0) = true :=328 ⟨fun k => by329 have h : 12 * k + 5 + 1 = 3 * (4 * k + 2) + 0 := by rw [Nat.left_distrib, ← FRC.Nat.mul_assoc]330 rw [h]; exact FRC.Nat.add_mul_mod_self_left 0 (4 * k + 2) 3 (by decide), by decide⟩331332/-! ## A Sturm count of the finite confinement operator (35:C16) -/333334/-- The leading principal minors of the integer tridiagonal `M − μI`, `M = (N+1)³ T + L³ K` on `N` sites (`T` the335second-difference Laplacian, `K = diag(1, …, N)` the position; the grid `h = L/(N+1)` of `H = −u'' + x u` scaled by336`(N+1)³ h² = (N+1) L²`), by the recurrence `p_k = (M_kk − μ) p_{k−1} − c² p_{k−2}`, `c = (N+1)³`, with the running count of337sign changes along `p₀ = 1, p₁, …, p_k`: `(p_k, p_{k−1}, changes)`. -/338
def sturmAux (N L : Nat) (μ : Int) : Nat → Int × Int × Nat339 | 0 => (1, 1, 0)340 | k + 1 =>341 let (pm, pmm, acc) := sturmAux N L μ k342 let c : Int := ((N + 1) ^ 3 : Nat)343 let d : Int := 2 * c + (L ^ 3 : Nat) * (k + 1 : Nat)344 let cur := (d - μ) * pm - (if k = 0 then 0 else c * c * pmm)345 (cur, pm, if (decide (cur < 0)) != (decide (pm < 0)) then acc + 1 else acc)346347/-- Sturm's count of the eigenvalues of `M` below `μ`: the sign changes along the `N + 1` leading principal minors. An348eigenvalue `ε` of the grid operator corresponds to `μ = (N + 1) L² ε`. -/349
def sturm (N L : Nat) (μ : Int) : Nat := (sturmAux N L μ N).2.2350351/-- 35:C16 — the finite confinement operator `H^{(N)} = −u'' + x u` on `N = 200` sites of `[0, 16]`: Sturm's count of the352integer tridiagonal `201³ T + 16³ K` at `μ = 201 · 256 · ε` places exactly one eigenvalue in `(2.33, 2.34)`, one in353`(4.08, 4.09)`, one in `(5.51, 5.52)` and one in `(6.77, 6.79)`: the finite-stage spectrum sits at the decimals of the Airy354zeros to the grid's accuracy (the readout `2.338, 4.088, 5.521, 6.787` is the chart's). -/355
theorem airy_sturm :356 sturm 200 16 (201 * 256 * 233 / 100) = 0 ∧ sturm 200 16 (201 * 256 * 234 / 100) = 1 ∧357 sturm 200 16 (201 * 256 * 408 / 100) = 1 ∧ sturm 200 16 (201 * 256 * 409 / 100) = 2 ∧358 sturm 200 16 (201 * 256 * 551 / 100) = 2 ∧ sturm 200 16 (201 * 256 * 552 / 100) = 3 ∧359 sturm 200 16 (201 * 256 * 677 / 100) = 3 ∧ sturm 200 16 (201 * 256 * 679 / 100) = 4 := by360 decide +kernel361362end FRC.Hadrons363

