up_doubling.py โ€” src/28-flavour

The file src/28-flavour/up_doubling.py of the validation package of the paper 28-flav, rendered with an anchor per line; the file itself is beside this page.

28-flavour ledgersrc/28-flavour/up_doubling.py ยท 4.4 KBup_doubling.py
1#!/usr/bin/env python32# -*- coding: utf-8 -*-3"""4up_doubling.py  --  the up-sector charge doubling as the 10.10 structure.56Claim: the up Yukawa is 10.10.5_H (the charge-carrying matter multiplet self-paired),7the down/lepton Yukawa is 10.5bar.5bar_H.  Locate the flavour charge (role depth = winding8index) in the 10, with the 5bar flat.  Then on the diagonal9        down/lepton  ~  eps^{a_i}        (10 . 5bar,  charge once)10        up           ~  eps^{2 a_i}      (10 . 10,    charge twice)11so the up FN exponent is exactly TWICE the down/lepton exponent -- the doubling.  The SAME12input (charge in 10, 5bar flat) forces down=lepton (both 10.5bar) and the lopsided M_e=M_d^T.1314Verifications:15  A  empirical effective FN powers from PDG masses: down~(4,2), lepton~(4,2), up~(8,4);16     up exponents = 2 x down exponents at the integer level.17  B  structural map: charge a=(4,2,0) in the 10, 5bar flat => down=eps^a, up=eps^{2a};18     reproduces (4,2,0) and (8,4,0); down=lepton; up = (down)^2 in spurion units.19  C  the winding reading: 10.10 sums the winding index with itself (a_i+a_i=2a_i) = doubled20     frequency; 10.5bar pairs winding with flat (a_i+0).  [continuum/data: labelled approx.]21"""22import math2324PASS=[]25def check(name, cond):26    PASS.append(bool(cond)); print(f"  [{'OK' if cond else 'XX'}] {name}")2728lam = 0.22529# PDG-ish masses (GeV); common-scale values, the integer pattern is robust to the scale choice30m = {31 'u':2.2e-3, 'c':1.27,   't':173.0,32 'd':4.7e-3, 's':93e-3,  'b':4.18,33 'e':0.511e-3,'mu':105.7e-3,'tau':1.777,34}35def powers(m1,m2,m3):36    "effective FN powers n_i = log(m_i/m_3)/log(lambda) for the two light gens"37    return (math.log(m1/m3)/math.log(lam), math.log(m2/m3)/math.log(lam))3839print("A  empirical effective FN powers  n_i = log(m_i/m3)/log(lambda),  lambda=%.3f"%lam)40du = powers(m['u'],m['c'],m['t']); print(f"   up    (u,c)/t : ({du[0]:.1f},{du[1]:.1f})  -> integer (8,4)")41dd = powers(m['d'],m['s'],m['b']); print(f"   down  (d,s)/b : ({dd[0]:.1f},{dd[1]:.1f})  -> integer (4,2)")42dl = powers(m['e'],m['mu'],m['tau']); print(f"   lept  (e,mu)/tau:({dl[0]:.1f},{dl[1]:.1f})  -> integer (4,2)  (e = GJ outlier)")43# integer pattern by nearest-even (the FN charges are 2 n_i)44def nearest_even(x): return 2*round(x/2)45up_int   = (nearest_even(du[0]), nearest_even(du[1]))46down_int = (nearest_even(dd[0]), nearest_even(dd[1]))47print(f"   integer up={up_int}, down={down_int}")48check("up integer exponents = (8,4)", up_int==(8,4))49check("down integer exponents = (4,2)", down_int==(4,2))50check("UP = 2 x DOWN at the integer level (the doubling)",51      up_int==(2*down_int[0], 2*down_int[1]))52check("down ~ lepton at 2nd gen (mu/tau ~ s/b, both ->2); electron = GJ outlier (sec.GJ)",53      nearest_even(dd[1])==nearest_even(dl[1])==2)5455print("\nB  structural map: charge a in the 10, 5bar flat")56a = (4,2,0)                                  # 10-charges (= role depth in lambda units)57down_exp = a                                 # 10 . 5bar : charge once58up_exp   = tuple(2*ai for ai in a)           # 10 . 10   : charge twice59lep_exp  = a                                 # 10 . 5bar (transpose) : same as down60print(f"   10-charge a={a}, 5bar flat")61print(f"   down = eps^a   = lambda^{down_exp}")62print(f"   lept = eps^a   = lambda^{lep_exp}   (M_e = M_d^T, lopsided)")63print(f"   up   = eps^2a  = lambda^{up_exp}")64check("down exponents reproduce (4,2,0)", down_exp==(4,2,0))65check("up exponents reproduce (8,4,0) = 2a", up_exp==(8,4,0))66check("down = lepton (both 10.5bar, same a) -> degeneracy + lopsided", down_exp==lep_exp)67check("up = (down)^2 in spurion units (exponents doubled)",68      up_exp==tuple(2*x for x in down_exp))69# the same single input gives all three:70print("   => one input (charge in 10, 5bar flat) forces: down=lepton, lopsided M_e=M_d^T, up-doubling")7172print("\nC  winding reading: 10.10 = winding self-paired = doubled frequency")73# FN exponent = winding index a_i; 10.10 -> a_i + a_j (diagonal 2a_i), 10.5bar -> a_i + 074for ai in a:75    check(f"  winding a={ai}: up self-pair {ai}+{ai}={2*ai}, down pair {ai}+0={ai}  (ratio 2)",76          (ai+ai)==2*ai and (ai+0)==ai)7778# bonus: 10.10 is symmetric -> up Yukawa symmetric (a forced structural consequence)79print("\n   bonus: 10.10 is symmetric in the two 10's => up Yukawa matrix is symmetric (SU(5))")8081print("\n"+"="*68)82print(f"up_doubling: {sum(PASS)}/{len(PASS)} checks pass "83      f"(structural integer; empirical data labelled approx)")84print("="*68)85assert all(PASS), "a check failed"86