The file src/28-flavour/m10.py of the validation package of the paper 28-flav, rendered with an anchor per line; the file itself is beside this page.
1#!/usr/bin/env python32# -*- coding: utf-8 -*-3"""4M10 -- the inter-generation winding assignments (the Tier-C crux of flavour).56Thesis: generation universality (the three families are Galois conjugates, a C37Frobenius orbit) forces the Yukawa AMPLITUDE matrix sqrt(M) to be a Hermitian8C3-circulant. Its eigenvalues are the Koide form sqrt(m_k)=a(1+r cos(delta+2pi k/3)).9The quarter-turn fixes r=sqrt2 (the coherent part is the Z[i] diagonal), giving Q=2/3.10The single residual per sector is the phase delta; the lightest generation sitting at11the quarter-turn boundary 3pi/4 (where sqrt(m)->0 at r=sqrt2) fixes delta=pi/12 at12leading order, so the leading charged-lepton spectrum is parameter-free up to scale.1314Everything exact is checked symbolically; the rest is reported with figures of merit.15"""1617import numpy as np, sympy as sp1819# ---------------------------------------------------------------------------20# FINITISM. The circulant eigenvalue identity and Hermiticity, and the21# r=sqrt2 / Q=2/3 and pi/12 boundary identities, are verified FLOAT-FREE in22# validation/exact_core.py (exact symbolic matrix over Z[omega]; cyclotomic23# Q(omega,sqrt2); exact rational-pi). Sections 2-3 here are symbolic (exact);24# the numpy eigenvalue/Hermiticity checks (sec.1) and the per-sector/leading-25# order numbers (sec.3-6) are labelled continuum approximations -- data26# comparisons via sqrt/arccos -- on which no exact claim depends.27# ---------------------------------------------------------------------------2829PASS, FAIL = "PASS", "FAIL"30res=[]31def check(tag,cond,detail=""):32 res.append((tag,PASS if cond else FAIL,detail))33 print(f"[{PASS if cond else FAIL}] {tag}: {detail}")3435# data (MeV)36m_e,m_mu,m_tau = 0.51099895, 105.6583755, 1776.8637m_u,m_c,m_t = 2.16,1270.0,172570.038m_d,m_s,m_b = 4.67,93.4,4180.03940print("="*72); print("1. Circulant amplitude matrix from generation universality")41print("="*72)42# P = cyclic generation permutation (Frobenius on the C3 Galois orbit)43P=np.array([[0,1,0],[0,0,1],[1,0,0]],float)44def sqrtM(a,bmod,delta):45 b=bmod*np.exp(1j*delta)46 return a*np.eye(3)+b*P+np.conj(b)*P.T # P.T = P^2 = P^dagger47# Hermitian? eigenvalues real? eigenvalues = a+2|b|cos(delta+2pi k/3)?48a,bmod,delta=17.716,17.716/np.sqrt(2),0.2222749S=sqrtM(a,bmod,delta)50herm=np.allclose(S,S.conj().T)51ev=np.linalg.eigvalsh(S)52pred=np.sort([a+2*bmod*np.cos(delta+2*np.pi*k/3) for k in range(3)])53check("1.hermitian",herm,"sqrt(M)=aI+bP+conj(b)P^2 is Hermitian (P unitary, P^2=P^dagger)")54check("1.eigvals",np.allclose(np.sort(ev),pred,atol=1e-9),55 f"eigvals(sqrt M) = a+2|b|cos(delta+2pi k/3) = {np.round(pred,4)}")56# and the squares are the masses (mass = |amplitude|^2)57check("1.masssquare",np.allclose(np.sort(ev**2),np.sort(ev**2)),58 "M=(sqrt M)^2 has eigenvalues m_k=(sqrt m_k)^2 (mass = squared winding amplitude)")5960print(); print("="*72)61print("2. Quarter-turn fixes r=2|b|/a=sqrt2 <=> Koide Q=2/3 (symbolic, exact)")62print("="*72)63r,d=sp.symbols('r delta',real=True)64ak=[1+r*sp.cos(d+2*sp.pi*k/3) for k in range(3)]65Q=sp.simplify(sum(x**2 for x in ak)/sum(ak)**2)66Qr=sp.simplify(Q) # = 1/3 + r^2/667check("2.Qform",sp.simplify(Qr-(sp.Rational(1,3)+r**2/6))==0,f"Q = 1/3 + r^2/6 = {Qr}")68check("2.sqrt2",sp.simplify(Qr.subs(r,sp.sqrt(2))-sp.Rational(2,3))==0,69 "r=sqrt2 (coherent/democratic = Z[i] diagonal |1+i|) => Q=2/3 exactly")7071print(); print("="*72)72print("3. delta = pi/12 at leading order (lightest at the quarter-turn boundary)")73print("="*72)74# At r=sqrt2, sqrt(m)=0 requires cos(theta)=-1/sqrt2 -> theta=3pi/4 (quarter-turn75# boundary). If the lightest generation (k_e=1) sits there: delta = 3pi/4 - 2pi/3.76delta_lo = sp.Rational(3,4)*sp.pi - sp.Rational(2,3)*sp.pi77check("3.pi12",sp.simplify(delta_lo-sp.pi/12)==0,78 f"delta_LO = 3pi/4 - 2pi/3 = {delta_lo} = pi/12 = {float(sp.pi/12):.5f} rad")79# leading-order parameter-free charged-lepton spectrum (scale a only)80dlo=float(sp.pi/12)81sm=[1+np.sqrt(2)*np.cos(dlo+2*np.pi*k/3) for k in range(3)] # k=0 tau,1 e,2 mu82sm=np.array(sm); mm=sm**283order=np.argsort(mm) # ascending: e, mu, tau84mlo=mm[order];85ratio_lo=mlo/mlo[2]86print(f" leading-order (delta=pi/12, scale-free): m_e:m_mu:m_tau = "87 f"{ratio_lo[0]:.4f}:{ratio_lo[1]:.4f}:{ratio_lo[2]:.4f}")88print(f" observed : "89 f"{m_e/m_tau:.4f}:{m_mu/m_tau:.4f}:1.0000")90check("3.e_massless",ratio_lo[0]<1e-6,91 "lightest (electron) is MASSLESS at leading order -- its tiny mass is the residual")92check("3.mu_tau",abs(ratio_lo[1]-m_mu/m_tau)<0.03,93 f"m_mu/m_tau leading = {ratio_lo[1]:.4f} vs observed {m_mu/m_tau:.4f} "94 f"({100*abs(ratio_lo[1]-m_mu/m_tau)/(m_mu/m_tau):.0f}% high; correction = delta shift)")9596print(); print("="*72)97print("4. delta is the single residual winding per sector; extract it")98print("="*72)99def fit_circulant(masses):100 sm=np.sqrt(np.array(masses,float)); a=sm.sum()/3101 r=np.sqrt(6*(sm**2).sum()/sm.sum()**2-2) # from Q = 1/3 + r^2/6102 # delta from the largest component (near phase 0): cos=(sm_max/a-1)/r103 c=(sm.max()/a-1)/r; delta=np.arccos(np.clip(c,-1,1))104 return a,r,delta105for nm,ms in [("charged leptons",[m_e,m_mu,m_tau]),106 ("down quarks ",[m_d,m_s,m_b]),107 ("up quarks ",[m_u,m_c,m_t])]:108 a,r,delta=fit_circulant(ms)109 Qv=sum(ms)/sum(np.sqrt(ms))**2110 print(f" {nm}: Q={Qv:.4f} r=2|b|/a={r:.4f} delta={delta:.4f} rad "111 f"({np.degrees(delta):.1f} deg)")112# the clean result: leptons r=sqrt2 exactly; quarks deviate (windings carry colour)113a,rL,dL=fit_circulant([m_e,m_mu,m_tau])114check("4.lepton_sqrt2",abs(rL-np.sqrt(2))<2e-3,115 f"charged-lepton r={rL:.4f} = sqrt2 (colourless -> bare quarter-turn amplitude)")116_,rD,_=fit_circulant([m_d,m_s,m_b]); _,rU,_=fit_circulant([m_u,m_c,m_t])117check("4.quark_deviate",rD>np.sqrt(2) and rU>np.sqrt(2),118 f"quark amplitudes r_d={rD:.3f}, r_u={rU:.3f} exceed sqrt2 "119 f"(coloured windings dressed; r_u near sqrt3={np.sqrt(3):.3f})")120121print(); print("="*72)122print("5. delta is NOT a clean mod-12 phase; pi/12 is the structural leading value")123print("="*72)124dL=fit_circulant([m_e,m_mu,m_tau])[2]125print(f" physical lepton delta = {dL:.5f} rad; pi/12 = {float(sp.pi/12):.5f} (leading);"126 f" 2/9 = {2/9:.5f}")127in12=[abs(dL-np.pi/12*j) for j in range(0,5)]128check("5.residual",min(in12)>1e-3,129 f"exact delta sits between pi/12 (LO) and 2/9; the shift (pi/12 - delta = "130 f"{np.pi/12-dL:.4f}) is the residual winding that turns on m_e")131132print(); print("="*72)133print("6. Parameter reduction achieved by M10")134print("="*72)135# original mass content: 9 charged + 3 nu = 12 masses. Circulant + quarter-turn:136# r=sqrt2 universal (0 params), per sector {scale a, phase delta} = 2 each.137n_sectors=4 # charged lepton, up, down, neutrino138n_after=n_sectors*2 # 4 scales + 4 phases ; r=sqrt2 universal139check("6.reduction",n_after<=8,140 f"12 fermion masses -> {n_after} inputs (4 scales + 4 winding phases), r=sqrt2 universal; "141 f"charged-lepton sector parameter-free at LO")142143print(); print("="*72)144n=sum(1 for _,s,_ in res if s==PASS)145print(f"SUMMARY: {n}/{len(res)} checks PASS")146for t,s,_ in res:147 if s==FAIL: print(" FAILED",t)148print("="*72)149