feynlag.lagrangian.Model

class feynlag.lagrangian.Model(name, gauge_groups=(), discrete_groups=(), fields=(), parameters=None, lagrangian=None)[source]

A BSM model: symmetries + fields + parameters + Lagrangian.

All pipeline stages are lazy — nothing is solved at construction.

Pipeline surface:

  • check_invariance() — gauge/discrete invariance of every term, hermiticity per sector, mass-dimension power counting;

  • potential, vacuum — EWSB setup (L ⊃ −V);

  • tadpoles(), solve_tadpoles() — vacuum conditions;

  • mass_matrix() — real or charged scalar blocks at the vacuum;

  • rotate() — register weak → physical Rotations;

  • physical_lagrangian() — shifted, tadpole-substituted, rotated L;

  • interactions(), feynman_rules() — vertex extraction.

__init__(name, gauge_groups=(), discrete_groups=(), fields=(), parameters=None, lagrangian=None)[source]

Methods

__init__(name[, gauge_groups, ...])

check_anomalies([raise_on_failure])

Check that gauge anomalies cancel for the declared fermion content.

check_invariance([hermiticity, dimension, ...])

Check every Lagrangian term against every declared symmetry.

feynman_rules(fields[, sector, ...])

Feynman rules i × coefficient × ∏(multiplicity)! per vertex.

gauge_mass_matrix(gauge_components)

Gauge boson mass matrix from the (vacuum-evaluated) kinetic sector: M²_ab = ∂²L_kin,vac/∂A^a∂A^b.

gauge_vertices([groups, basis, simplifier, ...])

VVV and VVVV Vertex objects for the gauge self-couplings.

interactions(fields[, sector, ...])

Extract interaction coefficients from the physical Lagrangian.

mass_matrix(fields[, charged])

Scalar mass matrix at the vacuum for a block of fields.

physical_lagrangian([sector])

The Lagrangian in the physical basis: vacuum-shifted, tadpole solutions substituted, all registered rotations applied, expanded.

rotate(rotation)

Register a weak → physical Rotation.

solve_tadpoles(for_params)

Solve tadpoles for for_params; solutions are remembered and applied by mass_matrix() / physical_lagrangian(), and any InternalParameter among them gets defined.

spin_map([conjugate_map])

{symbol: spin} for every known component, fluctuation and rotated physical field (rotations propagate block spin; conjugate partners inherit the spin of the field they conjugate).

tadpoles()

Tadpole conditions {vev: ∂V/∂vev |_vacuum}.

validate([invariance, hermiticity, ...])

Run every applicable consistency check and aggregate the results.

vertices(fields[, sector, conjugate_map, ...])

Extract Vertex objects (typed by the closed Lorentz catalog) from the physical Lagrangian.

Attributes

potential

The scalar potential V (the Lagrangian stores −V).

scalars

vacuum

rotations

registered weak → physical Rotations, in application order