Repository navigation
Releases: moiseszeleny/feynlag
Releases · moiseszeleny/feynlag
Release list
feynlag 0.3.0
Added
diagonalize_svd(method="auto"|"symbolic"|"numeric", dps=50): a numeric
matrix that is complex, floating-point or larger than 2×2 is decomposed with
mpmath's complex SVD, returning unitary rotations with
R_L M R_R† = diag(m ≥ 0)(rows by increasing mass, a round-off singular
value as an exact zero). Generic complex 3×3 Yukawas now give their masses
andV_CKM = R_uL·R_dL†inside feynlag (FG-6, #31). Exact 2×2 calls are unchanged.Rotation.bar(old_bar, new_bar): the bar-leg partner of a fermion rotation,
with the conjugate matrixR*(identical toRfor a real rotation) (#31).GlobalU1: a global (ungauged) U(1) whoseassigntakes one charge per
flavour for a fermion (e.g. Froggatt–NielsenQ_L: (3, 2, 0)), checked by
the newcheck_global_invarianceand declared on a model with
Model(global_groups=[...])(check_invariance/validatereport
global:<name>). Not part of the anomaly check (FG-7, #32). Legs sharing a
symbolic flavour index are charged flavour by flavour, so a flavour-diagonal
currentψ̄_i Γ ψ_i(a kinetic term,fermion_gauge_current) is neutral even
with flavour-dependent charges; an out-of-range integer flavour index, or a
symbolic index shared by fields with different flavour counts, raises a
ValueError.
Changed
- The SU(N) groups tutorial (#15) and the Particle Decays tutorial (#30) are
rebuilt in the derive-then-check style: a prediction before each section,
and an assert behind every claim instead of printed booleans. They add
basis-independent invariants, real/complex/pseudo-real representations and
singlet counting (SU(N)), hand-built Dirac-matrix cross-checks of the
covariant traces (decays), and web-verified reference lists.
Fixed
diagonalize_svdno longer returns a silently wrong answer on a complex
matrix: the symbolic route raises on an explicitI. It also no longer
crashes withTypeErroron a real floating-point input (#31).
feynlag 0.2.0
Added
diagonalize_takagi(method="auto"|"symbolic"|"numeric", dps=50): for a
numeric matrix larger than 2×2,autofactorises with mpmath'seigsyat
high precision (columns by increasing mass, round-off eigenvalues as exact
zero modes), so a generic 3+2 seesaw 5×5 finishes instead of stalling in the
exact route. Exact 2×2 and symbolic calls are unchanged.- Per-symbol LaTeX:
component_tex=[...]onScalar,WeylFermion/
MajoranaFermion,GaugeBosonandGaugeGroup.bosons(),tex=on
conjugate_pair, and a parameter's existingtex=now reach plain
sympy.latexthrough the symbol itself (TexSymbol), so downstream code
needs no name→LaTeX map. A one-component field'stex=also names its
component, and fermion bar legs print as\overline{…}. - Opt-in LaTeX names in the SM builders and
Scalar.expand_vev: each takes
tex=, a map from the name of a symbol it creates to a LaTeX name
(electroweak_gauge,higgs_doublet,electroweak_scaffold,
weinberg_rotation,charged_current_rotation,to_physical_basis,
standard_ckm), so one global table covers the couplings, the Higgs
parameters, the doublet and its fluctuations (H0_r→h), and the physical
Z,A,W±,G⁻. Names missing from the map stay plain. An explicit
symbol_namesprinter setting still overrides a symbol's own tex.
GaugeGroup.bosons()raises if a later call asks for a different tex than
the cached bosons carry. - A
TexSymbolsorts exactly like a plainSymbolof the same name, so
adding a tex never reorders vertex legs or printed terms.
Fixed
- The UFO writer now escapes
texname/antitexname. It wrote them as bare
'...'literals, so a tex containing a quote (g') madeparameters.py
aSyntaxError, and a backslash was read as a Python escape (\tau→
TAB +au).
Changed
- A field component or parameter declared with a tex is a
TexSymbol, which
is not equal to a plainSymbolof the same name. Code that rebuilds such a
symbol by name (sp.Symbol("lam")) must use the object instead. Without a
tex nothing changes.
feynlag 0.1.0
First public release (beta).
Model building and checks
- Parameters split into external and internal, with dependencies resolved in
order; scalar, Weyl-fermion, Majorana-fermion and gauge-boson fields. - Gauge groups
U1andSUN(any SU(N) irrep, generators built in the
Gelfand–Tsetlin basis); discrete groupsZNandS3with Clebsch–Gordan
products. - Lagrangian building blocks:
Dmu,dag,Bilinear,MajoranaBilinear,
fermion_gauge_current. - Invariance checks (gauge, discrete, hermiticity, mass dimension with an
EFTmax_dimflag) and aModel.validate()umbrella adding anomaly
cancellation, electric-charge conservation and a UFO round-trip. - Operator suggestion (
suggest_potential,suggest_yukawa,
suggest_kinetic,build_lagrangian), including the dim-5 Weinberg
operator. - Reusable Standard Model builders (
feynlag.models) and CKM mixing
(standard_ckm).
Symmetry breaking, masses and vertices
- VEV expansion, tadpole extraction and solving, and scalar, charged,
gauge-boson, Dirac and Majorana mass matrices, including the type-I seesaw. - Diagonalization: orthogonal and analytic 2×2, SVD (biunitary), Takagi,
andMajoranaRotationfor Majorana mass eigenstates. - Momentum-space Feynman rules for SSS, SSSS, VSS, VVS, VVSS, VVV, VVVV, FFS,
FFV, four-fermion (FFFF) and Majorana vertices.
Export
- LaTeX vertex tables.
- UFO model directories for MadGraph, with SU(3) colour tensors and
four-fermion Lorentz structures; the exported SM reproduces MadGraph's
stocksmcross sections (docs/benchmark.md).
Phenomenology (feynlag.pheno)
- Tree-level 1→2 partial widths, total widths and branching ratios, with a
DiracParticleabstraction for fermions. - Off-shell
h→WW*/ZZ*widths (1→3 with a Breit–Wigner propagator). - Loop-induced
h→gg,h→γγandh→Zγfrom standard effective vertices. - Tree-level single-diagram 2→2 cross sections, including the γ₅ (ε·ε) term
and the forward–backward asymmetry.
Known limitations
- No R_ξ gauge fixing or ghosts.
- Majorana vertices are not exported to UFO.
- 2→2 scattering does not yet sum interfering diagrams;
VVVdecays are not
implemented.