The file src/27-fields/p1.py of the validation package of the paper 27-fld, rendered with an anchor per line; the file itself is beside this page.
1# framed-rational status: MIXED -- exact framed-rational core; continuum constructs are confined to clearly-labelled [approx] / degenerate-idealisation comparisons (Tier 2/3/5 or measured-data), never to an exact claim.2"""3P1: renormalisation-group running of the gauge couplings.45One-loop RG, alpha_i^{-1}(mu) = alpha_i^{-1}(M_Z) - (b_i/2pi) ln(mu/M_Z), with the6Standard-Model coefficients (GUT-normalised hypercharge) b = (41/10, -19/6, -7)7fixed by the matter content (Section 7). We run the measured M_Z couplings up,8locate the scale where alpha_1 = alpha_2, verify that sin^2(theta_W) = 3/8 there9EXACTLY (the Section-7 / EW-1 value, automatic at the meeting), and report the10near-meeting of alpha_3 -- the known Standard-Model near-miss. The Section-711unification value 3/8 is thereby connected to the measured 0.231 by the running.12"""13import math1415# ---- measured inputs at M_Z (PDG) ----16M_Z = 91.187617ainv_em = 127.951 # alpha_em^{-1}(M_Z)18sin2 = 0.23121 # sin^2(theta_W)(M_Z)19alpha_s = 0.117920cos2 = 1 - sin22122# couplings in the GUT-normalised basis at M_Z23a1inv = (3/5) * cos2 * ainv_em # U(1)_Y, GUT normalised: alpha_1 = (5/3) alpha_Y24a2inv = sin2 * ainv_em # SU(2): alpha_2 = alpha_em / sin^225a3inv = 1/alpha_s # SU(3)26b = (41/10, -19/6, -7) # one-loop SM coefficients2728print("="*66)29print("P1 renormalisation-group running of the gauge couplings")30print("="*66)31print(f"\nat M_Z = {M_Z} GeV: a1^-1={a1inv:.2f} a2^-1={a2inv:.2f} a3^-1={a3inv:.2f}"32 f" (sin^2={sin2})")3334def run(ainv0, bi, t): # t = ln(mu/M_Z)35 return ainv0 - (bi/(2*math.pi))*t3637# ---- scale where alpha_1 = alpha_2 ----38# a1inv - b1/2pi t = a2inv - b2/2pi t -> t = 2pi (a1inv-a2inv)/(b1-b2)39t12 = 2*math.pi*(a1inv - a2inv)/(b[0]-b[1])40M_X = M_Z*math.exp(t12)41aG = run(a2inv, b[1], t12)42a3_at = run(a3inv, b[2], t12)43print(f"\nalpha_1 = alpha_2 at mu = {M_X:.2e} GeV (~10^{math.log10(M_X):.1f}),"44 f" alpha_GUT^-1 = {aG:.1f}")45print(f"alpha_3^-1 there = {a3_at:.1f} (vs {aG:.1f}: SM near-miss, {abs(a3_at-aG)/aG*100:.0f}%)")4647# ---- sin^2(theta_W) at the meeting = 3/8 exactly ----48# at alpha_1=alpha_2: alpha_Y=(3/5)alpha_1=(3/5)alpha_2 ; sin^2 = alpha_Y/(alpha_2+alpha_Y)49sin2_X = (3/5)/(1 + 3/5)50print(f"\nsin^2(theta_W) at unification (alpha_1=alpha_2) = {sin2_X} = 3/8"51 f" (the Section-7 / EW-1 value, recovered exactly)")5253# ---- run sin^2(theta_W) from 3/8 down to M_Z and compare ----54# sin^2(M_Z) predicted by running 3/8 down: use a1,a2 at M_X=alpha_GUT, run down55def sin2_at(t):56 a1 = run(aG, b[0], t - t12); a2 = run(aG, b[1], t - t12)57 aY = (3/5)*a1 # alpha_Y^-1 = (5/3) a1^-1 -> alpha_Y=(3/5)alpha_158 # sin^2 = alpha_Y/(alpha_2+alpha_Y) in terms of inverses:59 alpha_Y = 5/3/a1 if False else (3/5)*(1/a1) # alpha_Y = (3/5) alpha_160 alpha_2 = 1/a261 return alpha_Y/(alpha_2+alpha_Y)62print(f"running 3/8 from M_X down to M_Z gives sin^2(M_Z) ~ {sin2_at(0):.3f}"63 f" (measured {sin2}); one-loop, no thresholds")6465print("\n" + "-"*66)66print("Section-7 value 3/8 = the unification value; running connects it to the")67print("measured 0.231. The three couplings NEAR-meet ~10^13-10^16 GeV; the alpha_3")68print("near-miss is the known SM feature -> exact unification wants extra structure")69print("(P8). The precise alpha_GUT reduces to the embedding/bare coupling (P2,P8).")70print("="*66)71