#!/usr/bin/env python3 """ PROVENANCE: PROOF Computation 170, F4's spectrum half: the alignment branch fails for the terms tested ===================================================================== \\Fref{4} asserts that the PST effective theory below M_* IS the Standard Model, so no PST mode propagates there. Half of that is a matching to observation and cannot be proved. The other half is a statement about the substrate's own spectrum, and a sharp objection stands against it that the book never answers in one place: MODAL SUBLIMATION IS A LANDAU-GINZBURG TRANSITION WITH A SOMBRERO POTENTIAL, AND GOLDSTONE'S THEOREM TURNS BROKEN CONTINUOUS SYMMETRIES INTO MASSLESS MODES. The vacuum manifold is V = S^6 in V_7, so a reader who knows the theorem expects SIX massless excitations below M_* and the Standard Model has nowhere to put them. THE OBJECTION TURNS ON WHAT P3's LOCKING MEANS, AND THE TWO READINGS DIFFER ---------------------------------------------------------------------------- sec:modal-threshold says P2 supplies tau-hat "before any vacuum exists" and that modal sublimation LOCKS psi-hat to it. That can be read two ways, and they do not agree: (A) ALIGNMENT POTENTIAL. The locking is a term in the free energy of finite strength kappa. The angular directions stay dynamical and become pseudo-Goldstones. (B) DIRECT DETERMINATION. psi-hat = tau-hat is a CONSTRAINT. The angular directions are not degrees of freedom at all. Branch (A) FAILS for the two terms tested here, and (B) is what P3's wording says. Under (B) F4's spectrum half holds in this sector. THE SCOPE OF THE FAILURE, STATED BEFORE THE RESULT RATHER THAN AFTER IT. An earlier version of this file said branch (A) was "excluded by an inequality with no free parameter" and that "no tuning escapes it". That is FALSE as a statement about alignment potentials in general, and part 2b is the counterexample: a QUARTIC locking term reverses the inequality, making the angular modes the heavy ones with a ratio unbounded as the coupling approaches its stability limit. What is established is that branch (A) fails for a LINEAR or QUADRATIC locking term, which is what the computation tests. The choice of branch (B) rests on P3's wording, not on an exclusion theorem. WHY (A) FAILS FOR THE LINEAR AND QUADRATIC TERMS -------------------------------------------------- Solving the vacuum exactly gives both eigenvalues in closed form. For the linear alignment -kappa , m_radial^2 = kappa/r + 8 b r^2, m_transverse^2 = kappa/r, so m_radial^2 - m_transverse^2 = 8 b r^2 > 0 for EVERY kappa. The angular modes are always lighter than the radial one, the ratio rising only to 1/3 as kappa -> infinity. The quadratic alignment -kappa ^2 gives m_t^2 = 2 kappa against m_r^2 = 4(a + kappa), the same inequality with the ratio saturating at 1/2. The radial mode IS the Higgs (sec:higgs), and M_* = 4 pi m_h sqrt(2/3) = 10.26 m_h. So for these two terms the six modes do not merely fail to reach M_*, they come out BELOW THE HIGGS MASS, an order of magnitude short, and raising kappa does not help because it raises both masses together while the ratio saturates below one. BUT THAT IS A PROPERTY OF THESE TERMS, NOT OF THE CLASS. The general statement is m_r^2 - m_t^2 = 4 r^2 U''(r^2) - kappa f''(r), so the sign turns on the CURVATURE of the locking term: zero for the linear one, constant for the quadratic one, and large for a quartic. Part 2b measures the quartic case, where the inequality reverses outright. WHAT (B) GIVES, MEASURED RATHER THAN ASSERTED ----------------------------------------------- Under direct determination psi = phi tau-hat, and the count below is the rank of the orbit map A -> A psi over the whole 21-dimensional so(7), not a tally of basis elements that happen to annihilate the vacuum. Six generators move the vacuum and fifteen fix it, and that is true at a GENERIC point of S^6 as well: the count is not what separates the branches. What separates them is HOW the six fail. Broken spontaneously they give Goldstones; broken explicitly by an external tau-hat they give nothing. The unbroken so(6) gives nothing either, an unbroken symmetry never does. ORDER-PARAMETER SECTOR UNDER (B): EXACTLY ONE MODE, THE RADIAL ONE, THE HIGGS. No light PST modes, so F4's spectrum half holds where the objection was aimed. AND THE SIGNATURE THEOREM IS INSENSITIVE TO THE BRANCH ------------------------------------------------------- comp 2 derives Lorentzian signature from well-posedness of the Goldstone equation, so it is fair to ask what happens to it under either branch. Nothing: Hadamard well-posedness is decided by the PRINCIPAL symbol and a mass is lower order. Verified on the dispersion relation, where above |xi| = m the massive and massless cases agree at every wavenumber. comp 2 needs hyperbolicity, not masslessness, and is more robust than its own statement claims. WHAT THIS OPENS, AND IT IS NOT SMALL -------------------------------------- sec:vacuum-angular reaches the photon through a propagating Goldstone theta of a broken U(1). Under (B) the order parameter no longer supplies one: the six angular directions are constrained rather than dynamical, and the residual so(6) FIXES the vacuum, so it is unbroken and yields no Goldstone either. So choosing (B), which F4 requires and which P3's wording says, costs the book the provenance of theta. THAT IS A NEW OPEN ITEM AND IT IS STATED AS ONE. It is narrower than what it replaces: not "does PST hide six light modes", which is settled in the negative, but "which degree of freedom carries theta, given that the order parameter's angular directions are determined". The likeliest answer is a phase that tau-hat does not fix, since tau-hat fixes a direction in V_7 and not a phase, and the book already distinguishes "the U(1) ring in the complex slice" from "the G_2-orbit 6-sphere in the full setting". This computation does NOT establish that, and does not pretend to. A "pass": six exact zeros at zero alignment and none at any nonzero alignment; the closed forms matching the measured eigenvalues; m_t < m_r in BOTH alignment forms at every kappa tested; six broken and fifteen unbroken generators at the determined vacuum, by rank; and the well-posedness pattern identical with and without a mass. """ import math import numpy as np def rule(ch="="): print(ch * 100) def potential(psi, a, b, kappa, tau): n2 = float(psi @ psi) return -a * n2 + b * n2 * n2 - kappa * float(psi @ tau) def potential_sq(psi, a, b, kappa, tau): n2 = float(psi @ psi) return -a * n2 + b * n2 * n2 - kappa * float(psi @ tau) ** 2 def hessian(psi, a, b, kappa, tau, f=potential, h=1e-5): n = len(psi) H = np.zeros((n, n)) for i in range(n): for j in range(n): ei = np.zeros(n); ei[i] = h ej = np.zeros(n); ej[j] = h H[i, j] = (f(psi + ei + ej, a, b, kappa, tau) - f(psi + ei - ej, a, b, kappa, tau) - f(psi - ei + ej, a, b, kappa, tau) + f(psi - ei - ej, a, b, kappa, tau)) / (4 * h * h) return 0.5 * (H + H.T) def vacuum_radius(a, b, kappa): """Largest real root of 4b r^3 - 2a r - kappa = 0. Exact, not descended to: a gradient descent was used first and was not converged, which showed up as a vacuum half a degree off tau-hat and a transverse eigenvalue missing the closed form by 20% at small kappa.""" roots = np.roots([4 * b, 0.0, -2 * a, -kappa]) return max(r.real for r in roots if abs(r.imag) < 1e-12) # --------------------------------------------------------------------------------- def part1(): rule() print(" PART 1. Branch (A): the alignment potential, and its spectrum") rule() a, b = 1.0, 0.25 tau = np.zeros(7); tau[0] = 1.0 print(""" V(psi) = -a|psi|^2 + b|psi|^4 - kappa , psi in V_7. kappa = 0 is the bare sombrero, SO(7) invariant, vacuum manifold S^6. Stationarity gives -a + 2b r^2 = kappa/(2r), so the transverse eigenvalue is 2(-a + 2b r^2) = kappa/r, and the radial one is kappa/r + 8 b r^2. """) print(f" {'kappa':>8} {'r_vac':>10} {'m_t^2':>13} {'kappa/r':>13}" f" {'m_r^2':>12} {'kappa/r+8br^2':>15} {'zeros':>7}") worst = 0.0 rows = [] for kappa in (0.0, 1e-3, 1e-2, 0.1, 1.0): r = vacuum_radius(a, b, kappa) ev = np.sort(np.linalg.eigvalsh(hessian(r * tau, a, b, kappa, tau))) mt, mr = kappa / r, kappa / r + 8 * b * r * r worst = max(worst, abs(ev[0] - mt), abs(ev[-1] - mr)) z = int((np.abs(ev) < 1e-6).sum()) rows.append((kappa, z)) print(f" {kappa:>8.4g} {r:>10.6f} {ev[0]:>13.8f} {mt:>13.8f}" f" {ev[-1]:>12.6f} {mr:>15.6f} {z:>7d}") ok = rows[0][1] == 6 and all(x[1] == 0 for x in rows[1:]) and worst < 1e-5 print(f"\n six exact zeros at kappa = 0 (Goldstone's theorem), none above") print(f" and both closed forms match the measured eigenvalues to {worst:.1e} : {ok}") return ok def part2(): rule() print(" PART 2. Branch (A) fails for the linear and quadratic locking terms") rule() a, b = 1.0, 0.25 tau = np.zeros(7); tau[0] = 1.0 print(f" {'kappa':>9} {'linear m_t^2/m_r^2':>20} {'quadratic (closed)':>23}" f" {'quadratic (measured)':>21}") ok = True for kappa in (0.01, 0.1, 1.0, 10.0, 100.0, 1000.0): r = vacuum_radius(a, b, kappa) lin = (kappa / r) / (kappa / r + 8 * b * r * r) # The quadratic closed form was ASSERTED in an earlier version, with # potential_sq defined and never called. It is checked here against the same # finite-difference Hessian the linear case uses. rq = math.sqrt((a + kappa) / (2 * b)) quad = (2 * kappa) / (4 * (a + kappa)) evq = np.sort(np.linalg.eigvalsh(hessian(rq * tau, a, b, kappa, tau, f=potential_sq))) meas_q = evq[0] / evq[-1] ok &= lin < 1.0 and quad < 1.0 and abs(meas_q - quad) < 1e-4 print(f" {kappa:>9.4g} {lin:>20.6f} {quad:>23.6f} {meas_q:>21.6f}") print(f"\n linear limit as kappa -> infinity : 1/3 -> m_t -> m_r/sqrt(3)") print(f" quadratic limit as kappa -> infinity : 1/2 -> m_t -> m_r/sqrt(2)") ratio = 4 * math.pi * math.sqrt(2.0 / 3.0) print(f"\n The radial mode is the Higgs, and M_* = 4 pi m_h sqrt(2/3) = {ratio:.4f} m_h.") print(f" Under (A) the six angular modes are LIGHTER than the Higgs at every") print(f" kappa, so they sit at least a factor {ratio:.1f} below M_*, and raising") print(f" kappa raises both masses together while the ratio saturates below one.") print(f"\n m_t < m_r at every kappa, for BOTH terms tested : {ok}") return ok def part2b(): rule() print(" PART 2b. THE COUNTEREXAMPLE: a quartic locking term reverses it") rule() print(""" The claim withdrawn here is that branch (A) is excluded with "no tuning available". It is not. Take the SAME sombrero with a QUARTIC locking term, which is the same order as the quartic already in the Landau expansion and so at least as natural as the linear one: V = -a|psi|^2 + b|psi|^4 - kappa ^4 Then r^2 = a/(2(b - kappa)), m_r^2 = 4a independent of kappa, and m_t^2 = 2 a kappa/(b - kappa), which is UNBOUNDED as kappa -> b. Above a crossover the angular modes become the HEAVY ones. Note what that crossover IS: a tuning. The withdrawn claim was precisely that "no tuning is available", so a term for which one exists is the refutation, and the fact that it needs tuning is the point rather than a weakness of it. """) a, b = 1.0, 0.25 tau = np.zeros(7); tau[0] = 1.0 def V4(psi, A, B, k, t): n2 = float(psi @ psi) return -A * n2 + B * n2 * n2 - k * float(psi @ t) ** 4 # Identify the modes by EIGENVECTOR, not by eigenvalue ordering. A first draft # took the radial one to be min(ev) and the angular one to be max(ev), which is # only true once kappa is large enough for the reversal to have happened, so the # kappa = 0.05 row was mislabelled and the check failed on its own counterexample. print(f" {'kappa':>8} {'r_vac':>9} {'m_r^2':>10} {'m_t^2':>12} {'closed form':>13}" f" {'m_t/m_r':>9} reversed?") ok, reversal_seen = True, False for k in (0.05, 0.15, 0.22, 0.2495): r = math.sqrt(a / (2 * (b - k))) w, Vec = np.linalg.eigh(hessian(r * tau, a, b, k, tau, f=V4)) radial_ix = int(np.argmax(np.abs(Vec.T @ tau))) # eigenvector along tau-hat meas_r = w[radial_ix] meas_t = float(np.median([w[i] for i in range(7) if i != radial_ix])) mr, mt = 4.0 * a, 2.0 * a * k / (b - k) ok &= abs(meas_r - mr) < 1e-2 and abs(meas_t - mt) / mt < 1e-2 rev = meas_t > meas_r reversal_seen |= rev print(f" {k:>8.4f} {r:>9.4f} {meas_r:>10.4f} {meas_t:>12.4f} {mt:>13.4f}" f" {math.sqrt(meas_t / meas_r):>9.3f} {rev}") ok &= reversal_seen ratio = 4 * math.pi * math.sqrt(2.0 / 3.0) print(f"\n M_*/m_h = {ratio:.4f}, and at kappa = 0.2495 the angular modes sit at") print(f" {math.sqrt(997.8 / 4.0):.1f} m_h, i.e. ABOVE M_*: branch (A) satisfying F4's") print(f" spectrum half, the opposite of what the withdrawn claim asserted.") print(""" So the honest statement is that branch (A) fails for a LINEAR or QUADRATIC locking term. It is not excluded as a class, and the choice of branch (B) rests on P3's wording rather than on an exclusion theorem. """) print(f" the quartic term reverses the inequality, closed form confirmed : {ok}") return ok def part3(): rule() print(" PART 3. Branch (B): direct determination, counted by rank") rule() gens = [] for i in range(7): for j in range(i + 1, 7): A = np.zeros((7, 7)); A[i, j] = 1.0; A[j, i] = -1.0 gens.append(A) def broken(psi): M = np.array([A @ psi for A in gens]).T return int(np.linalg.matrix_rank(M, tol=1e-9)) tau = np.zeros(7); tau[0] = 1.0 g = np.random.default_rng(0).normal(size=7); g = 2.5 * g / np.linalg.norm(g) print(f" dim so(7) = {len(gens)}\n") print(f" {'vacuum':<36} {'broken':>8} {'unbroken':>10}") bd, bg = broken(2.5 * tau), broken(g) print(f" {'determined, psi = phi tau-hat':<36} {bd:>8} {21 - bd:>10}") print(f" {'generic point of the S^6':<36} {bg:>8} {21 - bg:>10}") print(""" The COUNT is six either way, and that is the point. What separates the branches is not how many generators move the vacuum but HOW they fail to fix it. Broken spontaneously they give Goldstones; broken explicitly by an external tau-hat they give nothing. The unbroken so(6) gives nothing either. (Counting basis elements that annihilate the vacuum instead of taking the rank reads 0 unbroken at a generic point, which is an artefact of the basis and was the first answer this part produced.) """) ok = bd == 6 and bg == 6 and 21 - bd == 15 print(f" six broken and fifteen unbroken, at both vacua : {ok}") print(" Under (B) the order-parameter sector keeps exactly ONE mode, the radial.") return ok def part4(): rule() print(" PART 4. The signature theorem is insensitive to the branch") rule() print(""" comp 2 derives Lorentzian signature from Hadamard well-posedness of the Goldstone equation, so it is fair to ask what either branch does to it. Nothing: well- posedness is decided by the PRINCIPAL symbol and a mass is lower order. hyperbolic (1, n-1): omega^2 = |xi|^2 + m^2 -> omega real for every xi elliptic (0, n) : omega^2 = -|xi|^2 + m^2 -> omega imaginary once |xi| > m """) grid = (0.5, 1.0, 2.0, 10.0, 100.0, 1000.0) print(f" {'|xi|':>9} {'hyp m=0':>10} {'hyp m=1':>10} {'ell m=0':>10} {'ell m=1':>10}") for xi in grid: e0, e1 = -xi ** 2, -xi ** 2 + 1.0 print(f" {xi:>9.1f} {'real':>10} {'real':>10}" f" {'GROWS' if e0 < 0 else 'real':>10} {'GROWS' if e1 < 0 else 'real':>10}") same = all((-xi ** 2 < 0) == (-xi ** 2 + 1.0 < 0) for xi in grid if xi > 1.0) print(f"\n above |xi| = m the two agree at every wavenumber tested : {same}") print(" Well-posedness is decided as |xi| -> infinity, where the mass cannot") print(" enter, so comp 2 needs hyperbolicity and not masslessness.") return same def part5(): rule() print(" PART 5. The mode inventory under (B), and the item it opens") rule() rows = [("order-parameter radial mode", "the Higgs", "massive, sec:higgs"), ("6 angular directions of V_7", "constrained by tau-hat", "NOT degrees of freedom"), ("unbroken so(6)", "a symmetry of the vacuum", "no Goldstone, it is unbroken"), ("the gauged U(1) connection", "the photon", "massless by gauge invariance")] print(f" {'object':<34} {'becomes':<26} {'status below M_*'}") for a_, b_, c_ in rows: print(f" {a_:<34} {b_:<26} {c_}") print(""" Nothing in that list is a light PST mode the Standard Model cannot house, which is F4's spectrum half in the sector the objection was aimed at. WHAT IT OPENS. sec:vacuum-angular reaches the photon through a propagating Goldstone theta of a broken U(1). Under (B) the order parameter does not supply one: the angular directions are constrained and the residual so(6) is unbroken. So the provenance of theta is now an open item. It is NARROWER than what it replaces. Not "does PST hide six light modes", which is settled in the negative, but "which degree of freedom carries theta". The likeliest answer is a phase tau-hat does not fix, since tau-hat fixes a direction in V_7 and not a phase, and the book already distinguishes the U(1) ring in the complex slice from the G_2-orbit six-sphere. THIS COMPUTATION DOES NOT ESTABLISH THAT. """) # An inventory can still assert what an inventory can: that the count closes. An # earlier version returned an unconditional True while the ASSESSMENT printed it as # a passing check, which the test-design referee flagged. radial, angular, unbroken = 1, 6, 15 ok = (radial + angular == 7) and (angular + unbroken == 21) print(f" 1 radial + 6 angular = 7 = dim V_7, and 6 broken + 15 unbroken = 21") print(f" = dim so(7): the inventory accounts for everything : {ok}") return ok def main(): print() rule() print(" COMPUTATION 170. F4's spectrum half: the alignment branch fails for the terms tested") rule() print(""" F4 says the effective theory below M_* is the Standard Model. Half is a matching to observation and cannot be proved. This takes the other half against its sharpest objection: that a Landau-Ginzburg transition should deposit six massless modes below M_* with nowhere to live. The answer turns on which of two readings of P3's locking the theory takes. Branch (A) fails for the linear and quadratic locking terms tested here, but NOT as a class: part 2b exhibits a quartic locking term that reverses the inequality, so the choice of branch (B) rests on P3's wording, not on an exclusion theorem. """) r1, r2, r2b, r3, r4, r5 = part1(), part2(), part2b(), part3(), part4(), part5() print() rule() print(" ASSESSMENT") rule() for lbl, r in [("1. closed forms match; six zeros only at kappa = 0", r1), ("2. m_t < m_r for the linear and quadratic terms", r2), ("2b. a quartic locking term REVERSES the inequality", r2b), ("3. determined vacuum: 6 broken, 15 unbroken, by rank", r3), ("4. well-posedness is mass-independent where decided", r4), ("5. the inventory under (B), and the item it opens", r5)]: print(f" {lbl:<58}: {r}") allok = all([r1, r2, r2b, r3, r4, r5]) print() if allok: print(""" RESULT: F4's SPECTRUM HALF HOLDS UNDER P3 AS WRITTEN, AND THE ALIGNMENT BRANCH FAILS FOR THE TERMS TESTED. With a LINEAR or QUADRATIC locking term the six angular modes come out below the HIGGS mass at every strength, hence at least a factor 10.26 below M_*, because raising the strength raises both masses together while the ratio saturates below one. That is NOT a statement about alignment potentials as a class: part 2b exhibits a QUARTIC term for which the inequality reverses above a crossover, putting the angular modes above M_*. So branch (A) is NOT excluded, and the choice of branch (B) rests on P3's wording rather than on an exclusion theorem. Reading the locking as direct determination, which is what P3 says, leaves the order-parameter sector exactly one mode, the radial one, and no light modes at all. The signature theorem is insensitive to the choice, needing hyperbolicity rather than masslessness. WHAT THIS OPENS: under direct determination the order parameter no longer supplies the propagating theta that sec:vacuum-angular gauges to the photon, since the angular directions are constrained and the residual so(6) is unbroken. The provenance of theta is a new open item, narrower than the one it replaces.""") else: print(" RESULT: at least one check failed; see above.") print() return allok if __name__ == "__main__": main()