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 Physlib.Particles.BeyondTheStandardModel.TwoHDM.Basic

The Module structure on the two Higgs doublet model

@[expose] public section

The structure of a module

instance : Add TwoHiggsDoublet where add H1 H2 := { Φ1 := H1.Φ1 + H2.Φ1, Φ2 := H1.Φ2 + H2.Φ2 }@[simp] lemma add_fst (H1 H2 : TwoHiggsDoublet) : (H1 + H2).Φ1 = H1.Φ1 + H2.Φ1 := rfl@[simp] lemma add_snd (H1 H2 : TwoHiggsDoublet) : (H1 + H2).Φ2 = H1.Φ2 + H2.Φ2 := rflinstance : Zero TwoHiggsDoublet where zero := { Φ1 := 0, Φ2 := 0 }@[simp] lemma zero_fst : (0 : TwoHiggsDoublet).Φ1 = 0 := rfl@[simp] lemma zero_snd : (0 : TwoHiggsDoublet).Φ2 = 0 := rflinstance : SMul TwoHiggsDoublet where smul c H := { Φ1 := c H.Φ1, Φ2 := c H.Φ2 }@[simp] lemma smul_fst (c : ) (H : TwoHiggsDoublet) : (c H).Φ1 = c H.Φ1 := rfl@[simp] lemma smul_snd (c : ) (H : TwoHiggsDoublet) : (c H).Φ2 = c H.Φ2 := rflinstance : Neg TwoHiggsDoublet where neg H := { Φ1 := -H.Φ1, Φ2 := -H.Φ2 }@[simp] lemma neg_fst (H : TwoHiggsDoublet) : (-H).Φ1 = -H.Φ1 := rfl@[simp] lemma neg_snd (H : TwoHiggsDoublet) : (-H).Φ2 = -H.Φ2 := rflinstance : AddCommGroup TwoHiggsDoublet where add_assoc H1 H2 H3 := H1:TwoHiggsDoubletH2:TwoHiggsDoubletH3:TwoHiggsDoubletH1 + H2 + H3 = H1 + (H2 + H3) H1:TwoHiggsDoubletH2:TwoHiggsDoubletH3:TwoHiggsDoubleti✝:Fin 2(H1 + H2 + H3).Φ1.ofLp i✝ = (H1 + (H2 + H3)).Φ1.ofLp i✝H1:TwoHiggsDoubletH2:TwoHiggsDoubletH3:TwoHiggsDoubleti✝:Fin 2(H1 + H2 + H3).Φ2.ofLp i✝ = (H1 + (H2 + H3)).Φ2.ofLp i✝ H1:TwoHiggsDoubletH2:TwoHiggsDoubletH3:TwoHiggsDoubleti✝:Fin 2(H1 + H2 + H3).Φ1.ofLp i✝ = (H1 + (H2 + H3)).Φ1.ofLp i✝H1:TwoHiggsDoubletH2:TwoHiggsDoubletH3:TwoHiggsDoubleti✝:Fin 2(H1 + H2 + H3).Φ2.ofLp i✝ = (H1 + (H2 + H3)).Φ2.ofLp i✝ All goals completed! 🐙 zero_add H := H:TwoHiggsDoublet0 + H = H H:TwoHiggsDoubleti✝:Fin 2(0 + H).Φ1.ofLp i✝ = H.Φ1.ofLp i✝H:TwoHiggsDoubleti✝:Fin 2(0 + H).Φ2.ofLp i✝ = H.Φ2.ofLp i✝ H:TwoHiggsDoubleti✝:Fin 2(0 + H).Φ1.ofLp i✝ = H.Φ1.ofLp i✝H:TwoHiggsDoubleti✝:Fin 2(0 + H).Φ2.ofLp i✝ = H.Φ2.ofLp i✝ All goals completed! 🐙 add_zero H := H:TwoHiggsDoubletH + 0 = H H:TwoHiggsDoubleti✝:Fin 2(H + 0).Φ1.ofLp i✝ = H.Φ1.ofLp i✝H:TwoHiggsDoubleti✝:Fin 2(H + 0).Φ2.ofLp i✝ = H.Φ2.ofLp i✝ H:TwoHiggsDoubleti✝:Fin 2(H + 0).Φ1.ofLp i✝ = H.Φ1.ofLp i✝H:TwoHiggsDoubleti✝:Fin 2(H + 0).Φ2.ofLp i✝ = H.Φ2.ofLp i✝ All goals completed! 🐙 nsmul := nsmulRec add_comm H1 H2 := H1:TwoHiggsDoubletH2:TwoHiggsDoubletH1 + H2 = H2 + H1 H1:TwoHiggsDoubletH2:TwoHiggsDoubleti✝:Fin 2(H1 + H2).Φ1.ofLp i✝ = (H2 + H1).Φ1.ofLp i✝H1:TwoHiggsDoubletH2:TwoHiggsDoubleti✝:Fin 2(H1 + H2).Φ2.ofLp i✝ = (H2 + H1).Φ2.ofLp i✝ H1:TwoHiggsDoubletH2:TwoHiggsDoubleti✝:Fin 2(H1 + H2).Φ1.ofLp i✝ = (H2 + H1).Φ1.ofLp i✝H1:TwoHiggsDoubletH2:TwoHiggsDoubleti✝:Fin 2(H1 + H2).Φ2.ofLp i✝ = (H2 + H1).Φ2.ofLp i✝ All goals completed! 🐙 zsmul := zsmulRec neg_add_cancel H := H:TwoHiggsDoublet-H + H = 0 H:TwoHiggsDoubleti✝:Fin 2(-H + H).Φ1.ofLp i✝ = (Φ1 0).ofLp i✝H:TwoHiggsDoubleti✝:Fin 2(-H + H).Φ2.ofLp i✝ = (Φ2 0).ofLp i✝ H:TwoHiggsDoubleti✝:Fin 2(-H + H).Φ1.ofLp i✝ = (Φ1 0).ofLp i✝H:TwoHiggsDoubleti✝:Fin 2(-H + H).Φ2.ofLp i✝ = (Φ2 0).ofLp i✝ All goals completed! 🐙instance : Module TwoHiggsDoublet where smul_add c H1 H2 := c:H1:TwoHiggsDoubletH2:TwoHiggsDoubletc (H1 + H2) = c H1 + c H2 c:H1:TwoHiggsDoubletH2:TwoHiggsDoubleti✝:Fin 2(c (H1 + H2)).Φ1.ofLp i✝ = (c H1 + c H2).Φ1.ofLp i✝c:H1:TwoHiggsDoubletH2:TwoHiggsDoubleti✝:Fin 2(c (H1 + H2)).Φ2.ofLp i✝ = (c H1 + c H2).Φ2.ofLp i✝ c:H1:TwoHiggsDoubletH2:TwoHiggsDoubleti✝:Fin 2(c (H1 + H2)).Φ1.ofLp i✝ = (c H1 + c H2).Φ1.ofLp i✝c:H1:TwoHiggsDoubletH2:TwoHiggsDoubleti✝:Fin 2(c (H1 + H2)).Φ2.ofLp i✝ = (c H1 + c H2).Φ2.ofLp i✝ All goals completed! 🐙 add_smul c1 c2 H := c1:c2:H:TwoHiggsDoublet(c1 + c2) H = c1 H + c2 H c1:c2:H:TwoHiggsDoubleti✝:Fin 2((c1 + c2) H).Φ1.ofLp i✝ = (c1 H + c2 H).Φ1.ofLp i✝c1:c2:H:TwoHiggsDoubleti✝:Fin 2((c1 + c2) H).Φ2.ofLp i✝ = (c1 H + c2 H).Φ2.ofLp i✝ c1:c2:H:TwoHiggsDoubleti✝:Fin 2((c1 + c2) H).Φ1.ofLp i✝ = (c1 H + c2 H).Φ1.ofLp i✝c1:c2:H:TwoHiggsDoubleti✝:Fin 2((c1 + c2) H).Φ2.ofLp i✝ = (c1 H + c2 H).Φ2.ofLp i✝ All goals completed! 🐙 one_smul H := H:TwoHiggsDoublet1 H = H H:TwoHiggsDoubleti✝:Fin 2(1 H).Φ1.ofLp i✝ = H.Φ1.ofLp i✝H:TwoHiggsDoubleti✝:Fin 2(1 H).Φ2.ofLp i✝ = H.Φ2.ofLp i✝ H:TwoHiggsDoubleti✝:Fin 2(1 H).Φ1.ofLp i✝ = H.Φ1.ofLp i✝H:TwoHiggsDoubleti✝:Fin 2(1 H).Φ2.ofLp i✝ = H.Φ2.ofLp i✝ All goals completed! 🐙 mul_smul c1 c2 H := c1:c2:H:TwoHiggsDoublet(c1 * c2) H = c1 c2 H c1:c2:H:TwoHiggsDoubleti✝:Fin 2((c1 * c2) H).Φ1.ofLp i✝ = (c1 c2 H).Φ1.ofLp i✝c1:c2:H:TwoHiggsDoubleti✝:Fin 2((c1 * c2) H).Φ2.ofLp i✝ = (c1 c2 H).Φ2.ofLp i✝ c1:c2:H:TwoHiggsDoubleti✝:Fin 2((c1 * c2) H).Φ1.ofLp i✝ = (c1 c2 H).Φ1.ofLp i✝c1:c2:H:TwoHiggsDoubleti✝:Fin 2((c1 * c2) H).Φ2.ofLp i✝ = (c1 c2 H).Φ2.ofLp i✝ All goals completed! 🐙 smul_zero c := c:c 0 = 0 c:i✝:Fin 2(c 0).Φ1.ofLp i✝ = (Φ1 0).ofLp i✝c:i✝:Fin 2(c 0).Φ2.ofLp i✝ = (Φ2 0).ofLp i✝ c:i✝:Fin 2(c 0).Φ1.ofLp i✝ = (Φ1 0).ofLp i✝c:i✝:Fin 2(c 0).Φ2.ofLp i✝ = (Φ2 0).ofLp i✝ All goals completed! 🐙 zero_smul H := H:TwoHiggsDoublet0 H = 0 H:TwoHiggsDoubleti✝:Fin 2(0 H).Φ1.ofLp i✝ = (Φ1 0).ofLp i✝H:TwoHiggsDoubleti✝:Fin 2(0 H).Φ2.ofLp i✝ = (Φ2 0).ofLp i✝ H:TwoHiggsDoubleti✝:Fin 2(0 H).Φ1.ofLp i✝ = (Φ1 0).ofLp i✝H:TwoHiggsDoubleti✝:Fin 2(0 H).Φ2.ofLp i✝ = (Φ2 0).ofLp i✝ All goals completed! 🐙