Imports
/- Copyright (c) 2026 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Joseph Tooby-Smith -/ module public import Mathlib.Algebra.MvPolynomial.Basic public import Mathlib.Algebra.MvPolynomial.CommRing public import Mathlib.Tactic.Ring

Charge balancing for polynomials

If the variables of a polynomial carry charges under a phase (here a single element c of infinite order), then invariance under the simultaneous phase rotation Xᵢ ↦ c^{wᵢ} Xᵢ forces every monomial to be charge balanced (net charge zero). This is the algebraic content of the statement that a gauge invariant potential, restricted to a slice on which the gauge torus acts diagonally, can only contain charge-balanced monomials.

@[expose] public section

Charge balancing. If each variable Xᵢ carries an integer charge w i, c is a phase of infinite order, and the polynomial f is invariant under the charge rotation Xᵢ ↦ c^{wᵢ} Xᵢ, then every monomial with nonzero net charge has vanishing coefficient.

σ:Type u_1K:Type u_2inst✝:Field Kw:σ c:Khc:c 0hroot: (n : ), c ^ n = 1 n = 0f:MvPolynomial σ Khf:(aeval fun i => C (c ^ w i) * X i) f = fm:σ →₀ hm: i m.support, (m i) * w i 0key:coeff m f = (c ^ i m.support, (m i) * w i) * coeff m fhgen: (s : Finset σ), i s, (c ^ w i) ^ m i = c ^ i s, (m i) * w ihne:c ^ i m.support, (m i) * w i 1h2:(1 - c ^ i m.support, (m i) * w i) * coeff m f = 0coeff m f = 0 σ:Type u_1K:Type u_2inst✝:Field Kw:σ c:Khc:c 0hroot: (n : ), c ^ n = 1 n = 0f:MvPolynomial σ Khf:(aeval fun i => C (c ^ w i) * X i) f = fm:σ →₀ hm: i m.support, (m i) * w i 0key:coeff m f = (c ^ i m.support, (m i) * w i) * coeff m fhgen: (s : Finset σ), i s, (c ^ w i) ^ m i = c ^ i s, (m i) * w ihne:c ^ i m.support, (m i) * w i 1h2:(1 - c ^ i m.support, (m i) * w i) * coeff m f = 0h:1 - c ^ i m.support, (m i) * w i = 0coeff m f = 0σ:Type u_1K:Type u_2inst✝:Field Kw:σ c:Khc:c 0hroot: (n : ), c ^ n = 1 n = 0f:MvPolynomial σ Khf:(aeval fun i => C (c ^ w i) * X i) f = fm:σ →₀ hm: i m.support, (m i) * w i 0key:coeff m f = (c ^ i m.support, (m i) * w i) * coeff m fhgen: (s : Finset σ), i s, (c ^ w i) ^ m i = c ^ i s, (m i) * w ihne:c ^ i m.support, (m i) * w i 1h2:(1 - c ^ i m.support, (m i) * w i) * coeff m f = 0h:coeff m f = 0coeff m f = 0 σ:Type u_1K:Type u_2inst✝:Field Kw:σ c:Khc:c 0hroot: (n : ), c ^ n = 1 n = 0f:MvPolynomial σ Khf:(aeval fun i => C (c ^ w i) * X i) f = fm:σ →₀ hm: i m.support, (m i) * w i 0key:coeff m f = (c ^ i m.support, (m i) * w i) * coeff m fhgen: (s : Finset σ), i s, (c ^ w i) ^ m i = c ^ i s, (m i) * w ihne:c ^ i m.support, (m i) * w i 1h2:(1 - c ^ i m.support, (m i) * w i) * coeff m f = 0h:1 - c ^ i m.support, (m i) * w i = 0coeff m f = 0 All goals completed! 🐙 σ:Type u_1K:Type u_2inst✝:Field Kw:σ c:Khc:c 0hroot: (n : ), c ^ n = 1 n = 0f:MvPolynomial σ Khf:(aeval fun i => C (c ^ w i) * X i) f = fm:σ →₀ hm: i m.support, (m i) * w i 0key:coeff m f = (c ^ i m.support, (m i) * w i) * coeff m fhgen: (s : Finset σ), i s, (c ^ w i) ^ m i = c ^ i s, (m i) * w ihne:c ^ i m.support, (m i) * w i 1h2:(1 - c ^ i m.support, (m i) * w i) * coeff m f = 0h:coeff m f = 0coeff m f = 0 All goals completed! 🐙