su3f_relations.py โ€” src/35-hadrons

The file src/35-hadrons/su3f_relations.py of the validation package of the paper 35-hadr, rendered with an anchor per line; the file itself is beside this page.

35-hadrons ledgersrc/35-hadrons/su3f_relations.py ยท 4.7 KBsu3f_relations.py
1#!/usr/bin/env python32# WP2/WP3 - the SU(3)_F baryon mass relations, exact and scale-cancelling.3#4# Framed-rational / 1-algebra: the identities are proved in exact rational arithmetic5# (Fraction) as coefficient-vector identities, valid for EVERY value of the parameters, so6# the confinement scale sqrt(sigma) (Omega-hard, D6c) cancels. No RNG, no logs, no fit.7# The PDG confrontation is the single labelled [approx] readout at the end.8#9# Structure of the wrapped composite (master eq. of the blueprint):10#   M_B = sqrt(sigma) * [ f_fl(B) + kappa_hf g_spin(B) ] + Delta^EM_B .11# Within one spin multiplet g_spin is constant, so the spin term is an overall shift and the12# SU(3)_F relations live entirely in f_fl, the flavour structure. f_fl is taken linear in the13# strange-seed count at leading order (one fixed wrap increment per strange constituent), the14# increment fixed upstream by the chi_3 current-mass ratio (28-flavour). Linearity is the15# only structural input; the relations below are identities given it.1617from fractions import Fraction as F1819def zero_vec(v):20    return all(x == 0 for x in v)2122def lincomb(coeffs, vecs):23    n = len(vecs[0])24    out = [F(0)] * n25    for c, v in zip(coeffs, vecs):26        for i in range(n):27            out[i] += F(c) * v[i]28    return out2930print("== WP3a: Gell-Mann-Okubo octet relation as an exact identity ==")31# Octet first-order breaking operator  M = M0 + a*Y + b*[ I(I+1) - Y^2/4 ]  (the 8 of SU(3)_F).32# Coefficient vectors in the basis (M0, a, b):33#   I(I+1) - Y^2/4  for each isomultiplet:34#     N : Y=+1, I=1/2 -> 3/4 - 1/4 = 1/235#     L : Y= 0, I=0   -> 036#     S : Y= 0, I=1   -> 237#     X : Y=-1, I=1/2 -> 1/238octet = {39    "N": (F(1), F( 1), F(1, 2)),40    "L": (F(1), F( 0), F(0)),41    "S": (F(1), F( 0), F(2)),42    "X": (F(1), F(-1), F(1, 2)),43}44# GMO:  (N + X)/2 = (3 L + S)/4   <=>   2N + 2X - 3L - S = 045gmo = lincomb([2, 2, -3, -1], [octet["N"], octet["X"], octet["L"], octet["S"]])46print(f"  2*N + 2*X - 3*L - S  (in basis M0,a,b) = {tuple(str(x) for x in gmo)}")47print(f"  -> identity holds for ALL (M0,a,b): {zero_vec(gmo)}   (sqrt(sigma) and breaking params cancel)")48assert zero_vec(gmo)4950print("\n== WP3b: decuplet equal spacing as an exact identity ==")51# Decuplet operator linear in strange-seed count n_s:  M = alpha + beta*n_s .52# Coefficient vectors in basis (alpha, beta):  n_s = 0,1,2,3 for Delta, Sigma*, Xi*, Omega.53dec = {54    "D":  (F(1), F(0)),   # Delta    n_s=055    "S*": (F(1), F(1)),   # Sigma*   n_s=156    "X*": (F(1), F(2)),   # Xi*      n_s=257    "O":  (F(1), F(3)),   # Omega    n_s=358}59# equal spacing <=> the second differences vanish:60d1 = lincomb([1, -2, 1], [dec["D"], dec["S*"], dec["X*"]])   # D - 2S* + X*61d2 = lincomb([1, -2, 1], [dec["S*"], dec["X*"], dec["O"]])   # S* - 2X* + O62print(f"  D - 2 S* + X*  = {tuple(str(x) for x in d1)}")63print(f"  S* - 2 X* + O  = {tuple(str(x) for x in d2)}")64print(f"  -> equal spacing holds for ALL (alpha,beta): {zero_vec(d1) and zero_vec(d2)}")65assert zero_vec(d1) and zero_vec(d2)66print("  the common spacing is beta = (M_Omega - M_Delta)/3, one strange-seed wrap increment.")6768# =====================================================================================69# [approx] PDG 2024 confrontation. Isospin-averaged masses, MeV, as exact rationals.70# This is the single labelled continuum readout; the identities above are the framed result.71# =====================================================================================72print("\n== [approx] PDG 2024 confrontation (isospin-averaged, MeV) ==")73def avg(*xs):74    s = F(0)75    for x in xs:76        s += F(str(x))77    return s / len(xs)7879mN = avg(938.272, 939.565)80mL = F("1115.683")81mS = avg(1189.37, 1192.642, 1197.449)82mX = avg(1314.86, 1321.71)8384lhs = (mN + mX) / 285rhs = (3 * mL + mS) / 486res = (rhs - lhs) / rhs87print(f"  octet:  (N+X)/2 = {float(lhs):8.2f}   (3L+S)/4 = {float(rhs):8.2f}   "88      f"residual = {float(res)*100:+.2f}%   [approx]")8990mD  = F("1232.0")91mSs = avg(1382.8, 1383.7, 1387.2)92mXs = avg(1531.80, 1535.0)93mO  = F("1672.45")94sp = [mSs - mD, mXs - mSs, mO - mXs]95mean = sum(sp, F(0)) / 396spread = (max(sp) - min(sp)) / mean97print(f"  decuplet spacings (MeV): {float(sp[0]):.1f}, {float(sp[1]):.1f}, {float(sp[2]):.1f}"98      f"   mean increment beta = {float(mean):.1f}   spread = {float(spread)*100:.1f}%   [approx]")99print(f"  decuplet beta from equal spacing (M_O - M_D)/3 = {float((mO-mD)/3):.1f} MeV   [approx]")100print(f"  octet strange step (X - N)/2 = {float((mX-mN)/2):.1f} MeV/strange   [approx]")101102print("\nWP3 PASS: GMO and decuplet equal spacing are exact, parameter-free, scale-cancelling")103print("identities; PDG confirms them to 0.57% (octet) and a 9.2% spacing spread (decuplet).")104print("Forward (WP5): the Coleman-Glashow isospin relation p-n + Xi^- - Xi^0 = Sigma^- - Sigma^+.")105