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 PhyslibAlpha.Particles.BeyondTheStandardModel.TwoHDM.EffectivePotential public import Mathlib.Algebra.MvPolynomial.Rename public import Mathlib.Algebra.MvPolynomial.Degrees

Swapping the two Higgs doublets

i. Overview

Exchanging the two doublets Φ1 ↔ Φ2 is an -linear map swapDoublet that commutes with the gauge action. It therefore preserves gauge invariance and the maximum mass dimension, while turning the alignment of Φ1 into the alignment of Φ2. This is precisely the symmetry used to clear the ‖Φ2‖² factor when writing the potential through the gauge invariants, mirroring the ‖Φ1‖² clearing.

ii. Key results

    swapDoublet — the doublet exchange, as an -linear map.

    swapDoublet_smul — it commutes with the gauge action.

    gramVector_swapDoublet_* — its effect on the Gram vector (a sign flip on the imaginary and difference components).

    IsInvariant.comp_swapDoublet, HasMaxMassDimLE.comp_swapDoublet — it preserves gauge invariance and bounded mass dimension.

iii. Table of contents

    A. The doublet-swap map and its components

    B. Commutation with the gauge action

    C. The action on the Gram vector

    D. Effect on gauge invariance and mass dimension

@[expose] public section

A. The doublet-swap map and its components

Swapping the two doublets, as an -linear map. It commutes with the gauge action, so it sends gauge-invariant polynomial potentials to gauge-invariant polynomial potentials, but turns the alignment of Φ1 into the alignment of Φ2.

def swapDoublet : TwoHiggsDoublet →ₗ[] TwoHiggsDoublet where toFun φ := { Φ1 := φ.Φ2, Φ2 := φ.Φ1 } map_add' _ _ := rfl map_smul' _ _ := rfl
@[simp] lemma swapDoublet_Φ1 (φ : TwoHiggsDoublet) : (swapDoublet φ).Φ1 = φ.Φ2 := rfl@[simp] lemma swapDoublet_Φ2 (φ : TwoHiggsDoublet) : (swapDoublet φ).Φ2 = φ.Φ1 := rfl@[simp] lemma swapDoublet_swapDoublet (φ : TwoHiggsDoublet) : swapDoublet (swapDoublet φ) = φ := φ:TwoHiggsDoubletswapDoublet (swapDoublet φ) = φ φ:TwoHiggsDoublet(swapDoublet (swapDoublet φ)).Φ1 = φ.Φ1φ:TwoHiggsDoublet(swapDoublet (swapDoublet φ)).Φ2 = φ.Φ2 φ:TwoHiggsDoublet(swapDoublet (swapDoublet φ)).Φ1 = φ.Φ1φ:TwoHiggsDoublet(swapDoublet (swapDoublet φ)).Φ2 = φ.Φ2 All goals completed! 🐙

B. Commutation with the gauge action

lemma swapDoublet_smul (g : StandardModel.GaugeGroupI) (φ : TwoHiggsDoublet) : swapDoublet (g φ) = g swapDoublet φ := g:GaugeGroupIφ:TwoHiggsDoubletswapDoublet (g φ) = g swapDoublet φ g:GaugeGroupIφ:TwoHiggsDoublet(swapDoublet (g φ)).Φ1 = (g swapDoublet φ).Φ1g:GaugeGroupIφ:TwoHiggsDoublet(swapDoublet (g φ)).Φ2 = (g swapDoublet φ).Φ2 g:GaugeGroupIφ:TwoHiggsDoublet(swapDoublet (g φ)).Φ1 = (g swapDoublet φ).Φ1g:GaugeGroupIφ:TwoHiggsDoublet(swapDoublet (g φ)).Φ2 = (g swapDoublet φ).Φ2 All goals completed! 🐙

C. The action on the Gram vector

Swapping the doublets sends the gram vector through the sign flip of the imaginary and difference components.

φ:TwoHiggsDoubletφ.Φ2 ^ 2 + φ.Φ1 ^ 2 = φ.Φ1 ^ 2 + φ.Φ2 ^ 2; All goals completed! 🐙
All goals completed! 🐙φ:TwoHiggsDoublet2 * -(φ.Φ1, φ.Φ2⟫_).im = -(2 * (φ.Φ1, φ.Φ2⟫_).im); All goals completed! 🐙φ:TwoHiggsDoubletφ.Φ2 ^ 2 - φ.Φ1 ^ 2 = -(φ.Φ1 ^ 2 - φ.Φ2 ^ 2); All goals completed! 🐙

D. Effect on gauge invariance and mass dimension

V:EffectivePotentialn:p:MvPolynomial (Module.Dual TwoHiggsDoublet) hp: (φ : TwoHiggsDoublet), V φ = (MvPolynomial.eval fun i => i φ) phdeg:p.totalDegree nφ:TwoHiggsDoublet(MvPolynomial.eval fun i => i (swapDoublet φ)) p = (MvPolynomial.eval ((fun i => i φ) fun i => i ∘ₗ swapDoublet)) p; All goals completed! 🐙 V:EffectivePotentialn:p:MvPolynomial (Module.Dual TwoHiggsDoublet) hp: (φ : TwoHiggsDoublet), V φ = (MvPolynomial.eval fun i => i φ) phdeg:p.totalDegree n((MvPolynomial.rename fun i => i ∘ₗ swapDoublet) p).totalDegree n All goals completed! 🐙All goals completed! 🐙