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 = 0⊢ coeff 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 = 0⊢ coeff 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 = 0⊢ coeff 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 = 0⊢ coeff 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 = 0⊢ coeff m f = 0 All goals completed! 🐙