Imports
/-
Copyright (c) 2025 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.SuperSymmetry.SU5.ChargeSpectrum.OfFieldLabel
public import Physlib.Particles.SuperSymmetry.SU5.Potential
public import Mathlib.Tactic.AbelCharges associated with a potential term
i. Overview
In this module we give the multiset of charges associated with a given type of potential term, given a charge spectrum.
We will define two versions of this, one based on the underlying fields on the
potentials, and the charges that they carry, and one more explicit version which
is faster to compute with. The former is ofPotentialTerm, and the latter is
ofPotentialTerm'.
We will show that these two multisets have the same elements.
ii. Key results
ofPotentialTerm : The multiset of charges associated with a potential term,
defined in terms of the fields making up that potential term, given a charge spectrum.
ofPotentialTerm' : The multiset of charges associated with a potential term,
defined explicitly, given a charge spectrum.
iii. Table of contents
A. Charges of a potential term from field labels
A.1. Monotonicity of ofPotentialTerm
A.2. Charges of potential terms for the empty charge spectrum
B. Explicit construction of charges of a potential term
B.1. Explicit multisets for ofPotentialTerm'
B.2. ofPotentialTerm' on the empty charge spectrum
C. Relation between two constructions of charges of potential terms
C.1. Showing that ofPotentialTerm is a subset of ofPotentialTerm'
C.2. Showing that ofPotentialTerm' is a subset of ofPotentialTerm
C.3. Equivalence of elements of ofPotentialTerm and ofPotentialTerm'
C.4. Induced monotonicity of ofPotentialTerm'
iv. References
There are no known references for this material.
@[expose] public sectionA. Charges of a potential term from field labels
We first define ofPotentialTerm, and prover properties of it.
This is slow to compute in practice.
Given a charges x : Charges associated to the representations, and a potential
term T, the charges associated with instances of that potential term.
def ofPotentialTerm (x : ChargeSpectrum π©) (T : PotentialTerm) : Multiset π© :=
let add : Multiset π© β Multiset π© β Multiset π© := fun a b => (a ΓΛ’ b).map
fun (x, y) => x + y
(T.toFieldLabel.map fun F => (ofFieldLabel x F).val).foldl add {0}
A.1. Monotonicity of ofPotentialTerm
We show that ofPotentialTerm is monotone in its charge spectrum argument.
That is if x β y then ofPotentialTerm x T β ofPotentialTerm y T.
π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10T:PotentialTermh1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm T β y.ofPotentialTerm T
cases T ΞΌ π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm ΞΌ β y.ofPotentialTerm ΞΌΞ² π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm Ξ² β y.ofPotentialTerm Ξ²Ξ π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm Ξ β y.ofPotentialTerm ΞW1 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm W1 β y.ofPotentialTerm W1W2 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm W2 β y.ofPotentialTerm W2W3 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm W3 β y.ofPotentialTerm W3W4 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm W4 β y.ofPotentialTerm W4K1 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm K1 β y.ofPotentialTerm K1K2 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm K2 β y.ofPotentialTerm K2topYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm topYukawa β y.ofPotentialTerm topYukawabottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ x.ofPotentialTerm bottomYukawa β y.ofPotentialTerm bottomYukawa
all_goals
simp [ofPotentialTerm, PotentialTerm.toFieldLabel] bottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ Multiset.map (fun x => x.1 + x.2)
(Multiset.map (fun x => x.1 + x.2)
(Multiset.map (fun x => x.1 + x.2) ({0} ΓΛ’ (x.ofFieldLabel FieldLabel.tenMatter).val) ΓΛ’
(x.ofFieldLabel FieldLabel.fiveBarMatter).val) ΓΛ’
(x.ofFieldLabel FieldLabel.fiveBarHd).val) β
Multiset.map (fun x => x.1 + x.2)
(Multiset.map (fun x => x.1 + x.2)
(Multiset.map (fun x => x.1 + x.2) ({0} ΓΛ’ (y.ofFieldLabel FieldLabel.tenMatter).val) ΓΛ’
(y.ofFieldLabel FieldLabel.fiveBarMatter).val) ΓΛ’
(y.ofFieldLabel FieldLabel.fiveBarHd).val)
repeat'
apply Multiset.map_subset_map <| Multiset.subset_iff.mpr <|
h1 _ (Finset.subset_def.mp (ofFieldLabel_mono h _)) π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x.qHd.toFinset β y.qHd.toFinset β§ x.qHu.toFinset β y.qHu.toFinset β§ x.Q5 β y.Q5 β§ x.Q10 β y.Q10h1:β {S1 S2 T1 T2 : Multiset π©}, S1 β S2 β T1 β T2 β S1 ΓΛ’ T1 β S2 ΓΛ’ T2β’ {0} β {0}
simp All goals completed! πA.2. Charges of potential terms for the empty charge spectrum
For the empty charge spectrum, the charges associated with any potential term is empty.
@[simp]
lemma ofPotentialTerm_empty (T : PotentialTerm) :
ofPotentialTerm (β
: ChargeSpectrum π©) T = β
:= by π©:Typeinstβ:AddCommGroup π©T:PotentialTermβ’ β
.ofPotentialTerm T = β
cases T ΞΌ π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm ΞΌ = β
Ξ² π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm Ξ² = β
Ξ π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm Ξ = β
W1 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm W1 = β
W2 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm W2 = β
W3 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm W3 = β
W4 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm W4 = β
K1 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm K1 = β
K2 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm K2 = β
topYukawa π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm topYukawa = β
bottomYukawa π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm bottomYukawa = β
all_goals
rfl All goals completed! πB. Explicit construction of charges of a potential term
We now turn to a more explicit construction of the charges associated with a potential term. This is faster to compute with, but less obviously connected to the underlying fields.
Given a charges x : ChargeSpectrum associated to the representations, and a potential
term T, the charges associated with instances of that potential term.
This is a more explicit form of PotentialTerm, which has the benefit that
it is quick with decide, but it is not defined based on more fundamental
concepts, like ofPotentialTerm is.
def ofPotentialTerm' (y : ChargeSpectrum π©) (T : PotentialTerm) : Multiset π© :=
let qHd := y.qHd
let qHu := y.qHu
let Q5 := y.Q5
let Q10 := y.Q10
match T with
| ΞΌ =>
match qHd, qHu with
| none, _ => β
| _, none => β
| some qHd, some qHu => {qHd - qHu}
| Ξ² =>
match qHu with
| none => β
| some qHu => Q5.val.map (fun x => - qHu + x)
| Ξ => (Q5.product <| Q5.product <| Q10).val.map (fun x => x.1 + x.2.1 + x.2.2)
| W1 => (Q5.product <| Q10.product <| Q10.product <| Q10).val.map
(fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2)
| W2 =>
match qHd with
| none => β
| some qHd =>
(Q10.product <| Q10.product <| Q10).val.map (fun x => qHd + x.1 + x.2.1 + x.2.2)
| W3 =>
match qHu with
| none => β
| some qHu => (Q5.product <| Q5).val.map (fun x => -qHu - qHu + x.1 + x.2)
| W4 =>
match qHd, qHu with
| none, _ => β
| _, none => β
| some qHd, some qHu => Q5.val.map (fun x => qHd - qHu - qHu + x)
| K1 => (Q5.product <| Q10.product <| Q10).val.map
(fun x => - x.1 + x.2.1 + x.2.2)
| K2 =>
match qHd, qHu with
| none, _ => β
| _, none => β
| some qHd, some qHu => Q10.val.map (fun x => qHd + qHu + x)
| topYukawa =>
match qHu with
| none => β
| some qHu => (Q10.product <| Q10).val.map (fun x => - qHu + x.1 + x.2)
| bottomYukawa =>
match qHd with
| none => β
| some qHd => (Q5.product <| Q10).val.map (fun x => qHd + x.1 + x.2)
B.1. Explicit multisets for ofPotentialTerm'
For each potential term, we give an explicit form of the multiset ofPotentialTerm'.
lemma ofPotentialTerm'_ΞΌ_finset {x : ChargeSpectrum π©} :
x.ofPotentialTerm' ΞΌ =
(x.qHd.toFinset.product <| x.qHu.toFinset).val.map (fun x => x.1 - x.2) := by π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©β’ x.ofPotentialTerm' ΞΌ = Multiset.map (fun x => x.1 - x.2) (x.qHd.toFinset.product x.qHu.toFinset).val
rcases x with β¨_ | qHd, _ | qHu, Q5, Q10β© none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' ΞΌ =
Multiset.map (fun x => x.1 - x.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' ΞΌ =
Multiset.map (fun x => x.1 - x.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' ΞΌ =
Multiset.map (fun x => x.1 - x.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' ΞΌ =
Multiset.map (fun x => x.1 - x.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset).val <;> none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' ΞΌ =
Multiset.map (fun x => x.1 - x.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' ΞΌ =
Multiset.map (fun x => x.1 - x.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' ΞΌ =
Multiset.map (fun x => x.1 - x.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' ΞΌ =
Multiset.map (fun x => x.1 - x.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset).val simp [ofPotentialTerm'] All goals completed! πlemma ofPotentialTerm'_Ξ²_finset {x : ChargeSpectrum π©} :
x.ofPotentialTerm' Ξ² =
(x.qHu.toFinset.product <| x.Q5).val.map (fun x => - x.1 + x.2) := by π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©β’ x.ofPotentialTerm' Ξ² = Multiset.map (fun x => -x.1 + x.2) (x.qHu.toFinset.product x.Q5).val
rcases x with β¨_ | qHd, _ | qHu, Q5, Q10β© none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' Ξ² =
Multiset.map (fun x => -x.1 + x.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' Ξ² =
Multiset.map (fun x => -x.1 + x.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' Ξ² =
Multiset.map (fun x => -x.1 + x.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' Ξ² =
Multiset.map (fun x => -x.1 + x.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5).val <;> none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' Ξ² =
Multiset.map (fun x => -x.1 + x.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' Ξ² =
Multiset.map (fun x => -x.1 + x.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' Ξ² =
Multiset.map (fun x => -x.1 + x.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' Ξ² =
Multiset.map (fun x => -x.1 + x.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5).val simp [ofPotentialTerm'] All goals completed! πlemma ofPotentialTerm'_W2_finset {x : ChargeSpectrum π©} :
x.ofPotentialTerm' W2 = (x.qHd.toFinset.product <|
x.Q10.product <| x.Q10.product <| x.Q10).val.map
(fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2) := by π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©β’ x.ofPotentialTerm' W2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2)
(x.qHd.toFinset.product (x.Q10.product (x.Q10.product x.Q10))).val
rcases x with β¨_ | qHd, _ | qHu, Q5, Q10β© none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10))).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10))).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10))).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10))).val <;> none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10))).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10))).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10))).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2.1 + x.2.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10))).val simp [ofPotentialTerm'] All goals completed! πlemma ofPotentialTerm'_W3_finset {x : ChargeSpectrum π©} :
x.ofPotentialTerm' W3 = (x.qHu.toFinset.product <| x.Q5.product <| x.Q5).val.map
(fun x => -x.1 - x.1 + x.2.1 + x.2.2) := by π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©β’ x.ofPotentialTerm' W3 =
Multiset.map (fun x => -x.1 - x.1 + x.2.1 + x.2.2) (x.qHu.toFinset.product (x.Q5.product x.Q5)).val
rcases x with β¨_ | qHd, _ | qHu, Q5, Q10β© none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W3 =
Multiset.map (fun x => -x.1 - x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5)).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W3 =
Multiset.map (fun x => -x.1 - x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5)).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W3 =
Multiset.map (fun x => -x.1 - x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5)).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W3 =
Multiset.map (fun x => -x.1 - x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5)).val <;> none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W3 =
Multiset.map (fun x => -x.1 - x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5)).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W3 =
Multiset.map (fun x => -x.1 - x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5)).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W3 =
Multiset.map (fun x => -x.1 - x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5)).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W3 =
Multiset.map (fun x => -x.1 - x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5)).val simp [ofPotentialTerm'] All goals completed! πlemma ofPotentialTerm'_W4_finset {x : ChargeSpectrum π©} :
x.ofPotentialTerm' W4 = (x.qHd.toFinset.product <|
x.qHu.toFinset.product <| x.Q5).val.map
(fun x => x.1 - x.2.1 - x.2.1 + x.2.2) := by π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©β’ x.ofPotentialTerm' W4 =
Multiset.map (fun x => x.1 - x.2.1 - x.2.1 + x.2.2) (x.qHd.toFinset.product (x.qHu.toFinset.product x.Q5)).val
rcases x with β¨_ | qHd, _ | qHu, Q5, Q10β© none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W4 =
Multiset.map (fun x => x.1 - x.2.1 - x.2.1 + x.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5)).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W4 =
Multiset.map (fun x => x.1 - x.2.1 - x.2.1 + x.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5)).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W4 =
Multiset.map (fun x => x.1 - x.2.1 - x.2.1 + x.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5)).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W4 =
Multiset.map (fun x => x.1 - x.2.1 - x.2.1 + x.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5)).val <;> none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W4 =
Multiset.map (fun x => x.1 - x.2.1 - x.2.1 + x.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5)).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W4 =
Multiset.map (fun x => x.1 - x.2.1 - x.2.1 + x.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5)).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W4 =
Multiset.map (fun x => x.1 - x.2.1 - x.2.1 + x.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5)).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' W4 =
Multiset.map (fun x => x.1 - x.2.1 - x.2.1 + x.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5)).val simp [ofPotentialTerm'] All goals completed! πlemma ofPotentialTerm'_K2_finset {x : ChargeSpectrum π©} :
x.ofPotentialTerm' K2 = (x.qHd.toFinset.product <|
x.qHu.toFinset.product <| x.Q10).val.map
(fun x => x.1 + x.2.1 + x.2.2) := by π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©β’ x.ofPotentialTerm' K2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2) (x.qHd.toFinset.product (x.qHu.toFinset.product x.Q10)).val
rcases x with β¨_ | qHd, _ | qHu, Q5, Q10β© none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' K2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' K2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' K2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' K2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).val <;> none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' K2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' K2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' K2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' K2 =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).val simp [ofPotentialTerm'] All goals completed! πlemma ofPotentialTerm'_topYukawa_finset {x : ChargeSpectrum π©} :
x.ofPotentialTerm' topYukawa = (x.qHu.toFinset.product <|
x.Q10.product <| x.Q10).val.map
(fun x => -x.1 + x.2.1 + x.2.2) := by π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©β’ x.ofPotentialTerm' topYukawa =
Multiset.map (fun x => -x.1 + x.2.1 + x.2.2) (x.qHu.toFinset.product (x.Q10.product x.Q10)).val
rcases x with β¨_ | qHd, _ | qHu, Q5, Q10β© none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' topYukawa =
Multiset.map (fun x => -x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' topYukawa =
Multiset.map (fun x => -x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' topYukawa =
Multiset.map (fun x => -x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' topYukawa =
Multiset.map (fun x => -x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).val <;> none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' topYukawa =
Multiset.map (fun x => -x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' topYukawa =
Multiset.map (fun x => -x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' topYukawa =
Multiset.map (fun x => -x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' topYukawa =
Multiset.map (fun x => -x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHu.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).val simp [ofPotentialTerm'] All goals completed! πlemma ofPotentialTerm'_bottomYukawa_finset {x : ChargeSpectrum π©} :
x.ofPotentialTerm' bottomYukawa = (x.1.toFinset.product <|
x.Q5.product <| x.Q10).val.map
(fun x => x.1 + x.2.1 + x.2.2) := by π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©β’ x.ofPotentialTerm' bottomYukawa =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2) (x.qHd.toFinset.product (x.Q5.product x.Q10)).val
rcases x with β¨_ | qHd, _ | qHu, Q5, Q10β© none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' bottomYukawa =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' bottomYukawa =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' bottomYukawa =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' bottomYukawa =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).val <;> none.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©β’ { qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' bottomYukawa =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := none, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valnone.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHu:π©β’ { qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' bottomYukawa =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := none, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.none π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©β’ { qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' bottomYukawa =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := some qHd, qHu := none, Q5 := Q5, Q10 := Q10 }.Q10)).valsome.some π©:Typeinstβ:AddCommGroup π©Q5:Finset π©Q10:Finset π©qHd:π©qHu:π©β’ { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.ofPotentialTerm' bottomYukawa =
Multiset.map (fun x => x.1 + x.2.1 + x.2.2)
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.qHd.toFinset.product
({ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q5.product
{ qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 }.Q10)).val simp [ofPotentialTerm'] All goals completed! π
B.2. ofPotentialTerm' on the empty charge spectrum
We show that for the empty charge spectrum, the charges associated with any potential term is empty,
as defined through ofPotentialTerm'.
@[simp]
lemma ofPotentialTerm'_empty (T : PotentialTerm) :
ofPotentialTerm' (β
: ChargeSpectrum π©) T = β
:= by π©:Typeinstβ:AddCommGroup π©T:PotentialTermβ’ β
.ofPotentialTerm' T = β
cases T ΞΌ π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' ΞΌ = β
Ξ² π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' Ξ² = β
Ξ π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' Ξ = β
W1 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' W1 = β
W2 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' W2 = β
W3 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' W3 = β
W4 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' W4 = β
K1 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' K1 = β
K2 π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' K2 = β
topYukawa π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' topYukawa = β
bottomYukawa π©:Typeinstβ:AddCommGroup π©β’ β
.ofPotentialTerm' bottomYukawa = β
all_goals
simp [ofPotentialTerm'] All goals completed! πC. Relation between two constructions of charges of potential terms
We now give the relation between ofPotentialTerm and ofPotentialTerm'.
We show that they have the same elements, by showing that they are subsets of each other.
The prove of some of these results are rather long since they involve explicit
case analysis for each potential term, due to the nature of the definition
of ofPotentialTerm'.
C.1. Showing that ofPotentialTerm is a subset of ofPotentialTerm'
We first show that ofPotentialTerm is a subset of ofPotentialTerm'.
lemma ofPotentialTerm_subset_ofPotentialTerm' {x : ChargeSpectrum π©} (T : PotentialTerm) :
x.ofPotentialTerm T β x.ofPotentialTerm' T := by π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©T:PotentialTermβ’ x.ofPotentialTerm T β x.ofPotentialTerm' T
refine Multiset.subset_iff.mpr (fun n h => ?_) π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©T:PotentialTermn:π©h:n β x.ofPotentialTerm Tβ’ n β x.ofPotentialTerm' T
simp [ofPotentialTerm] at h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©T:PotentialTermn:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) T.toFieldLabel)β’ n β x.ofPotentialTerm' T
cases T ΞΌ π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) ΞΌ.toFieldLabel)β’ n β x.ofPotentialTerm' ΞΌΞ² π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) Ξ².toFieldLabel)β’ n β x.ofPotentialTerm' Ξ²Ξ π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) Ξ.toFieldLabel)β’ n β x.ofPotentialTerm' ΞW1 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) W1.toFieldLabel)β’ n β x.ofPotentialTerm' W1W2 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) W2.toFieldLabel)β’ n β x.ofPotentialTerm' W2W3 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) W3.toFieldLabel)β’ n β x.ofPotentialTerm' W3W4 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) W4.toFieldLabel)β’ n β x.ofPotentialTerm' W4K1 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) K1.toFieldLabel)β’ n β x.ofPotentialTerm' K1K2 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) K2.toFieldLabel)β’ n β x.ofPotentialTerm' K2topYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) topYukawa.toFieldLabel)β’ n β x.ofPotentialTerm' topYukawabottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:n β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map (fun F => (x.ofFieldLabel F).val) bottomYukawa.toFieldLabel)β’ n β x.ofPotentialTerm' bottomYukawa
all_goals
simp [PotentialTerm.toFieldLabel, -existsAndEq] at h bottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©h:β a b,
((β a_1 b,
((β a b, (a = 0 β§ b β x.ofFieldLabel FieldLabel.tenMatter) β§ a + b = a_1) β§
b β x.ofFieldLabel FieldLabel.fiveBarMatter) β§
a_1 + b = a) β§
b β x.ofFieldLabel FieldLabel.fiveBarHd) β§
a + b = nβ’ n β x.ofPotentialTerm' bottomYukawa
obtain β¨f1, f2, β¨β¨f3, f4, β¨h3, f4_memβ©, rflβ©, f2_memβ©, f1_add_f2_eq_zeroβ© := h bottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:f2 β x.ofFieldLabel FieldLabel.fiveBarHdf3:π©f4:π©h3:β a b, (a = 0 β§ b β x.ofFieldLabel FieldLabel.tenMatter) β§ a + b = f3f4_mem:f4 β x.ofFieldLabel FieldLabel.fiveBarMatterf1_add_f2_eq_zero:f3 + f4 + f2 = nβ’ n β x.ofPotentialTerm' bottomYukawa
case' ΞΌ | Ξ² => Ξ² π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:f2 β x.ofFieldLabel FieldLabel.fiveBarMatterf3:π©f4:π©h3:f3 = 0f4_mem:-f4 β x.ofFieldLabel FieldLabel.fiveBarHuf1_add_f2_eq_zero:f3 + f4 + f2 = nβ’ n β x.ofPotentialTerm' Ξ² obtain β¨rflβ© := h3 Ξ² π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:f2 β x.ofFieldLabel FieldLabel.fiveBarMatterf4:π©f4_mem:-f4 β x.ofFieldLabel FieldLabel.fiveBarHuf1_add_f2_eq_zero:0 + f4 + f2 = nβ’ n β x.ofPotentialTerm' Ξ²
case' Ξ | W1 | W2 | W3 | W4 | K1 | K2 | topYukawa | bottomYukawa => bottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:f2 β x.ofFieldLabel FieldLabel.fiveBarHdf3:π©f4:π©h3:β a b, (a = 0 β§ b β x.ofFieldLabel FieldLabel.tenMatter) β§ a + b = f3f4_mem:f4 β x.ofFieldLabel FieldLabel.fiveBarMatterf1_add_f2_eq_zero:f3 + f4 + f2 = nβ’ n β x.ofPotentialTerm' bottomYukawa
obtain β¨f5, f6, β¨h4, f6_memβ©, rflβ© := h3 bottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:f2 β x.ofFieldLabel FieldLabel.fiveBarHdf4:π©f4_mem:f4 β x.ofFieldLabel FieldLabel.fiveBarMatterf5:π©f6:π©h4:f5 = 0f6_mem:f6 β x.ofFieldLabel FieldLabel.tenMatterf1_add_f2_eq_zero:f5 + f6 + f4 + f2 = nβ’ n β x.ofPotentialTerm' bottomYukawa
case' Ξ | K1 | K2 | topYukawa | bottomYukawa => bottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:f2 β x.ofFieldLabel FieldLabel.fiveBarHdf4:π©f4_mem:f4 β x.ofFieldLabel FieldLabel.fiveBarMatterf5:π©f6:π©h4:f5 = 0f6_mem:f6 β x.ofFieldLabel FieldLabel.tenMatterf1_add_f2_eq_zero:f5 + f6 + f4 + f2 = nβ’ n β x.ofPotentialTerm' bottomYukawa obtain β¨rflβ© := h4 bottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:f2 β x.ofFieldLabel FieldLabel.fiveBarHdf4:π©f4_mem:f4 β x.ofFieldLabel FieldLabel.fiveBarMatterf6:π©f6_mem:f6 β x.ofFieldLabel FieldLabel.tenMatterf1_add_f2_eq_zero:0 + f6 + f4 + f2 = nβ’ n β x.ofPotentialTerm' bottomYukawa
case' W1 | W2 | W3 | W4 => W4 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:-f2 β x.ofFieldLabel FieldLabel.fiveBarHuf4:π©f4_mem:-f4 β x.ofFieldLabel FieldLabel.fiveBarHuf5:π©f6:π©h4:β a b, (a = 0 β§ b β x.ofFieldLabel FieldLabel.fiveBarMatter) β§ a + b = f5f6_mem:f6 β x.ofFieldLabel FieldLabel.fiveBarHdf1_add_f2_eq_zero:f5 + f6 + f4 + f2 = nβ’ n β x.ofPotentialTerm' W4 obtain β¨f7, f8, β¨rfl, f8_memβ©, rflβ© := h4 W4 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:-f2 β x.ofFieldLabel FieldLabel.fiveBarHuf4:π©f4_mem:-f4 β x.ofFieldLabel FieldLabel.fiveBarHuf6:π©f6_mem:f6 β x.ofFieldLabel FieldLabel.fiveBarHdf8:π©f8_mem:f8 β x.ofFieldLabel FieldLabel.fiveBarMatterf1_add_f2_eq_zero:0 + f8 + f6 + f4 + f2 = nβ’ n β x.ofPotentialTerm' W4
all_goals
try simp [ofPotentialTerm'_W2_finset, ofPotentialTerm'_W3_finset,
ofPotentialTerm'_Ξ²_finset, ofPotentialTerm'_ΞΌ_finset,
ofPotentialTerm'_W4_finset, ofPotentialTerm'_K2_finset,
ofPotentialTerm'_topYukawa_finset, ofPotentialTerm'_bottomYukawa_finset] Ξ² π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:f2 β x.ofFieldLabel FieldLabel.fiveBarMatterf4:π©f4_mem:-f4 β x.ofFieldLabel FieldLabel.fiveBarHuf1_add_f2_eq_zero:0 + f4 + f2 = nβ’ β a b, (x.qHu = some a β§ b β x.Q5) β§ -a + b = n
try simp [ofPotentialTerm', -existsAndEq] Ξ² π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f2_mem:f2 β x.ofFieldLabel FieldLabel.fiveBarMatterf4:π©f4_mem:-f4 β x.ofFieldLabel FieldLabel.fiveBarHuf1_add_f2_eq_zero:0 + f4 + f2 = nβ’ β a b, (x.qHu = some a β§ b β x.Q5) β§ -a + b = n
simp_all [ofFieldLabel, -existsAndEq] Ξ² π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f2_mem:f2 β x.Q5f4_mem:x.qHu = some (-f4)f1_add_f2_eq_zero:f4 + f2 = nβ’ β a b, (-f4 = a β§ b β x.Q5) β§ -a + b = n
case' W1 => W1 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:f2 β x.Q5f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f8_mem:f8 β x.Q10f1_add_f2_eq_zero:f8 + f6 + f4 + f2 = nβ’ β a a_1 a_2 b, (a β x.Q5 β§ a_1 β x.Q10 β§ a_2 β x.Q10 β§ b β x.Q10) β§ a + a_1 + a_2 + b = n use f2, f4, f6, f8 h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:f2 β x.Q5f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f8_mem:f8 β x.Q10f1_add_f2_eq_zero:f8 + f6 + f4 + f2 = nβ’ (f2 β x.Q5 β§ f4 β x.Q10 β§ f6 β x.Q10 β§ f8 β x.Q10) β§ f2 + f4 + f6 + f8 = n
case' W2 => W2 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:x.qHd = some f2f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f8_mem:f8 β x.Q10f1_add_f2_eq_zero:f8 + f6 + f4 + f2 = nβ’ β a a_1 a_2 b, (f2 = a β§ a_1 β x.Q10 β§ a_2 β x.Q10 β§ b β x.Q10) β§ a + a_1 + a_2 + b = n use f2, f4, f6, f8 h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:x.qHd = some f2f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f8_mem:f8 β x.Q10f1_add_f2_eq_zero:f8 + f6 + f4 + f2 = nβ’ (f2 = f2 β§ f4 β x.Q10 β§ f6 β x.Q10 β§ f8 β x.Q10) β§ f2 + f4 + f6 + f8 = n
case' W3 => W3 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:x.qHu = some (-f2)f4_mem:f4 = f2f6_mem:f6 β x.Q5f8_mem:f8 β x.Q5f1_add_f2_eq_zero:f8 + f6 + f2 + f2 = nβ’ β a a_1 b, (-f2 = a β§ a_1 β x.Q5 β§ b β x.Q5) β§ -a - a + a_1 + b = n use (-f2), f6, f8 h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:x.qHu = some (-f2)f4_mem:f4 = f2f6_mem:f6 β x.Q5f8_mem:f8 β x.Q5f1_add_f2_eq_zero:f8 + f6 + f2 + f2 = nβ’ (-f2 = -f2 β§ f6 β x.Q5 β§ f8 β x.Q5) β§ - -f2 - -f2 + f6 + f8 = n
case' W4 => W4 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:x.qHu = some (-f2)f4_mem:f4 = f2f6_mem:x.qHd = some f6f8_mem:f8 β x.Q5f1_add_f2_eq_zero:f8 + f6 + f2 + f2 = nβ’ β a a_1 b, (f6 = a β§ -f2 = a_1 β§ b β x.Q5) β§ a - a_1 - a_1 + b = n use f6, (-f4), f8 h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:x.qHu = some (-f2)f4_mem:f4 = f2f6_mem:x.qHd = some f6f8_mem:f8 β x.Q5f1_add_f2_eq_zero:f8 + f6 + f2 + f2 = nβ’ (f6 = f6 β§ -f2 = -f4 β§ f8 β x.Q5) β§ f6 - -f4 - -f4 + f8 = n
case' K1 => K1 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:-f2 β x.Q5f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ β a a_1 b, (a β x.Q5 β§ a_1 β x.Q10 β§ b β x.Q10) β§ -a + a_1 + b = n use (-f2), f4, f6 h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:-f2 β x.Q5f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ (-f2 β x.Q5 β§ f4 β x.Q10 β§ f6 β x.Q10) β§ - -f2 + f4 + f6 = n
case' K2 => K2 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:f2 β x.Q10f4_mem:x.qHd = some f4f6_mem:x.qHu = some f6f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ β a a_1 b, (f4 = a β§ f6 = a_1 β§ b β x.Q10) β§ a + a_1 + b = n use f4, f6, f2 h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:f2 β x.Q10f4_mem:x.qHd = some f4f6_mem:x.qHu = some f6f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ (f4 = f4 β§ f6 = f6 β§ f2 β x.Q10) β§ f4 + f6 + f2 = n
case' Ξ => Ξ π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:f2 β x.Q10f4_mem:f4 β x.Q5f6_mem:f6 β x.Q5f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ β a a_1 b, (a β x.Q5 β§ a_1 β x.Q5 β§ b β x.Q10) β§ a + a_1 + b = n use f4, f6, f2 h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:f2 β x.Q10f4_mem:f4 β x.Q5f6_mem:f6 β x.Q5f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ (f4 β x.Q5 β§ f6 β x.Q5 β§ f2 β x.Q10) β§ f4 + f6 + f2 = n
case' topYukawa => topYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:x.qHu = some (-f2)f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ β a a_1 b, (-f2 = a β§ a_1 β x.Q10 β§ b β x.Q10) β§ -a + a_1 + b = n use (-f2), f4, f6 h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:x.qHu = some (-f2)f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ (-f2 = -f2 β§ f4 β x.Q10 β§ f6 β x.Q10) β§ - -f2 + f4 + f6 = n
case' bottomYukawa => bottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:x.qHd = some f2f4_mem:f4 β x.Q5f6_mem:f6 β x.Q10f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ β a a_1 b, (f2 = a β§ a_1 β x.Q5 β§ b β x.Q10) β§ a + a_1 + b = n use f2, f4, f6 h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:x.qHd = some f2f4_mem:f4 β x.Q5f6_mem:f6 β x.Q10f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ (f2 = f2 β§ f4 β x.Q5 β§ f6 β x.Q10) β§ f2 + f4 + f6 = n
case' Ξ² => Ξ² π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f2_mem:f2 β x.Q5f4_mem:x.qHu = some (-f4)f1_add_f2_eq_zero:f4 + f2 = nβ’ β a b, (-f4 = a β§ b β x.Q5) β§ -a + b = n use (-f4), f2 h π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f2_mem:f2 β x.Q5f4_mem:x.qHu = some (-f4)f1_add_f2_eq_zero:f4 + f2 = nβ’ (-f4 = -f4 β§ f2 β x.Q5) β§ - -f4 + f2 = n
all_goals simp_all All goals completed! π
all_goals
rw [β f1_add_f2_eq_zero bottomYukawa π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f2_mem:x.qHd = some f2f4_mem:f4 β x.Q5f6_mem:f6 β x.Q10f1_add_f2_eq_zero:f6 + f4 + f2 = nβ’ f2 + f4 + f6 = f6 + f4 + f2 W1 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:f2 β x.Q5f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f8_mem:f8 β x.Q10f1_add_f2_eq_zero:f8 + f6 + f4 + f2 = nβ’ f2 + f4 + f6 + f8 = f8 + f6 + f4 + f2] W2 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:x.qHd = some f2f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f8_mem:f8 β x.Q10f1_add_f2_eq_zero:f8 + f6 + f4 + f2 = nβ’ f2 + f4 + f6 + f8 = f8 + f6 + f4 + f2 W1 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:f2 β x.Q5f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f8_mem:f8 β x.Q10f1_add_f2_eq_zero:f8 + f6 + f4 + f2 = nβ’ f2 + f4 + f6 + f8 = f8 + f6 + f4 + f2W1 π©:Typeinstβ:AddCommGroup π©x:ChargeSpectrum π©n:π©f2:π©f4:π©f6:π©f8:π©f2_mem:f2 β x.Q5f4_mem:f4 β x.Q10f6_mem:f6 β x.Q10f8_mem:f8 β x.Q10f1_add_f2_eq_zero:f8 + f6 + f4 + f2 = nβ’ f2 + f4 + f6 + f8 = f8 + f6 + f4 + f2
abel All goals completed! π
C.2. Showing that ofPotentialTerm' is a subset of ofPotentialTerm
We now show the other direction of the subset relation, that
ofPotentialTerm' is a subset of ofPotentialTerm.
lemma ofPotentialTerm'_subset_ofPotentialTerm [DecidableEq π©]
{x : ChargeSpectrum π©} (T : PotentialTerm) :
x.ofPotentialTerm' T β x.ofPotentialTerm T := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©T:PotentialTermβ’ x.ofPotentialTerm' T β x.ofPotentialTerm T
refine Multiset.subset_iff.mpr (fun n h => ?_) π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©T:PotentialTermn:π©h:n β x.ofPotentialTerm' Tβ’ n β x.ofPotentialTerm T
cases T ΞΌ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' ΞΌβ’ n β x.ofPotentialTerm ΞΌΞ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' Ξ²β’ n β x.ofPotentialTerm Ξ²Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' Ξβ’ n β x.ofPotentialTerm ΞW1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' W1β’ n β x.ofPotentialTerm W1W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' W2β’ n β x.ofPotentialTerm W2W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' W3β’ n β x.ofPotentialTerm W3W4 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' W4β’ n β x.ofPotentialTerm W4K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' K1β’ n β x.ofPotentialTerm K1K2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' K2β’ n β x.ofPotentialTerm K2topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' topYukawaβ’ n β x.ofPotentialTerm topYukawabottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:n β x.ofPotentialTerm' bottomYukawaβ’ n β x.ofPotentialTerm bottomYukawa
all_goals
try simp [ofPotentialTerm'_W2_finset, ofPotentialTerm'_W3_finset,
ofPotentialTerm'_Ξ²_finset, ofPotentialTerm'_ΞΌ_finset,
ofPotentialTerm'_W4_finset, ofPotentialTerm'_K2_finset,
ofPotentialTerm'_topYukawa_finset, ofPotentialTerm'_bottomYukawa_finset] at h bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:β a a_1 b, (x.qHd = some a β§ a_1 β x.Q5 β§ b β x.Q10) β§ a + a_1 + b = nβ’ n β x.ofPotentialTerm bottomYukawa
try simp [ofPotentialTerm', -existsAndEq] at h bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:β a a_1 b, (x.qHd = some a β§ a_1 β x.Q5 β§ b β x.Q10) β§ a + a_1 + b = nβ’ n β x.ofPotentialTerm bottomYukawa
case' ΞΌ | Ξ² => Ξ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:β a b, (x.qHu = some a β§ b β x.Q5) β§ -a + b = nβ’ n β x.ofPotentialTerm Ξ²
obtain β¨q1, q2, β¨q1_mem, q2_memβ©, q_sumβ© := h Ξ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:-q1 + q2 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q5β’ n β x.ofPotentialTerm Ξ²
case' Ξ | W3 | W4 | K1 | K2 | topYukawa | bottomYukawa => bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:β a a_1 b, (x.qHd = some a β§ a_1 β x.Q5 β§ b β x.Q10) β§ a + a_1 + b = nβ’ n β x.ofPotentialTerm bottomYukawa
obtain β¨q1, q2, q3, β¨q1_mem, q2_mem, q3_memβ©, q_sumβ© := h bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ n β x.ofPotentialTerm bottomYukawa
case' W1 | W2 => W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©h:β a a_1 a_2 b, (x.qHd = some a β§ a_1 β x.Q10 β§ a_2 β x.Q10 β§ b β x.Q10) β§ a + a_1 + a_2 + b = nβ’ n β x.ofPotentialTerm W2
obtain β¨q1, q2, q3, q4, β¨q1_mem, q2_mem, q3_mem, q4_memβ©, q_sumβ© := h W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q4:π©q_sum:q1 + q2 + q3 + q4 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10q4_mem:q4 β x.Q10β’ n β x.ofPotentialTerm W2
case' ΞΌ => ΞΌ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:q1 - q2 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2β’ n β x.ofPotentialTerm ΞΌ refine ofPotentialTerm_mono (x := β¨q1, q2, β
, β
β©) ?ΞΌSub _ ?ΞΌP ΞΌSub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:q1 - q2 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2β’ { qHd := some q1, qHu := some q2, Q5 := β
, Q10 := β
} β xΞΌP π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:q1 - q2 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2β’ n β { qHd := some q1, qHu := some q2, Q5 := β
, Q10 := β
}.ofPotentialTerm ΞΌ
case' Ξ² => Ξ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:-q1 + q2 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q5β’ n β x.ofPotentialTerm Ξ² refine ofPotentialTerm_mono (x := β¨none, q1, {q2}, β
β©) ?Ξ²Sub _ ?Ξ²P Ξ²Sub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:-q1 + q2 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q5β’ { qHd := none, qHu := some q1, Q5 := {q2}, Q10 := β
} β xΞ²P π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:-q1 + q2 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q5β’ n β { qHd := none, qHu := some q1, Q5 := {q2}, Q10 := β
}.ofPotentialTerm Ξ²
case' Ξ => Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ n β x.ofPotentialTerm Ξ
refine ofPotentialTerm_mono (x := β¨none, none, {q1, q2}, {q3}β©) ?ΞSub _ ?ΞP ΞSub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ { qHd := none, qHu := none, Q5 := {q1, q2}, Q10 := {q3} } β xΞP π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ n β { qHd := none, qHu := none, Q5 := {q1, q2}, Q10 := {q3} }.ofPotentialTerm Ξ
case' W1 => W1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q4:π©q_sum:q1 + q2 + q3 + q4 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10q4_mem:q4 β x.Q10β’ n β x.ofPotentialTerm W1
refine ofPotentialTerm_mono (x := β¨none, none, {q1}, {q2, q3, q4}β©) ?W1Sub _ ?W1P W1Sub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q4:π©q_sum:q1 + q2 + q3 + q4 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10q4_mem:q4 β x.Q10β’ { qHd := none, qHu := none, Q5 := {q1}, Q10 := {q2, q3, q4} } β xW1P π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q4:π©q_sum:q1 + q2 + q3 + q4 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10q4_mem:q4 β x.Q10β’ n β { qHd := none, qHu := none, Q5 := {q1}, Q10 := {q2, q3, q4} }.ofPotentialTerm W1
case' W2 => W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q4:π©q_sum:q1 + q2 + q3 + q4 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10q4_mem:q4 β x.Q10β’ n β x.ofPotentialTerm W2
refine ofPotentialTerm_mono (x := β¨q1, none, β
, {q2, q3, q4}β©) ?W2Sub _ ?W2P W2Sub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q4:π©q_sum:q1 + q2 + q3 + q4 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10q4_mem:q4 β x.Q10β’ { qHd := some q1, qHu := none, Q5 := β
, Q10 := {q2, q3, q4} } β xW2P π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q4:π©q_sum:q1 + q2 + q3 + q4 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10q4_mem:q4 β x.Q10β’ n β { qHd := some q1, qHu := none, Q5 := β
, Q10 := {q2, q3, q4} }.ofPotentialTerm W2
case' W3 => W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 - q1 + q2 + q3 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q5β’ n β x.ofPotentialTerm W3 refine ofPotentialTerm_mono (x := β¨none, q1, {q2, q3}, β
β©) ?W3Sub _ ?W3P W3Sub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 - q1 + q2 + q3 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q5β’ { qHd := none, qHu := some q1, Q5 := {q2, q3}, Q10 := β
} β xW3P π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 - q1 + q2 + q3 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q5β’ n β { qHd := none, qHu := some q1, Q5 := {q2, q3}, Q10 := β
}.ofPotentialTerm W3
case' W4 => W4 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 - q2 - q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2q3_mem:q3 β x.Q5β’ n β x.ofPotentialTerm W4 refine ofPotentialTerm_mono (x := β¨q1, q2, {q3}, β
β©) ?W4Sub _ ?W4P W4Sub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 - q2 - q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2q3_mem:q3 β x.Q5β’ { qHd := some q1, qHu := some q2, Q5 := {q3}, Q10 := β
} β xW4P π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 - q2 - q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2q3_mem:q3 β x.Q5β’ n β { qHd := some q1, qHu := some q2, Q5 := {q3}, Q10 := β
}.ofPotentialTerm W4
case' K1 => K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 + q2 + q3 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10β’ n β x.ofPotentialTerm K1
refine ofPotentialTerm_mono (x := β¨none, none, {q1}, {q2, q3}β©)
?K1Sub _ ?K1P K1Sub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 + q2 + q3 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10β’ { qHd := none, qHu := none, Q5 := {q1}, Q10 := {q2, q3} } β xK1P π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 + q2 + q3 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10β’ n β { qHd := none, qHu := none, Q5 := {q1}, Q10 := {q2, q3} }.ofPotentialTerm K1
case' K2 => K2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2q3_mem:q3 β x.Q10β’ n β x.ofPotentialTerm K2 refine ofPotentialTerm_mono (x := β¨q1, q2, β
, {q3}β©) ?K2Sub _ ?K2P K2Sub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2q3_mem:q3 β x.Q10β’ { qHd := some q1, qHu := some q2, Q5 := β
, Q10 := {q3} } β xK2P π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2q3_mem:q3 β x.Q10β’ n β { qHd := some q1, qHu := some q2, Q5 := β
, Q10 := {q3} }.ofPotentialTerm K2
case' topYukawa => topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 + q2 + q3 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10β’ n β x.ofPotentialTerm topYukawa
refine ofPotentialTerm_mono (x := β¨none, q1, β
, {q2, q3}β©)
?topYukawaSub _ ?topYukawaP topYukawaSub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 + q2 + q3 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10β’ { qHd := none, qHu := some q1, Q5 := β
, Q10 := {q2, q3} } β xtopYukawaP π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 + q2 + q3 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10β’ n β { qHd := none, qHu := some q1, Q5 := β
, Q10 := {q2, q3} }.ofPotentialTerm topYukawa
case' bottomYukawa => bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ n β x.ofPotentialTerm bottomYukawa
refine ofPotentialTerm_mono (x := β¨q1, none, {q2}, {q3}β©)
?bottomYukawaSub _ ?bottomYukawaP bottomYukawaSub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ { qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} } β xbottomYukawaP π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ n β { qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.ofPotentialTerm bottomYukawa
case' ΞΌSub | Ξ²Sub | ΞSub | W1Sub | W2Sub | W3Sub | W4Sub | K1Sub | K2Sub |
topYukawaSub | bottomYukawaSub => bottomYukawaSub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ { qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} } β x
rw [subset_def ΞΌSub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:q1 - q2 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2β’ { qHd := some q1, qHu := some q2, Q5 := β
, Q10 := β
}.qHd.toFinset β x.qHd.toFinset β§
{ qHd := some q1, qHu := some q2, Q5 := β
, Q10 := β
}.qHu.toFinset β x.qHu.toFinset β§
{ qHd := some q1, qHu := some q2, Q5 := β
, Q10 := β
}.Q5 β x.Q5 β§
{ qHd := some q1, qHu := some q2, Q5 := β
, Q10 := β
}.Q10 β x.Q10 bottomYukawaSub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ { qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.qHd.toFinset β x.qHd.toFinset β§
{ qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.qHu.toFinset β x.qHu.toFinset β§
{ qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.Q5 β x.Q5 β§
{ qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.Q10 β x.Q10] topYukawaSub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 + q2 + q3 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10β’ { qHd := none, qHu := some q1, Q5 := β
, Q10 := {q2, q3} }.qHd.toFinset β x.qHd.toFinset β§
{ qHd := none, qHu := some q1, Q5 := β
, Q10 := {q2, q3} }.qHu.toFinset β x.qHu.toFinset β§
{ qHd := none, qHu := some q1, Q5 := β
, Q10 := {q2, q3} }.Q5 β x.Q5 β§
{ qHd := none, qHu := some q1, Q5 := β
, Q10 := {q2, q3} }.Q10 β x.Q10 bottomYukawaSub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ { qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.qHd.toFinset β x.qHd.toFinset β§
{ qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.qHu.toFinset β x.qHu.toFinset β§
{ qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.Q5 β x.Q5 β§
{ qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.Q10 β x.Q10bottomYukawaSub π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ { qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.qHd.toFinset β x.qHd.toFinset β§
{ qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.qHu.toFinset β x.qHu.toFinset β§
{ qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.Q5 β x.Q5 β§
{ qHd := some q1, qHu := none, Q5 := {q2}, Q10 := {q3} }.Q10 β x.Q10
simp_all [Finset.insert_subset, -existsAndEq] All goals completed! π
all_goals
simp [ofPotentialTerm, PotentialTerm.toFieldLabel, ofFieldLabel] ΞΌP π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:q1 - q2 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2β’ n = q1 + -q2
case ΞP => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ β a b, ((a = q1 β¨ a = q2) β§ (b = q1 β¨ b = q2)) β§ a + b + q3 = n
use q1, q2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:q1 β x.Q5q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ ((q1 = q1 β¨ q1 = q2) β§ (q2 = q1 β¨ q2 = q2)) β§ q1 + q2 + q3 = n
simp [β q_sum] All goals completed! π
case W3P | K1P | topYukawaP => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 + q2 + q3 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10β’ β a b, ((a = q2 β¨ a = q3) β§ (b = q2 β¨ b = q3)) β§ a + b + -q1 = n
use q2, q3 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 + q2 + q3 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10β’ ((q2 = q2 β¨ q2 = q3) β§ (q3 = q2 β¨ q3 = q3)) β§ q2 + q3 + -q1 = n
simp [β q_sum] h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:-q1 + q2 + q3 = nq1_mem:x.qHu = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10β’ q2 + q3 + -q1 = -q1 + q2 + q3
abel All goals completed! π
case W1P | W2P => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q4:π©q_sum:q1 + q2 + q3 + q4 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10q4_mem:q4 β x.Q10β’ β b a b_1,
(((a = q2 β¨ a = q3 β¨ a = q4) β§ (b_1 = q2 β¨ b_1 = q3 β¨ b_1 = q4)) β§ (b = q2 β¨ b = q3 β¨ b = q4)) β§ a + b_1 + b + q1 = n
use q2, q3, q4 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q4:π©q_sum:q1 + q2 + q3 + q4 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10q4_mem:q4 β x.Q10β’ (((q3 = q2 β¨ q3 = q3 β¨ q3 = q4) β§ (q4 = q2 β¨ q4 = q3 β¨ q4 = q4)) β§ (q2 = q2 β¨ q2 = q3 β¨ q2 = q4)) β§
q3 + q4 + q2 + q1 = n
simp [β q_sum] h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q4:π©q_sum:q1 + q2 + q3 + q4 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q10q3_mem:q3 β x.Q10q4_mem:q4 β x.Q10β’ q3 + q4 + q2 + q1 = q1 + q2 + q3 + q4
abel All goals completed! π
all_goals
rw [β q_sum bottomYukawaP π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q3:π©q_sum:q1 + q2 + q3 = nq1_mem:x.qHd = some q1q2_mem:q2 β x.Q5q3_mem:q3 β x.Q10β’ q1 + q2 + q3 = q3 + q2 + q1 ΞΌP π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:q1 - q2 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2β’ q1 - q2 = q1 + -q2]ΞΌP π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:q1 - q2 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2β’ q1 - q2 = q1 + -q2ΞΌP π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©n:π©q1:π©q2:π©q_sum:q1 - q2 = nq1_mem:x.qHd = some q1q2_mem:x.qHu = some q2β’ q1 - q2 = q1 + -q2
try abel All goals completed! π
C.3. Equivalence of elements of ofPotentialTerm and ofPotentialTerm'
We now show that a charge is in ofPotentialTerm if and only if it is in
ofPotentialTerm'. I.e. their underlying finite sets are equal.
We do not say anything about the multiplicity of elements within the multisets,
which is not important for us.
lemma mem_ofPotentialTerm_iff_mem_ofPotentialTerm [DecidableEq π©]
{T : PotentialTerm} {n : π©} {y : ChargeSpectrum π©} :
n β y.ofPotentialTerm T β n β y.ofPotentialTerm' T := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermn:π©y:ChargeSpectrum π©β’ n β y.ofPotentialTerm T β n β y.ofPotentialTerm' T
constructor mp π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermn:π©y:ChargeSpectrum π©β’ n β y.ofPotentialTerm T β n β y.ofPotentialTerm' Tmpr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermn:π©y:ChargeSpectrum π©β’ n β y.ofPotentialTerm' T β n β y.ofPotentialTerm T
Β· mp π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermn:π©y:ChargeSpectrum π©β’ n β y.ofPotentialTerm T β n β y.ofPotentialTerm' T exact fun h => ofPotentialTerm_subset_ofPotentialTerm' T h All goals completed! π
Β· mpr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermn:π©y:ChargeSpectrum π©β’ n β y.ofPotentialTerm' T β n β y.ofPotentialTerm T exact fun h => ofPotentialTerm'_subset_ofPotentialTerm T h All goals completed! π
C.4. Induced monotonicity of ofPotentialTerm'
Due to the equivalence of elements of ofPotentialTerm and ofPotentialTerm',
we can now also show that ofPotentialTerm' is monotone in its charge spectrum argument.
lemma ofPotentialTerm'_mono [DecidableEq π©] {x y : ChargeSpectrum π©}
(h : x β y) (T : PotentialTerm) :
x.ofPotentialTerm' T β y.ofPotentialTerm' T := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x β yT:PotentialTermβ’ x.ofPotentialTerm' T β y.ofPotentialTerm' T
intro i π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x β yT:PotentialTermi:π©β’ i β x.ofPotentialTerm' T β i β y.ofPotentialTerm' T
rw [β mem_ofPotentialTerm_iff_mem_ofPotentialTerm, π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x β yT:PotentialTermi:π©β’ i β x.ofPotentialTerm T β i β y.ofPotentialTerm' T π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x β yT:PotentialTermi:π©β’ i β x.ofPotentialTerm T β i β y.ofPotentialTerm T β mem_ofPotentialTerm_iff_mem_ofPotentialTerm π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x β yT:PotentialTermi:π©β’ i β x.ofPotentialTerm T β i β y.ofPotentialTerm T π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x β yT:PotentialTermi:π©β’ i β x.ofPotentialTerm T β i β y.ofPotentialTerm T] π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©y:ChargeSpectrum π©h:x β yT:PotentialTermi:π©β’ i β x.ofPotentialTerm T β i β y.ofPotentialTerm T
exact fun a => ofPotentialTerm_mono h T a All goals completed! π