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.OfPotentialTermCharges allowing terms
i. Overview
To each charge spectrum x : ChargeSpectrum π© we say it
allows the potential term T : PotentialTerm, if one of the charges associated with that
potential term is zero.
What this means, is that there is a choice of charges from the charge spectrum x that
can be assigned to the fields in the potential term T such that the total charge is zero,
and therefore that the term is present in the potential. The presence of
absence of certain terms is of phenomenological importance.
This concept is captured by the proposition AllowsTerm.
In addition to this, for each potential term T, we define a function allowsTermForm
which takes three elements of π©, a, b, and c and returns a charge spectrum
which allows the term T. We will show in allowsTerm_iff_subset_allowsTermForm
that any charge spectrum that allows a term T has a subset which can be expressed as
allowsTermForm a b c T for some a, b, and c.
We also define the propositions AllowsTermQ5 x q5 T and AllowsTermQ10 x q10 T
which correspond to the condition that adding a charge q5 to the Q5 charges of
the charge spectrum x, or adding a charge q10 to the Q10 charges of the
charge spectrum x, leads to a zero charge in the charges of potential term T.
ii. Key results
AllowsTerm : The proposition that a charge spectrum allows a potential term.
allowsTermForm : A function which for each potential term T and three charges
a, b, and c returns a charge spectrum which allows the term T,
and such that any charge spectrum allowing T has a subset of this form.
AllowsTermQ5 : The proposition that adding a charge q5 to the Q5 charges
of a charge spectrum x allows the potential term T due to the addition of that charge.
AllowsTermQ10 : The proposition that adding a charge q10 to the Q10 charges
of a charge spectrum x allows the potential term T due to the addition of that charge.
iii. Table of contents
A. Charge spectrums allowing potential terms
A.1. Decidability of AllowsTerm
A.2. Monotonicity of AllowsTerm
B. Forms of charges which allow potential terms
B.1. allowsTermForm allows the potential term
B.2. Subset relations for allowsTermForm
B.3. Card of allowsTermForm
B.4. If AllowsTerm then subset equal to allowsTermForm a b c T
B.5. AllowsTerm if and only if subset equal to allowsTermForm a b c T
B.6. Cardinality of subset allowing potential term
C. Allowing a potential term by insertion of a Q5 charge
C.1. Decidability of AllowsTermQ5
C.2. AllowsTermQ5 or AllowsTerm from AllowsTerm with inserted of Q5 charge
C.3. AllowsTerm with inserted of Q5 charge from AllowsTermQ5
C.4. AllowsTerm with inserted of Q5 charge iff AllowsTermQ5 or AllowsTerm
D. Allowing a potential term by insertion of a Q10 charge
D.1. Decidability of AllowsTermQ5
D.2. AllowsTermQ10 or AllowsTerm from AllowsTerm with inserted of Q10 charge
D.3. AllowsTerm with inserted of Q10 charge from AllowsTermQ5
D.4. AllowsTerm with inserted of Q10 charge iff AllowsTermQ10 or AllowsTerm
iv. References
There are no known references for the results in this file.
@[expose] public sectionA. Charge spectrums allowing potential terms
We first define the proposition AllowsTerm, which for a charge spectrum x : ChargeSpectrum π©
and a potential term T : PotentialTerm, is true if the zero charge is in the set of
charges associated with that potential term.
That is, if there is some choice of representations present in the theory which will allow that potential term via symmetry.
The charges of representations x : Charges allow a potential term T : PotentialTerm
if the zero charge is in the set of charges associated with that potential term.
def AllowsTerm (x : ChargeSpectrum π©) (T : PotentialTerm) : Prop := 0 β ofPotentialTerm x T
A.1. Decidability of AllowsTerm
We define the decidability of AllowsTerm through ofPotentialTerm' rather than
ofPotentialTerm due to the speed of the former compared to the latter.
lemma allowsTerm_iff_zero_mem_ofPotentialTerm' [DecidableEq π©]
{x : ChargeSpectrum π©} {T : PotentialTerm} :
x.AllowsTerm T β 0 β x.ofPotentialTerm' T :=
mem_ofPotentialTerm_iff_mem_ofPotentialTerminstance [DecidableEq π©] (x : ChargeSpectrum π©) (T : PotentialTerm) : Decidable (x.AllowsTerm T) :=
decidable_of_iff (0 β x.ofPotentialTerm' T) allowsTerm_iff_zero_mem_ofPotentialTerm'.symm
A.2. Monotonicity of AllowsTerm
The proposition AllowsTerm is monotone in its charge spectrum argument.
That is if a charge spectrum y is a subset of a charge spectrum x,
and y allows a potential term T, then x also allows that potential term T.
lemma allowsTerm_mono {T : PotentialTerm} {y x : ChargeSpectrum π©}
(h : y β x) (hy : y.AllowsTerm T) : x.AllowsTerm T := ofPotentialTerm_mono h T hyB. Forms of charges which allow potential terms
We now define the function allowsTermForm which for each potential term T
and three charges a, b, and c returns a charge spectrum which allows the term T.
These charges are in a minimal form, in the sense that any charge spectrum allowing T
has a subset of this form.
A element of Charges from three integers a b c : β€ for a given potential term T.
Defined such that allowsTermForm a b c T always allows the potential term T,
and if any over charge x allows T then it is due to a subset of the form
allowsTermForm a b c T.
def allowsTermForm (a b c : π©) : (T : PotentialTerm) β ChargeSpectrum π©
| .ΞΌ => β¨some a, some a, β
, β
β©
| .Ξ² => β¨none, some a, {a}, β
β©
| .Ξ => β¨none, none, {a, b}, {- a - b}β©
| .W1 => β¨none, none, {- a - b - c}, {a, b, c}β©
| .W2 => β¨some (- a - b - c), none, β
, {a, b, c}β©
| .W3 => β¨none, some (- a), {b, - b - 2 β’ a}, β
β©
| .W4 => β¨some (- c - 2 β’ b), some (- b), {c}, β
β©
| .K1 => β¨none, none, {-a}, {b, - a - b}β©
| .K2 => β¨some a, some b, β
, {- a - b}β©
| .topYukawa => β¨none, some (-a), β
, {b, - a - b}β©
| .bottomYukawa => β¨some a, none, {b}, {- a - b}β©
B.1. allowsTermForm allows the potential term
Any charge spectrum of the form allowsTermForm a b c T allows the potential term T.
The charge spectrum allowsTermForm a b c T allows the potential term T.
lemma allowsTermForm_allowsTerm {a b c : π©} {T : PotentialTerm} :
(allowsTermForm a b c T).AllowsTerm T := π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©T:PotentialTermβ’ (allowsTermForm a b c T).AllowsTerm T
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©T:PotentialTermβ’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match T with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
T.toFieldLabel)
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.ΞΌ with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.ΞΌ.toFieldLabel)π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.Ξ² with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.Ξ².toFieldLabel)π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.Ξ with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.Ξ.toFieldLabel)π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.W1 with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.W1.toFieldLabel)π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.W2 with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.W2.toFieldLabel)π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.W3 with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.W3.toFieldLabel)π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.W4 with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.W4.toFieldLabel)π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.K1 with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.K1.toFieldLabel)π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.K2 with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.K2.toFieldLabel)π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.topYukawa with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.topYukawa.toFieldLabel)π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 0 β
List.foldl (fun a b => Multiset.map (fun x => x.1 + x.2) (a ΓΛ’ b)) {0}
(List.map
(fun F =>
((match PotentialTerm.bottomYukawa with
| PotentialTerm.ΞΌ => { qHd := some a, qHu := some a, Q5 := β
, Q10 := β
}
| PotentialTerm.Ξ² => { qHd := none, qHu := some a, Q5 := {a}, Q10 := β
}
| PotentialTerm.Ξ => { qHd := none, qHu := none, Q5 := {a, b}, Q10 := {-a - b} }
| PotentialTerm.W1 => { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }
| PotentialTerm.W2 => { qHd := some (-a - b - c), qHu := none, Q5 := β
, Q10 := {a, b, c} }
| PotentialTerm.W3 => { qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β’ a}, Q10 := β
}
| PotentialTerm.W4 => { qHd := some (-c - 2 β’ b), qHu := some (-b), Q5 := {c}, Q10 := β
}
| PotentialTerm.K1 => { qHd := none, qHu := none, Q5 := {-a}, Q10 := {b, -a - b} }
| PotentialTerm.K2 => { qHd := some a, qHu := some b, Q5 := β
, Q10 := {-a - b} }
| PotentialTerm.topYukawa => { qHd := none, qHu := some (-a), Q5 := β
, Q10 := {b, -a - b} }
| PotentialTerm.bottomYukawa => { qHd := some a, qHu := none, Q5 := {b}, Q10 := {-a - b} }).ofFieldLabel
F).val)
PotentialTerm.bottomYukawa.toFieldLabel)
all_goals
All goals completed! π
case Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ β a_1 b_1, ((a_1 = a β¨ a_1 = b) β§ (b_1 = a β¨ b_1 = b)) β§ a_1 + b_1 + (-a - b) = 0 exact β¨a, b, π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ ((a = a β¨ a = b) β§ (b = a β¨ b = b)) β§ a + b + (-a - b) = 0 All goals completed! πβ©
case K1 | topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ β a_1 b_1, ((a_1 = b β¨ a_1 = -a - b) β§ (b_1 = b β¨ b_1 = -a - b)) β§ a_1 + b_1 + a = 0 exact β¨b, - a - b, π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ ((b = b β¨ b = -a - b) β§ (-a - b = b β¨ -a - b = -a - b)) β§ b + (-a - b) + a = 0 All goals completed! πβ©
case W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ β a_1 b_1, ((a_1 = b β¨ a_1 = -b - 2 β’ a) β§ (b_1 = b β¨ b_1 = -b - 2 β’ a)) β§ a_1 + b_1 + a + a = 0
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ ((b = b β¨ b = -b - 2 β’ a) β§ (-b - 2 β’ a = b β¨ -b - 2 β’ a = -b - 2 β’ a)) β§ b + (-b - 2 β’ a) + a + a = 0
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ b + (-b - 2 β’ a) + a + a = 0
All goals completed! π
case W1 | W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ β b_1 a_1 b_2,
(((a_1 = a β¨ a_1 = b β¨ a_1 = c) β§ (b_2 = a β¨ b_2 = b β¨ b_2 = c)) β§ (b_1 = a β¨ b_1 = b β¨ b_1 = c)) β§
a_1 + b_2 + b_1 + (-a - b - c) = 0
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (((b = a β¨ b = b β¨ b = c) β§ (c = a β¨ c = b β¨ c = c)) β§ (a = a β¨ a = b β¨ a = c)) β§ b + c + a + (-a - b - c) = 0
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ b + c + a + (-a - b - c) = 0
All goals completed! π
all_goals All goals completed! πlemma allowsTerm_of_eq_allowsTermForm {T : PotentialTerm}
(x : ChargeSpectrum π©) (h : β a b c, x = allowsTermForm a b c T) :
x.AllowsTerm T := π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermx:ChargeSpectrum π©h:β a b c, x = allowsTermForm a b c Tβ’ x.AllowsTerm T
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTerma:π©b:π©c:π©β’ (allowsTermForm a b c T).AllowsTerm T
All goals completed! π
B.2. Subset relations for allowsTermForm
For any potential term T except for WΒΉα΅’β±Όββ 10β± 10Κ² 10α΅ 5ΜMΛ‘ or WΒ²α΅’β±Όβ 10β± 10Κ² 10α΅ 5ΜHd,
a charge spectrum allowsTermForm a b c T is a subset of another charge spectrum
allowsTermForm a' b' c' T if they are equal.
The reason this does not work for W1 an W2 is due to the presence of three
charges in the 10d representation.
B.3. Card of allowsTermForm
The cardinality of the charge spectrum allowsTermForm a b c T is always
less than or equal to the degree of the potential term T.
lemma allowsTermForm_card_le_degree {a b c : π©} {T : PotentialTerm} :
(allowsTermForm a b c T).card β€ T.degree := π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©T:PotentialTermβ’ (allowsTermForm a b c T).card β€ T.degree
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.ΞΌ).card β€ PotentialTerm.ΞΌ.degreeπ©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.Ξ²).card β€ PotentialTerm.Ξ².degreeπ©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.Ξ).card β€ PotentialTerm.Ξ.degreeπ©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.W1).card β€ PotentialTerm.W1.degreeπ©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.W2).card β€ PotentialTerm.W2.degreeπ©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.W3).card β€ PotentialTerm.W3.degreeπ©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.W4).card β€ PotentialTerm.W4.degreeπ©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.K1).card β€ PotentialTerm.K1.degreeπ©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.K2).card β€ PotentialTerm.K2.degreeπ©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.topYukawa).card β€ PotentialTerm.topYukawa.degreeπ©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ (allowsTermForm a b c PotentialTerm.bottomYukawa).card β€ PotentialTerm.bottomYukawa.degree
all_goals
All goals completed! π
case' Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ {a, b}.card β€ 2
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©h1:{a, b}.card β€ 2β’ {a, b}.card β€ 2
All goals completed! π
case' W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 1 + {b, -b - 2 β’ a}.card β€ 4
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©h1:{b, -b - 2 β’ a}.card β€ 2β’ 1 + {b, -b - 2 β’ a}.card β€ 4
All goals completed! π
case' K1 | topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©β’ 1 + {b, -a - b}.card β€ 3
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©h1:{b, -a - b}.card β€ 2β’ 1 + {b, -a - b}.card β€ 3
All goals completed! π
all_goals
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©a:π©b:π©c:π©h1:{a, b, c}.card β€ 3β’ 1 + {a, b, c}.card β€ 4
All goals completed! π
B.4. If AllowsTerm then subset equal to allowsTermForm a b c T
We now show one of the more important properties of allowsTermForm.
Namely that if a charge spectrum x
allows a potential term T, then there exists charges a, b, and c such that
allowsTermForm a b c T β x.
The proof of this result is rather long, relying on case-by-case analysis of each of the potential terms of interest.
π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©f2:π©f4:π©f2_mem:x.qHu = some (-f2)f4_mem:x.qHd = some f4f1_add_f2_eq_zero:f4 + f2 = 0β’ f4 = -(f2 - (f4 + f2))
abel All goals completed! π
B.5. AllowsTerm if and only if subset equal to allowsTermForm a b c T
We now lift the previous result to show that a charge spectrum x
allows a potential term T if and only if there exists charges a, b, and c such that
allowsTermForm a b c T β x.
Given what has already been shown, this result is now trivial.
lemma allowsTerm_iff_subset_allowsTermForm {T : PotentialTerm} {x : ChargeSpectrum π©} :
x.AllowsTerm T β β a b c, allowsTermForm a b c T β x := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermx:ChargeSpectrum π©β’ x.AllowsTerm T β β a b c, allowsTermForm a b c T β x
refine β¨fun h => ?_, fun β¨a, b, c, h1β© => allowsTerm_mono h1 allowsTermForm_allowsTermβ© π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermx:ChargeSpectrum π©h:x.AllowsTerm Tβ’ β a b c, allowsTermForm a b c T β x
obtain β¨a, b, c, h1, -β© := allowsTermForm_subset_allowsTerm_of_allowsTerm h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermx:ChargeSpectrum π©h:x.AllowsTerm Ta:π©b:π©c:π©h1:allowsTermForm a b c T β xβ’ β a b c, allowsTermForm a b c T β x
exact β¨a, b, c, h1β© All goals completed! πB.6. Cardinality of subset allowing potential term
We show that if a charge spectrum x allows a potential term T,
then there exists a subset of x which allows T and whose cardinality is less than or equal
to the degree of T.
This follows from the fact that allowsTermForm a b c T always has cardinality
less than or equal to the degree of T.
lemma subset_card_le_degree_allowsTerm_of_allowsTerm {T : PotentialTerm} {x : ChargeSpectrum π©}
(h : x.AllowsTerm T) : β y β x.powerset, y.card β€ T.degree β§ y.AllowsTerm T := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermx:ChargeSpectrum π©h:x.AllowsTerm Tβ’ β y β x.powerset, y.card β€ T.degree β§ y.AllowsTerm T
obtain β¨a, b, c, h1, h2β© := allowsTermForm_subset_allowsTerm_of_allowsTerm h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©T:PotentialTermx:ChargeSpectrum π©h:x.AllowsTerm Ta:π©b:π©c:π©h1:allowsTermForm a b c T β xh2:(allowsTermForm a b c T).AllowsTerm Tβ’ β y β x.powerset, y.card β€ T.degree β§ y.AllowsTerm T
exact β¨_, mem_powerset_iff_subset.mpr h1, allowsTermForm_card_le_degree, h2β© All goals completed! π
C. Allowing a potential term by insertion of a Q5 charge
We now study what happens when we add a charge q5 to the Q5 charges of a charge spectrum x.
We define the proposition AllowsTermQ5 x q5 T which is true if adding the charge q5
to the Q5 charges of x allows the potential term T due to the addition of that charge.
We prove a number of properties of this proposition, including its relation
to AllowsTerm and its decidability.
The proposition for which says, given a charge x adding a charge q5 permits the
existence of a potential term T due to the addition of that charge.
def AllowsTermQ5 (x : ChargeSpectrum π©) (q5 : π©) (T : PotentialTerm) : Prop :=
match T with
| .ΞΌ => false
| .Ξ² =>
match x with
| β¨_, some qHu, _, _β© => q5 = qHu
| _ => false
| .Ξ => (0 : π©) β ((insert q5 x.Q5).product x.Q10).val.map (fun (q1, q2) => (q1 + q5 + q2))
| .W4 =>
match x with
| β¨some qHd, some qHu, _, _β© => q5 + qHd - qHu - qHu = 0
| _ => false
| .K1 => (0 : π©) β (x.Q10.product x.Q10).val.map (fun (y, z) => -q5 + y + z)
| .W1 => (0 : π©) β (x.Q10.product (x.Q10.product x.Q10)).val.map
(fun (q1, q2, q3) => q5 + q1 + q2 + q3)
| .W2 => false
| .bottomYukawa =>
match x with
| β¨none, _, _, _β© => false
| β¨some qHd, _, _, _β© => (0 : π©) β x.Q10.val.map (fun y => y + q5 + qHd)
| .topYukawa => false
| .K2 => false
| .W3 =>
match x with
| β¨_, some qHu, _, _β© =>
(0 : π©) β (insert q5 x.Q5).val.map (fun y => y + q5 - qHu - qHu)
| _ => false
C.1. Decidability of AllowsTermQ5
We show that if the type π© has decidable equality, then the proposition
AllowsTermQ5 x q5 T is decidable for any charge spectrum x, charge q5, and
potential term T.
instance (x : ChargeSpectrum π©) (q5 : π©) (T : PotentialTerm) :
Decidable (AllowsTermQ5 x q5 T) :=
match T with
| .ΞΌ => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermh:x.AllowsTermQ5 q5 PotentialTerm.ΞΌβ’ False simp [AllowsTermQ5] at h All goals completed! π
| .Ξ² =>
match x with
| β¨_, some qHu, _, _β© => decidable_of_iff (q5 = qHu) (by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermqHdβ:Option π©qHu:π©Q5β:Finset π©Q10β:Finset π©β’ q5 = qHu β { qHd := qHdβ, qHu := some qHu, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ5 q5 PotentialTerm.Ξ² simp [AllowsTermQ5] All goals completed! π)
| β¨_, none, _, _β© => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermqHdβ:Option π©Q5β:Finset π©Q10β:Finset π©h:{ qHd := qHdβ, qHu := none, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ5 q5 PotentialTerm.Ξ²β’ False simp [AllowsTermQ5] at h All goals completed! π
| .Ξ =>
decidable_of_iff ((0 : π©) β ((insert q5 x.Q5).product x.Q10).val.map
(fun (q1, q2) => (q1 + q5 + q2))) (by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermβ’ 0 β
Multiset.map
(fun x =>
match x with
| (q1, q2) => q1 + q5 + q2)
((insert q5 x.Q5).product x.Q10).val β
x.AllowsTermQ5 q5 PotentialTerm.Ξ simp [AllowsTermQ5] All goals completed! π)
| .W4 =>
match x with
| β¨some qHd, some qHu, _, _β© => decidable_of_iff (q5 + qHd - qHu - qHu = 0)
(by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermqHd:π©qHu:π©Q5β:Finset π©Q10β:Finset π©β’ q5 + qHd - qHu - qHu = 0 β { qHd := some qHd, qHu := some qHu, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ5 q5 PotentialTerm.W4 simp [AllowsTermQ5] All goals completed! π)
| β¨some qHd, none, _, _β© => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermqHd:π©Q5β:Finset π©Q10β:Finset π©h:{ qHd := some qHd, qHu := none, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ5 q5 PotentialTerm.W4β’ False simp [AllowsTermQ5] at h All goals completed! π
| β¨none, _, _, _β© => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermqHuβ:Option π©Q5β:Finset π©Q10β:Finset π©h:{ qHd := none, qHu := qHuβ, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ5 q5 PotentialTerm.W4β’ False simp [AllowsTermQ5] at h All goals completed! π
| .K1 =>
decidable_of_iff ((0 : π©) β (x.Q10.product x.Q10).val.map (fun (y, z) => -q5 + y + z))
(by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermβ’ 0 β
Multiset.map
(fun x =>
match x with
| (y, z) => -q5 + y + z)
(x.Q10.product x.Q10).val β
x.AllowsTermQ5 q5 PotentialTerm.K1 simp [AllowsTermQ5] All goals completed! π)
| .W1 =>
decidable_of_iff ((0 : π©) β (x.Q10.product (x.Q10.product x.Q10)).val.map
(fun (q1, q2, q3) => q5 + q1 + q2 + q3)) (by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermβ’ 0 β
Multiset.map
(fun x =>
match x with
| (q1, q2, q3) => q5 + q1 + q2 + q3)
(x.Q10.product (x.Q10.product x.Q10)).val β
x.AllowsTermQ5 q5 PotentialTerm.W1 rfl All goals completed! π)
| .W2 => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermh:x.AllowsTermQ5 q5 PotentialTerm.W2β’ False simp [AllowsTermQ5] at h All goals completed! π
| .bottomYukawa =>
match x with
| β¨none, _, _, _β© => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermqHuβ:Option π©Q5β:Finset π©Q10β:Finset π©h:{ qHd := none, qHu := qHuβ, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ5 q5 PotentialTerm.bottomYukawaβ’ False simp [AllowsTermQ5] at h All goals completed! π
| β¨some qHd, _, _, Q10β© => decidable_of_iff ((0 : π©) β Q10.val.map (fun y => y + q5 + qHd))
(by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermqHd:π©qHuβ:Option π©Q5β:Finset π©Q10:Finset π©β’ 0 β Multiset.map (fun y => y + q5 + qHd) Q10.val β
{ qHd := some qHd, qHu := qHuβ, Q5 := Q5β, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.bottomYukawa simp [AllowsTermQ5] All goals completed! π)
| .topYukawa => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermh:x.AllowsTermQ5 q5 PotentialTerm.topYukawaβ’ False simp [AllowsTermQ5] at h All goals completed! π
| .K2 => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermh:x.AllowsTermQ5 q5 PotentialTerm.K2β’ False simp [AllowsTermQ5] at h All goals completed! π
| .W3 =>
match x with
| β¨_, some qHu, Q5, _β© => decidable_of_iff
((0 : π©) β (insert q5 Q5).val.map (fun y => y + q5 - qHu - qHu))
(by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermqHdβ:Option π©qHu:π©Q5:Finset π©Q10β:Finset π©β’ 0 β Multiset.map (fun y => y + q5 - qHu - qHu) (insert q5 Q5).val β
{ qHd := qHdβ, qHu := some qHu, Q5 := Q5, Q10 := Q10β }.AllowsTermQ5 q5 PotentialTerm.W3 simp [AllowsTermQ5] All goals completed! π)
| β¨_, none, _, _β© => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q5:π©T:PotentialTermqHdβ:Option π©Q5β:Finset π©Q10β:Finset π©h:{ qHd := qHdβ, qHu := none, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ5 q5 PotentialTerm.W3β’ False simp [AllowsTermQ5] at h All goals completed! π
C.2. AllowsTermQ5 or AllowsTerm from AllowsTerm with inserted of Q5 charge
We show that if a charge spectrum x with an inserted charge q5
allows a potential term T, then either the charge spectrum x
allows that potential term T due to the addition of that charge,
or the charge spectrum x already allows that potential term T.
lemma allowsTermQ5_or_allowsTerm_of_allowsTerm_insertQ5 {qHd qHu : Option π©}
{Q5 Q10: Finset π©} {q5 : π©} (T : PotentialTerm)
(h : AllowsTerm β¨qHd, qHu, insert q5 Q5, Q10β© T) :
AllowsTermQ5 β¨qHd, qHu, Q5, Q10β© q5 T β¨
AllowsTerm β¨qHd, qHu, Q5, Q10β© T := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm Tβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 T β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm T
rcases T ΞΌ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.ΞΌβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.ΞΌ β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.ΞΌΞ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.Ξ²β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.Ξ² β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.Ξ²Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.Ξβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.Ξ β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.ΞW1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W1β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.W1 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W1W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W2β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.W2 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W2W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W3β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.W3 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W3W4 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W4β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.W4 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W4K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.K1β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.K1 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.K1K2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.K2β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.K2 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.K2topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.topYukawaβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.topYukawa β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.topYukawabottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.bottomYukawaβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.bottomYukawa β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.bottomYukawa
all_goals
simp [allowsTerm_iff_zero_mem_ofPotentialTerm', ofPotentialTerm', AllowsTermQ5] at h β’ bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Q10.val)β’ (match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } => β a β Q10, a + q5 + qHd = 0) β¨
0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Q10.val)
Β· ΞΌ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => {qHd - qHu}β’ 0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => {qHd - qHu} exact h All goals completed! π
Β· Ξ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) (Multiset.ndinsert q5 Q5.val)β’ (match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 = qHu
| x => False) β¨
0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) Q5.val match qHu with
| some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) (Multiset.ndinsert q5 Q5.val)β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 = qHu
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) Q5.val
simp at h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:-qHu + q5 = 0 β¨ β a β Q5, -qHu + a = 0β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 = qHu
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) Q5.val
simp only [Multiset.mem_map, Finset.mem_val] π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:-qHu + q5 = 0 β¨ β a β Q5, -qHu + a = 0β’ q5 = qHu β¨ β a β Q5, -qHu + a = 0
convert h using 1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:-qHu + q5 = 0 β¨ β a β Q5, -qHu + a = 0β’ q5 = qHu β -qHu + q5 = 0
rw [neg_add_eq_zero, π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:-qHu + q5 = 0 β¨ β a β Q5, -qHu + a = 0β’ q5 = qHu β qHu = q5 All goals completed! π eq_comm π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:-qHu + q5 = 0 β¨ β a β Q5, -qHu + a = 0β’ qHu = q5 β qHu = q5 All goals completed! π] All goals completed! π
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match none with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) (Multiset.ndinsert q5 Q5.val)β’ (match { qHd := qHd, qHu := none, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 = qHu
| x => False) β¨
0 β
match none with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) Q5.val simp at h All goals completed! π
Β· Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:β a a_1 b, ((a = q5 β¨ a β Q5) β§ (a_1 = q5 β¨ a_1 β Q5) β§ b β Q10) β§ a + a_1 + b = 0β’ (β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0 obtain β¨a1, a2, a3, β¨h1, h2, h3β©, hsumβ© := h Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h1:a1 = q5 β¨ a1 β Q5h2:a2 = q5 β¨ a2 β Q5h3:a3 β Q10β’ (β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0
rcases h1 with h1 | h1 Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h2:a2 = q5 β¨ a2 β Q5h3:a3 β Q10h1:a1 = q5β’ (β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0Ξ.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h2:a2 = q5 β¨ a2 β Q5h3:a3 β Q10h1:a1 β Q5β’ (β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0
Β· Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h2:a2 = q5 β¨ a2 β Q5h3:a3 β Q10h1:a1 = q5β’ (β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0 subst h1 Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h3:a3 β Q10h2:a2 = a1 β¨ a2 β Q5β’ (β a b, ((a = a1 β¨ a β Q5) β§ b β Q10) β§ a + a1 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0
refine .inl β¨a2, a3, β¨h2, h3β©, ?_β© Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h3:a3 β Q10h2:a2 = a1 β¨ a2 β Q5β’ a2 + a1 + a3 = 0
rw [β hsum Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h3:a3 β Q10h2:a2 = a1 β¨ a2 β Q5β’ a2 + a1 + a3 = a1 + a2 + a3 Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h3:a3 β Q10h2:a2 = a1 β¨ a2 β Q5β’ a2 + a1 + a3 = a1 + a2 + a3]Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h3:a3 β Q10h2:a2 = a1 β¨ a2 β Q5β’ a2 + a1 + a3 = a1 + a2 + a3
abel All goals completed! π
Β· Ξ.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h2:a2 = q5 β¨ a2 β Q5h3:a3 β Q10h1:a1 β Q5β’ (β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0 rcases h2 with h2 | h2 Ξ.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h3:a3 β Q10h1:a1 β Q5h2:a2 = q5β’ (β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0Ξ.inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h3:a3 β Q10h1:a1 β Q5h2:a2 β Q5β’ (β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0
Β· Ξ.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h3:a3 β Q10h1:a1 β Q5h2:a2 = q5β’ (β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0 subst h2 Ξ.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h3:a3 β Q10h1:a1 β Q5β’ (β a b, ((a = a2 β¨ a β Q5) β§ b β Q10) β§ a + a2 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0
exact .inl β¨a1, a3, β¨.inr h1, h3β©, hsumβ© All goals completed! π
Β· Ξ.inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h3:a3 β Q10h1:a1 β Q5h2:a2 β Q5β’ (β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0 exact .inr β¨a1, a2, a3, β¨h1, h2, h3β©, hsumβ© All goals completed! π
Β· W1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:β a a_1 a_2 b, ((a = q5 β¨ a β Q5) β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0β’ (β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ q5 + a + a_1 + b = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0 obtain β¨a1, a2, a3, a4, β¨h1, h2, h3, h4β©, hsumβ© := h W1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 = q5 β¨ a1 β Q5h2:a2 β Q10h3:a3 β Q10h4:a4 β Q10β’ (β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ q5 + a + a_1 + b = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
rcases h1 with h1 | h1 W1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h2:a2 β Q10h3:a3 β Q10h4:a4 β Q10h1:a1 = q5β’ (β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ q5 + a + a_1 + b = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0W1.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h2:a2 β Q10h3:a3 β Q10h4:a4 β Q10h1:a1 β Q5β’ (β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ q5 + a + a_1 + b = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
Β· W1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h2:a2 β Q10h3:a3 β Q10h4:a4 β Q10h1:a1 = q5β’ (β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ q5 + a + a_1 + b = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0 left W1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h2:a2 β Q10h3:a3 β Q10h4:a4 β Q10h1:a1 = q5β’ β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ q5 + a + a_1 + b = 0
use a2, a3, a4 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h2:a2 β Q10h3:a3 β Q10h4:a4 β Q10h1:a1 = q5β’ (a2 β Q10 β§ a3 β Q10 β§ a4 β Q10) β§ q5 + a2 + a3 + a4 = 0
simp_all All goals completed! π
Β· W1.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h2:a2 β Q10h3:a3 β Q10h4:a4 β Q10h1:a1 β Q5β’ (β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ q5 + a + a_1 + b = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0 right W1.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h2:a2 β Q10h3:a3 β Q10h4:a4 β Q10h1:a1 β Q5β’ β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
use a1, a2, a3, a4 All goals completed! π
Β· W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2) (Q10.val ΓΛ’ Q10.val ΓΛ’ Q10.val)β’ 0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2) (Q10.val ΓΛ’ Q10.val ΓΛ’ Q10.val) simp_all All goals completed! π
Β· W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match qHu with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Multiset.ndinsert q5 Q5.val)β’ (match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val) match qHu with
| some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:0 β
match some qHu with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Multiset.ndinsert q5 Q5.val)β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)
simp at h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:β a b, ((a = q5 β¨ a β Q5) β§ (b = q5 β¨ b β Q5)) β§ -qHu - qHu + a + b = 0β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)
obtain β¨a1, a2, β¨h1, h2β©, hsumβ© := h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 = q5 β¨ a1 β Q5h2:a2 = q5 β¨ a2 β Q5β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)
rcases h1 with h1 | h1 inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 = q5 β¨ a2 β Q5h1:a1 = q5β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 = q5 β¨ a2 β Q5h1:a1 β Q5β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)
Β· inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 = q5 β¨ a2 β Q5h1:a1 = q5β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val) subst h1 inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 = a1 β¨ a2 β Q5β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
a1 + a1 - qHu - qHu = 0 β¨ β a β Q5, a + a1 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)
left inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 = a1 β¨ a2 β Q5β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } => a1 + a1 - qHu - qHu = 0 β¨ β a β Q5, a + a1 - qHu - qHu = 0
| x => False
rcases h2 with h2 | h2 inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 = a1β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } => a1 + a1 - qHu - qHu = 0 β¨ β a β Q5, a + a1 - qHu - qHu = 0
| x => Falseinl.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 β Q5β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } => a1 + a1 - qHu - qHu = 0 β¨ β a β Q5, a + a1 - qHu - qHu = 0
| x => False
Β· inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 = a1β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } => a1 + a1 - qHu - qHu = 0 β¨ β a β Q5, a + a1 - qHu - qHu = 0
| x => False left inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 = a1β’ a1 + a1 - qHu - qHu = 0
subst h2 inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a2:π©hsum:-qHu - qHu + a2 + a2 = 0β’ a2 + a2 - qHu - qHu = 0
rw [β hsum inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a2:π©hsum:-qHu - qHu + a2 + a2 = 0β’ a2 + a2 - qHu - qHu = -qHu - qHu + a2 + a2 inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a2:π©hsum:-qHu - qHu + a2 + a2 = 0β’ a2 + a2 - qHu - qHu = -qHu - qHu + a2 + a2]inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a2:π©hsum:-qHu - qHu + a2 + a2 = 0β’ a2 + a2 - qHu - qHu = -qHu - qHu + a2 + a2
abel All goals completed! π
Β· inl.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 β Q5β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } => a1 + a1 - qHu - qHu = 0 β¨ β a β Q5, a + a1 - qHu - qHu = 0
| x => False right inl.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 β Q5β’ β a β Q5, a + a1 - qHu - qHu = 0
use a2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 β Q5β’ a2 β Q5 β§ a2 + a1 - qHu - qHu = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 β Q5β’ a2 + a1 - qHu - qHu = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 β Q5β’ a2 + a1 - qHu - qHu = -qHu - qHu + a1 + a2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 β Q5β’ a2 + a1 - qHu - qHu = -qHu - qHu + a1 + a2]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 β Q5β’ a2 + a1 - qHu - qHu = -qHu - qHu + a1 + a2
abel All goals completed! π
Β· inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h2:a2 = q5 β¨ a2 β Q5h1:a1 β Q5β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val) rcases h2 with h2 | h2 inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 = q5β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 β Q5β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)
Β· inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 = q5β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val) left inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 = q5β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } => q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False
right inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 = q5β’ β a β Q5, a + q5 - qHu - qHu = 0
use a1 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 = q5β’ a1 β Q5 β§ a1 + q5 - qHu - qHu = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + q5 = 0h1:a1 β Q5h2:a2 = q5β’ a1 + q5 - qHu - qHu = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + q5 = 0h1:a1 β Q5h2:a2 = q5β’ a1 + q5 - qHu - qHu = -qHu - qHu + a1 + q5 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + q5 = 0h1:a1 β Q5h2:a2 = q5β’ a1 + q5 - qHu - qHu = -qHu - qHu + a1 + q5]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + q5 = 0h1:a1 β Q5h2:a2 = q5β’ a1 + q5 - qHu - qHu = -qHu - qHu + a1 + q5
abel All goals completed! π
Β· inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 β Q5β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val) right inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 β Q5β’ 0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)
rw [@Multiset.mem_map inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 β Q5β’ β a β Q5.val ΓΛ’ Q5.val, -qHu - qHu + a.1 + a.2 = 0 inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 β Q5β’ β a β Q5.val ΓΛ’ Q5.val, -qHu - qHu + a.1 + a.2 = 0]inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 β Q5β’ β a β Q5.val ΓΛ’ Q5.val, -qHu - qHu + a.1 + a.2 = 0
simp only [Multiset.mem_product, Finset.mem_val, Prod.exists] inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©a1:π©a2:π©hsum:-qHu - qHu + a1 + a2 = 0h1:a1 β Q5h2:a2 β Q5β’ β a b, (a β Q5 β§ b β Q5) β§ -qHu - qHu + a + b = 0
use a1, a2 All goals completed! π
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match none with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Multiset.ndinsert q5 Q5.val)β’ (match { qHd := qHd, qHu := none, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } =>
q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => False) β¨
0 β
match none with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val) simp at h All goals completed! π
Β· W4 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) (Multiset.ndinsert q5 Q5.val)β’ (match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 + qHd - qHu - qHu = 0
| x => False) β¨
0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.val match qHd, qHu with
| some qHd, some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:0 β
match some qHd, some qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) (Multiset.ndinsert q5 Q5.val)β’ (match { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 + qHd - qHu - qHu = 0
| x => False) β¨
0 β
match some qHd, some qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.val
simp_all π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0β’ q5 + qHd - qHu - qHu = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0
convert h using 1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0β’ q5 + qHd - qHu - qHu = 0 β qHd - qHu - qHu + q5 = 0
constructor mp π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0β’ q5 + qHd - qHu - qHu = 0 β qHd - qHu - qHu + q5 = 0mpr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0β’ qHd - qHu - qHu + q5 = 0 β q5 + qHd - qHu - qHu = 0
all_goals
Β· mpr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0β’ qHd - qHu - qHu + q5 = 0 β q5 + qHd - qHu - qHu = 0 intro h mpr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©hβ:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0h:qHd - qHu - qHu + q5 = 0β’ q5 + qHd - qHu - qHu = 0
rw [β h mp π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©hβ:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0h:q5 + qHd - qHu - qHu = 0β’ qHd - qHu - qHu + q5 = q5 + qHd - qHu - qHu mpr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©hβ:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0h:qHd - qHu - qHu + q5 = 0β’ q5 + qHd - qHu - qHu = qHd - qHu - qHu + q5] mp π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©hβ:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0h:q5 + qHd - qHu - qHu = 0β’ qHd - qHu - qHu + q5 = q5 + qHd - qHu - qHumpr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©hβ:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0h:qHd - qHu - qHu + q5 = 0β’ q5 + qHd - qHu - qHu = qHd - qHu - qHu + q5mpr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©hβ:qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0h:qHd - qHu - qHu + q5 = 0β’ q5 + qHd - qHu - qHu = qHd - qHu - qHu + q5
abel All goals completed! π
| none, _ => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©xβ:Option π©h:0 β
match none, xβ with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) (Multiset.ndinsert q5 Q5.val)β’ (match { qHd := none, qHu := xβ, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 + qHd - qHu - qHu = 0
| x => False) β¨
0 β
match none, xβ with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.val simp at h All goals completed! π
| some x, none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©x:π©h:0 β
match some x, none with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) (Multiset.ndinsert q5 Q5.val)β’ (match { qHd := some x, qHu := none, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 + qHd - qHu - qHu = 0
| x => False) β¨
0 β
match some x, none with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.val simp at h All goals completed! π
Β· K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:β a a_1 b, ((a = q5 β¨ a β Q5) β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0β’ (β a b, (a β Q10 β§ b β Q10) β§ -q5 + a + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0 obtain β¨a1, a2, a3, β¨h1, h2, h3β©, hsumβ© := h K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 = q5 β¨ a1 β Q5h2:a2 β Q10h3:a3 β Q10β’ (β a b, (a β Q10 β§ b β Q10) β§ -q5 + a + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0
rcases h1 with h1 | h1 K1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h2:a2 β Q10h3:a3 β Q10h1:a1 = q5β’ (β a b, (a β Q10 β§ b β Q10) β§ -q5 + a + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0K1.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h2:a2 β Q10h3:a3 β Q10h1:a1 β Q5β’ (β a b, (a β Q10 β§ b β Q10) β§ -q5 + a + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0
Β· K1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h2:a2 β Q10h3:a3 β Q10h1:a1 = q5β’ (β a b, (a β Q10 β§ b β Q10) β§ -q5 + a + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0 left K1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h2:a2 β Q10h3:a3 β Q10h1:a1 = q5β’ β a b, (a β Q10 β§ b β Q10) β§ -q5 + a + b = 0
use a2, a3 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h2:a2 β Q10h3:a3 β Q10h1:a1 = q5β’ (a2 β Q10 β§ a3 β Q10) β§ -q5 + a2 + a3 = 0
simp_all All goals completed! π
Β· K1.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h2:a2 β Q10h3:a3 β Q10h1:a1 β Q5β’ (β a b, (a β Q10 β§ b β Q10) β§ -q5 + a + b = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0 right K1.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h2:a2 β Q10h3:a3 β Q10h1:a1 β Q5β’ β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0
use a1, a2, a3 All goals completed! π
Β· K2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) Q10.valβ’ 0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) Q10.val simp_all All goals completed! π
Β· topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)β’ 0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val) simp_all All goals completed! π
Β· bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Q10.val)β’ (match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } => β a β Q10, a + q5 + qHd = 0) β¨
0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Q10.val) match qHd with
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:0 β
match none with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Q10.val)β’ (match { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } => β a β Q10, a + q5 + qHd = 0) β¨
0 β
match none with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Q10.val) simp at h All goals completed! π
| some qHd => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©h:0 β
match some qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Q10.val)β’ (match { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } => β a β Q10, a + q5 + qHd = 0) β¨
0 β
match some qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Q10.val)
simp_all π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©h:β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ qHd + a + b = 0β’ (β a β Q10, a + q5 + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0
obtain β¨a1, a2, β¨h1, h2β©, hsumβ© := h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 = q5 β¨ a1 β Q5h2:a2 β Q10β’ (β a β Q10, a + q5 + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0
rcases h1 with h1 | h1 inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10h1:a1 = q5β’ (β a β Q10, a + q5 + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10h1:a1 β Q5β’ (β a β Q10, a + q5 + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0
Β· inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10h1:a1 = q5β’ (β a β Q10, a + q5 + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0 subst h1 inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10β’ (β a β Q10, a + a1 + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0
left inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10β’ β a β Q10, a + a1 + qHd = 0
use a2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10β’ a2 β Q10 β§ a2 + a1 + qHd = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10β’ a2 + a1 + qHd = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10β’ a2 + a1 + qHd = qHd + a1 + a2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10β’ a2 + a1 + qHd = qHd + a1 + a2]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10β’ a2 + a1 + qHd = qHd + a1 + a2
abel All goals completed! π
Β· inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10h1:a1 β Q5β’ (β a β Q10, a + q5 + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0 right inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h2:a2 β Q10h1:a1 β Q5β’ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0
use a1, a2 All goals completed! π
C.3. AllowsTerm with inserted of Q5 charge from AllowsTermQ5
We show that if a charge spectrum x allows a potential term T
due to the addition of a charge q5, then the charge spectrum x with that charge inserted
allows that potential term T.
lemma allowsTerm_insertQ5_of_allowsTermQ5 {qHd qHu : Option π©}
{Q5 Q10: Finset π©} {q5 : π©} (T : PotentialTerm)
(h : AllowsTermQ5 β¨qHd, qHu, Q5, Q10β© q5 T) :
AllowsTerm β¨qHd, qHu, insert q5 Q5, Q10β© T := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 Tβ’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm T
rcases T ΞΌ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.ΞΌβ’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.ΞΌΞ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.Ξ²β’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.Ξ²Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.Ξβ’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.ΞW1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.W1β’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W1W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.W2β’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W2W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.W3β’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W3W4 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.W4β’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W4K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.K1β’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.K1K2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.K2β’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.K2topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.topYukawaβ’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.topYukawabottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 PotentialTerm.bottomYukawaβ’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.bottomYukawa
all_goals
simp [AllowsTermQ5] at h bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } => β a β Q10, a + q5 + qHd = 0β’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.bottomYukawa
all_goals
simp [allowsTerm_iff_zero_mem_ofPotentialTerm', ofPotentialTerm'] bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } => β a β Q10, a + q5 + qHd = 0β’ 0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Q10.val)
Β· Ξ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 = qHu
| x => Falseβ’ 0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) (Multiset.ndinsert q5 Q5.val) match qHu with
| some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 = qHu
| x => Falseβ’ 0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) (Multiset.ndinsert q5 Q5.val)
simp at h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 = qHuβ’ 0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) (Multiset.ndinsert q5 Q5.val)
subst h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©β’ 0 β
match some q5 with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) (Multiset.ndinsert q5 Q5.val)
simp All goals completed! π
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:match { qHd := qHd, qHu := none, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 = qHu
| x => Falseβ’ 0 β
match none with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) (Multiset.ndinsert q5 Q5.val) simp at h All goals completed! π
Β· Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ a + q5 + b = 0β’ β a a_1 b, ((a = q5 β¨ a β Q5) β§ (a_1 = q5 β¨ a_1 β Q5) β§ b β Q10) β§ a + a_1 + b = 0 obtain β¨q1, q2, β¨h1, h2β©, hsumβ© := h Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©q1:π©q2:π©hsum:q1 + q5 + q2 = 0h1:q1 = q5 β¨ q1 β Q5h2:q2 β Q10β’ β a a_1 b, ((a = q5 β¨ a β Q5) β§ (a_1 = q5 β¨ a_1 β Q5) β§ b β Q10) β§ a + a_1 + b = 0
use q1, q5, q2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©q1:π©q2:π©hsum:q1 + q5 + q2 = 0h1:q1 = q5 β¨ q1 β Q5h2:q2 β Q10β’ ((q1 = q5 β¨ q1 β Q5) β§ (q5 = q5 β¨ q5 β Q5) β§ q2 β Q10) β§ q1 + q5 + q2 = 0
simp_all All goals completed! π
Β· W1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ q5 + a + a_1 + b = 0β’ β a a_1 a_2 b, ((a = q5 β¨ a β Q5) β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0 obtain β¨q1, q2, q3, h3, hsumβ© := h W1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©q1:π©q2:π©q3:π©h3:q1 β Q10 β§ q2 β Q10 β§ q3 β Q10hsum:q5 + q1 + q2 + q3 = 0β’ β a a_1 a_2 b, ((a = q5 β¨ a β Q5) β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
use q5, q1, q2, q3 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©q1:π©q2:π©q3:π©h3:q1 β Q10 β§ q2 β Q10 β§ q3 β Q10hsum:q5 + q1 + q2 + q3 = 0β’ ((q5 = q5 β¨ q5 β Q5) β§ q1 β Q10 β§ q2 β Q10 β§ q3 β Q10) β§ q5 + q1 + q2 + q3 = 0
simp_all All goals completed! π
Β· W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } => q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => Falseβ’ 0 β
match qHu with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Multiset.ndinsert q5 Q5.val) match qHu with
| some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } => q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => Falseβ’ 0 β
match some qHu with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Multiset.ndinsert q5 Q5.val)
simp at h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0β’ 0 β
match some qHu with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Multiset.ndinsert q5 Q5.val)
simp only [Multiset.mem_map, Multiset.mem_product, Multiset.mem_ndinsert, Finset.mem_val,
Prod.exists] π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0β’ β a b, ((a = q5 β¨ a β Q5) β§ (b = q5 β¨ b β Q5)) β§ -qHu - qHu + a + b = 0
by_cases h' : q5 + q5 - qHu - qHu = 0 pos π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0h':q5 + q5 - qHu - qHu = 0β’ β a b, ((a = q5 β¨ a β Q5) β§ (b = q5 β¨ b β Q5)) β§ -qHu - qHu + a + b = 0neg π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0h':Β¬q5 + q5 - qHu - qHu = 0β’ β a b, ((a = q5 β¨ a β Q5) β§ (b = q5 β¨ b β Q5)) β§ -qHu - qHu + a + b = 0
Β· pos π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0h':q5 + q5 - qHu - qHu = 0β’ β a b, ((a = q5 β¨ a β Q5) β§ (b = q5 β¨ b β Q5)) β§ -qHu - qHu + a + b = 0 use q5, q5 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0h':q5 + q5 - qHu - qHu = 0β’ ((q5 = q5 β¨ q5 β Q5) β§ (q5 = q5 β¨ q5 β Q5)) β§ -qHu - qHu + q5 + q5 = 0
simp only [true_or, and_self, true_and] h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0h':q5 + q5 - qHu - qHu = 0β’ -qHu - qHu + q5 + q5 = 0
rw [β h' h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0h':q5 + q5 - qHu - qHu = 0β’ -qHu - qHu + q5 + q5 = q5 + q5 - qHu - qHu h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0h':q5 + q5 - qHu - qHu = 0β’ -qHu - qHu + q5 + q5 = q5 + q5 - qHu - qHu] h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0h':q5 + q5 - qHu - qHu = 0β’ -qHu - qHu + q5 + q5 = q5 + q5 - qHu - qHu
abel All goals completed! π
Β· neg π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0h':Β¬q5 + q5 - qHu - qHu = 0β’ β a b, ((a = q5 β¨ a β Q5) β§ (b = q5 β¨ b β Q5)) β§ -qHu - qHu + a + b = 0 simp_all neg π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h:β a β Q5, a + q5 - qHu - qHu = 0h':Β¬q5 + q5 - qHu - qHu = 0β’ β a b, ((a = q5 β¨ a β Q5) β§ (b = q5 β¨ b β Q5)) β§ -qHu - qHu + a + b = 0
obtain β¨q1, hsumβ© := h neg π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h':Β¬q5 + q5 - qHu - qHu = 0q1:π©hsum:q1 β Q5 β§ q1 + q5 - qHu - qHu = 0β’ β a b, ((a = q5 β¨ a β Q5) β§ (b = q5 β¨ b β Q5)) β§ -qHu - qHu + a + b = 0
use q1, q5 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h':Β¬q5 + q5 - qHu - qHu = 0q1:π©hsum:q1 β Q5 β§ q1 + q5 - qHu - qHu = 0β’ ((q1 = q5 β¨ q1 β Q5) β§ (q5 = q5 β¨ q5 β Q5)) β§ -qHu - qHu + q1 + q5 = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h':Β¬q5 + q5 - qHu - qHu = 0q1:π©hsum:q1 β Q5 β§ q1 + q5 - qHu - qHu = 0β’ -qHu - qHu + q1 + q5 = 0
rw [β hsum.2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h':Β¬q5 + q5 - qHu - qHu = 0q1:π©hsum:q1 β Q5 β§ q1 + q5 - qHu - qHu = 0β’ -qHu - qHu + q1 + q5 = q1 + q5 - qHu - qHu h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h':Β¬q5 + q5 - qHu - qHu = 0q1:π©hsum:q1 β Q5 β§ q1 + q5 - qHu - qHu = 0β’ -qHu - qHu + q1 + q5 = q1 + q5 - qHu - qHu]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHu:π©h':Β¬q5 + q5 - qHu - qHu = 0q1:π©hsum:q1 β Q5 β§ q1 + q5 - qHu - qHu = 0β’ -qHu - qHu + q1 + q5 = q1 + q5 - qHu - qHu
abel All goals completed! π
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:match { qHd := qHd, qHu := none, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5_1, Q10 := Q10 } => q5 + q5 - qHu - qHu = 0 β¨ β a β Q5, a + q5 - qHu - qHu = 0
| x => Falseβ’ 0 β
match none with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Multiset.ndinsert q5 Q5.val) simp at h All goals completed! π
Β· W4 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 + qHd - qHu - qHu = 0
| x => Falseβ’ 0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) (Multiset.ndinsert q5 Q5.val) match qHd, qHu with
| some qHd, some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:match { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 + qHd - qHu - qHu = 0
| x => Falseβ’ 0 β
match some qHd, some qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) (Multiset.ndinsert q5 Q5.val)
simp_all π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:q5 + qHd - qHu - qHu = 0β’ qHd - qHu - qHu + q5 = 0 β¨ β a β Q5, qHd - qHu - qHu + a = 0
left π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:q5 + qHd - qHu - qHu = 0β’ qHd - qHu - qHu + q5 = 0
rw [β h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:q5 + qHd - qHu - qHu = 0β’ qHd - qHu - qHu + q5 = q5 + qHd - qHu - qHu π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:q5 + qHd - qHu - qHu = 0β’ qHd - qHu - qHu + q5 = q5 + qHd - qHu - qHu] π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©qHu:π©h:q5 + qHd - qHu - qHu = 0β’ qHd - qHu - qHu + q5 = q5 + qHd - qHu - qHu
abel All goals completed! π
| none, _ => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©xβ:Option π©h:match { qHd := none, qHu := xβ, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 + qHd - qHu - qHu = 0
| x => Falseβ’ 0 β
match none, xβ with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) (Multiset.ndinsert q5 Q5.val) simp at h All goals completed! π
| some x, none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©x:π©h:match { qHd := some x, qHu := none, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => q5 + qHd - qHu - qHu = 0
| x => Falseβ’ 0 β
match some x, none with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) (Multiset.ndinsert q5 Q5.val) simp at h All goals completed! π
Β· K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:β a b, (a β Q10 β§ b β Q10) β§ -q5 + a + b = 0β’ β a a_1 b, ((a = q5 β¨ a β Q5) β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0 obtain β¨q1, q2, β¨h1, h2β©, hsumβ© := h K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©q1:π©q2:π©hsum:-q5 + q1 + q2 = 0h1:q1 β Q10h2:q2 β Q10β’ β a a_1 b, ((a = q5 β¨ a β Q5) β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0
use q5, q1, q2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©q1:π©q2:π©hsum:-q5 + q1 + q2 = 0h1:q1 β Q10h2:q2 β Q10β’ ((q5 = q5 β¨ q5 β Q5) β§ q1 β Q10 β§ q2 β Q10) β§ -q5 + q1 + q2 = 0
simp_all All goals completed! π
Β· bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } => β a β Q10, a + q5 + qHd = 0β’ 0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Q10.val) match qHd with
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©h:match { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } => β a β Q10, a + q5 + qHd = 0β’ 0 β
match none with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Q10.val) simp at h All goals completed! π
| some qHd => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©h:match { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } => β a β Q10, a + q5 + qHd = 0β’ 0 β
match some qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Q10.val)
simp at h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©h:β a β Q10, a + q5 + qHd = 0β’ 0 β
match some qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Q10.val)
obtain β¨q1, h1, hsumβ© := h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©q1:π©h1:q1 β Q10hsum:q1 + q5 + qHd = 0β’ 0 β
match some qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Multiset.ndinsert q5 Q5.val ΓΛ’ Q10.val)
simp only [Multiset.mem_map, Multiset.mem_product, Multiset.mem_ndinsert, Finset.mem_val,
Prod.exists] π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©q1:π©h1:q1 β Q10hsum:q1 + q5 + qHd = 0β’ β a b, ((a = q5 β¨ a β Q5) β§ b β Q10) β§ qHd + a + b = 0
use q5, q1 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©q1:π©h1:q1 β Q10hsum:q1 + q5 + qHd = 0β’ ((q5 = q5 β¨ q5 β Q5) β§ q1 β Q10) β§ qHd + q5 + q1 = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©q1:π©h1:q1 β Q10hsum:q1 + q5 + qHd = 0β’ qHd + q5 + q1 = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©q1:π©h1:q1 β Q10hsum:q1 + q5 + qHd = 0β’ qHd + q5 + q1 = q1 + q5 + qHd h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©q1:π©h1:q1 β Q10hsum:q1 + q5 + qHd = 0β’ qHd + q5 + q1 = q1 + q5 + qHd]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©qHd:π©q1:π©h1:q1 β Q10hsum:q1 + q5 + qHd = 0β’ qHd + q5 + q1 = q1 + q5 + qHd
abel All goals completed! π
C.4. AllowsTerm with inserted of Q5 charge iff AllowsTermQ5 or AllowsTerm
We show that the charge spectrum x with that charge inserted
allows that potential term T if and only if either the charge spectrum x
allows that potential term T due to the addition of that charge,
or the charge spectrum x already allows that potential term T.
lemma allowsTerm_insertQ5_iff_allowsTermQ5 {qHd qHu : Option π©}
{Q5 Q10: Finset π©} {q5 : π©} (T : PotentialTerm) :
AllowsTerm β¨qHd, qHu, insert q5 Q5, Q10β© T β
AllowsTermQ5 β¨qHd, qHu, Q5, Q10β© q5 T β¨
AllowsTerm β¨qHd, qHu, Q5, Q10β© T := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©T:PotentialTermβ’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm T β
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 T β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm T
refine β¨allowsTermQ5_or_allowsTerm_of_allowsTerm_insertQ5 T, ?_β© π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©T:PotentialTermβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 T β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm T β
{ qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm T
rintro (h | h) inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 Tβ’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm Tinr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm Tβ’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm T
Β· inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ5 q5 Tβ’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm T exact allowsTerm_insertQ5_of_allowsTermQ5 T h All goals completed! π
Β· inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm Tβ’ { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 }.AllowsTerm T exact allowsTerm_mono (by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q5:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm Tβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } β { qHd := qHd, qHu := qHu, Q5 := insert q5 Q5, Q10 := Q10 } simp [subset_def] All goals completed! π) h
D. Allowing a potential term by insertion of a Q10 charge
We now replicate the previous section, but for the insertion of a Q10 charge, rather
than a Q5 charge.
We study what happens when we add a charge q10 to the Q10 charges of a charge spectrum x.
We define the proposition AllowsTermQ10 x q10 T which is true if adding the charge q10
to the Q10 charges of x allows the potential term T due to the addition of that charge.
We prove a number of properties of this proposition, including its relation
to AllowsTerm and its decidability.
The proposition for which says, given a charge x adding a charge q5 permits the
existence of a potential term T due to the addition of that charge.
def AllowsTermQ10 (x : ChargeSpectrum π©) (q10 : π©) (T : PotentialTerm) : Prop :=
match T with
| .ΞΌ => false
| .Ξ² => false
| .Ξ => (0 : π©) β (x.Q5.product x.Q5).val.map (fun (y, z) => y + z + q10)
| .W4 => false
| .K1 => (0 : π©) β (x.Q5.product (insert q10 x.Q10)).val.map (fun (q5, q2) => -q5 + q2+ q10)
| .W1 => (0 : π©) β (x.Q5.product ((insert q10 x.Q10).product (insert q10 x.Q10))).val.map
(fun (q5, q2, q3) => q5 + q2 + q3 + q10)
| .W2 =>
match x with
| β¨some qHd, _, _, _β© => (0 : π©) β
(((insert q10 x.Q10).product (insert q10 x.Q10))).val.map
(fun (q2, q3) => qHd + q2 + q3 + q10)
| _ => false
| .bottomYukawa =>
match x with
| β¨none, _, _, _β© => false
| β¨some qHd, _, _, _β© => (0 : π©) β x.Q5.val.map (fun y => q10 + y + qHd)
| .topYukawa =>
match x with
| β¨_, some qHu, _, _β© => (0 : π©) β (insert q10 x.Q10).val.map (fun y => q10 + y - qHu)
| _ => false
| .K2 =>
match x with
| β¨some qHd, some qHu, _, _β© => qHd + qHu + q10 = 0
| _ => false
| .W3 => false
D.1. Decidability of AllowsTermQ5
We show that if the type π© has decidable equality, then the proposition
AllowsTermQ10 x q10 T is decidable for any charge spectrum x, charge q10, and
potential term T.
instance (x : ChargeSpectrum π©) (q10 : π©) (T : PotentialTerm) :
Decidable (AllowsTermQ10 x q10 T) :=
match T with
| .ΞΌ => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermh:x.AllowsTermQ10 q10 PotentialTerm.ΞΌβ’ False simp [AllowsTermQ10] at h All goals completed! π
| .Ξ² => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermh:x.AllowsTermQ10 q10 PotentialTerm.Ξ²β’ False simp [AllowsTermQ10] at h All goals completed! π
| .Ξ =>
decidable_of_iff ((0 : π©) β (x.Q5.product x.Q5).val.map (fun (y, z) => y + z + q10))
(by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermβ’ 0 β
Multiset.map
(fun x =>
match x with
| (y, z) => y + z + q10)
(x.Q5.product x.Q5).val β
x.AllowsTermQ10 q10 PotentialTerm.Ξ simp [AllowsTermQ10] All goals completed! π)
| .W4 => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermh:x.AllowsTermQ10 q10 PotentialTerm.W4β’ False simp [AllowsTermQ10] at h All goals completed! π
| .K1 =>
decidable_of_iff ((0 : π©) β
(x.Q5.product (insert q10 x.Q10)).val.map (fun (q5, q2) => -q5 + q2 + q10))
(by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermβ’ 0 β
Multiset.map
(fun x =>
match x with
| (q5, q2) => -q5 + q2 + q10)
(x.Q5.product (insert q10 x.Q10)).val β
x.AllowsTermQ10 q10 PotentialTerm.K1 simp [AllowsTermQ10] All goals completed! π)
| .W1 =>
decidable_of_iff ((0 : π©) β
(x.Q5.product ((insert q10 x.Q10).product (insert q10 x.Q10))).val.map
(fun (q5, q2, q3) => q5 + q2 + q3 + q10)) (by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermβ’ 0 β
Multiset.map
(fun x =>
match x with
| (q5, q2, q3) => q5 + q2 + q3 + q10)
(x.Q5.product ((insert q10 x.Q10).product (insert q10 x.Q10))).val β
x.AllowsTermQ10 q10 PotentialTerm.W1 rfl All goals completed! π)
| .W2 =>
match x with
| β¨some qHd, _, _, Q10β© => decidable_of_iff ((0 : π©) β
(((insert q10 Q10).product (insert q10 Q10))).val.map
(fun (q2, q3) => qHd + q2 + q3 + q10)) (by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermqHd:π©qHuβ:Option π©Q5β:Finset π©Q10:Finset π©β’ 0 β
Multiset.map
(fun x =>
match x with
| (q2, q3) => qHd + q2 + q3 + q10)
((insert q10 Q10).product (insert q10 Q10)).val β
{ qHd := some qHd, qHu := qHuβ, Q5 := Q5β, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.W2 simp [AllowsTermQ10] All goals completed! π)
| β¨none, _, _, _β© => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermqHuβ:Option π©Q5β:Finset π©Q10β:Finset π©h:{ qHd := none, qHu := qHuβ, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ10 q10 PotentialTerm.W2β’ False simp [AllowsTermQ10] at h All goals completed! π
| .bottomYukawa =>
match x with
| β¨none, _, _, _β© => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermqHuβ:Option π©Q5β:Finset π©Q10β:Finset π©h:{ qHd := none, qHu := qHuβ, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ10 q10 PotentialTerm.bottomYukawaβ’ False simp [AllowsTermQ10] at h All goals completed! π
| β¨some qHd, _, Q5, _β© => decidable_of_iff ((0 : π©) β Q5.val.map (fun y => q10 + y + qHd))
(by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermqHd:π©qHuβ:Option π©Q5:Finset π©Q10β:Finset π©β’ 0 β Multiset.map (fun y => q10 + y + qHd) Q5.val β
{ qHd := some qHd, qHu := qHuβ, Q5 := Q5, Q10 := Q10β }.AllowsTermQ10 q10 PotentialTerm.bottomYukawa simp [AllowsTermQ10] All goals completed! π)
| .topYukawa =>
match x with
| β¨_, some qHu, _, Q10β© => decidable_of_iff
((0 : π©) β (insert q10 Q10).val.map (fun y => q10 + y - qHu))
(by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermqHdβ:Option π©qHu:π©Q5β:Finset π©Q10:Finset π©β’ 0 β Multiset.map (fun y => q10 + y - qHu) (insert q10 Q10).val β
{ qHd := qHdβ, qHu := some qHu, Q5 := Q5β, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.topYukawa simp [AllowsTermQ10] All goals completed! π)
| β¨_, none, _, _β© => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermqHdβ:Option π©Q5β:Finset π©Q10β:Finset π©h:{ qHd := qHdβ, qHu := none, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ10 q10 PotentialTerm.topYukawaβ’ False simp [AllowsTermQ10] at h All goals completed! π
| .K2 =>
match x with
| β¨some qHd, some qHu, _, _β© => decidable_of_iff (qHd + qHu + q10 = 0) (by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermqHd:π©qHu:π©Q5β:Finset π©Q10β:Finset π©β’ qHd + qHu + q10 = 0 β { qHd := some qHd, qHu := some qHu, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ10 q10 PotentialTerm.K2 simp [AllowsTermQ10] All goals completed! π)
| β¨some qHd, none, _, _β© => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermqHd:π©Q5β:Finset π©Q10β:Finset π©h:{ qHd := some qHd, qHu := none, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ10 q10 PotentialTerm.K2β’ False simp [AllowsTermQ10] at h All goals completed! π
| β¨none, _, _, _β© => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermqHuβ:Option π©Q5β:Finset π©Q10β:Finset π©h:{ qHd := none, qHu := qHuβ, Q5 := Q5β, Q10 := Q10β }.AllowsTermQ10 q10 PotentialTerm.K2β’ False simp [AllowsTermQ10] at h All goals completed! π
| .W3 => isFalse fun h => by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©x:ChargeSpectrum π©q10:π©T:PotentialTermh:x.AllowsTermQ10 q10 PotentialTerm.W3β’ False simp [AllowsTermQ10] at h All goals completed! π
D.2. AllowsTermQ10 or AllowsTerm from AllowsTerm with inserted of Q10 charge
We show that if a charge spectrum x with an inserted charge q10
allows a potential term T, then either the charge spectrum x
allows that potential term T due to the addition of that charge,
or the charge spectrum x already allows that potential term T.
lemma allowsTermQ10_or_allowsTerm_of_allowsTerm_insertQ10 {qHd qHu : Option π©}
{Q5 Q10: Finset π©} {q10 : π©} (T : PotentialTerm)
(h : AllowsTerm β¨qHd, qHu, Q5, insert q10 Q10β© T) :
AllowsTermQ10 β¨qHd, qHu, Q5, Q10β© q10 T β¨
AllowsTerm β¨qHd, qHu, Q5, Q10β© T := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm Tβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 T β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm T
rcases T ΞΌ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.ΞΌβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.ΞΌ β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.ΞΌΞ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.Ξ²β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.Ξ² β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.Ξ²Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.Ξβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.Ξ β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.ΞW1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.W1β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.W1 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W1W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.W2β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.W2 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W2W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.W3β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.W3 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W3W4 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.W4β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.W4 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.W4K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.K1β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.K1 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.K1K2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.K2β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.K2 β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.K2topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.topYukawaβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.topYukawa β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.topYukawabottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.bottomYukawaβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.bottomYukawa β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm PotentialTerm.bottomYukawa
all_goals
simp [allowsTerm_iff_zero_mem_ofPotentialTerm', ofPotentialTerm', AllowsTermQ10] at h β’ bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Multiset.ndinsert q10 Q10.val)β’ (match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5_1, Q10 := Q10 } => β a β Q5, q10 + a + qHd = 0) β¨
0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Q10.val)
Β· ΞΌ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => {qHd - qHu}β’ 0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => {qHd - qHu} simp_all All goals completed! π
Β· Ξ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) Q5.valβ’ 0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x) Q5.val simp_all All goals completed! π
Β· Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b = 0β’ (β a b, (a β Q5 β§ b β Q5) β§ a + b + q10 = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0 obtain β¨a1, a2, a3, β¨h1, h2, h3β©, hsumβ© := h Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q5h3:a3 = q10 β¨ a3 β Q10β’ (β a b, (a β Q5 β§ b β Q5) β§ a + b + q10 = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0
rcases h3 with h3 | h3 Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q5h3:a3 = q10β’ (β a b, (a β Q5 β§ b β Q5) β§ a + b + q10 = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0Ξ.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q5h3:a3 β Q10β’ (β a b, (a β Q5 β§ b β Q5) β§ a + b + q10 = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0
Β· Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q5h3:a3 = q10β’ (β a b, (a β Q5 β§ b β Q5) β§ a + b + q10 = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0 subst h3 Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q5β’ (β a b, (a β Q5 β§ b β Q5) β§ a + b + a3 = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0
left Ξ.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q5β’ β a b, (a β Q5 β§ b β Q5) β§ a + b + a3 = 0
use a1, a2 All goals completed! π
Β· Ξ.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q5h3:a3 β Q10β’ (β a b, (a β Q5 β§ b β Q5) β§ a + b + q10 = 0) β¨ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0 right Ξ.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q5h3:a3 β Q10β’ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ b β Q10) β§ a + a_1 + b = 0
use a1, a2, a3 All goals completed! π
Β· W1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:β a a_1 a_2 b,
(a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (a_2 = q10 β¨ a_2 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + a_2 + b = 0β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0 obtain β¨a1, a2, a3, a4, β¨h1, h2, h3, h4β©, hsumβ© := h W1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 = q10 β¨ a2 β Q10h3:a3 = q10 β¨ a3 β Q10h4:a4 = q10 β¨ a4 β Q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
rcases h2 with h2 | h2 W1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h4:a4 = q10 β¨ a4 β Q10h2:a2 = q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0W1.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h4:a4 = q10 β¨ a4 β Q10h2:a2 β Q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
Β· W1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h4:a4 = q10 β¨ a4 β Q10h2:a2 = q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0 subst h2 W1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h3:a3 = a2 β¨ a3 β Q10h4:a4 = a2 β¨ a4 β Q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = a2 β¨ a_1 β Q10) β§ (b = a2 β¨ b β Q10)) β§ a + a_1 + b + a2 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
left W1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h3:a3 = a2 β¨ a3 β Q10h4:a4 = a2 β¨ a4 β Q10β’ β a a_1 b, (a β Q5 β§ (a_1 = a2 β¨ a_1 β Q10) β§ (b = a2 β¨ b β Q10)) β§ a + a_1 + b + a2 = 0
use a1, a3, a4 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h3:a3 = a2 β¨ a3 β Q10h4:a4 = a2 β¨ a4 β Q10β’ (a1 β Q5 β§ (a3 = a2 β¨ a3 β Q10) β§ (a4 = a2 β¨ a4 β Q10)) β§ a1 + a3 + a4 + a2 = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h3:a3 = a2 β¨ a3 β Q10h4:a4 = a2 β¨ a4 β Q10β’ a1 + a3 + a4 + a2 = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h3:a3 = a2 β¨ a3 β Q10h4:a4 = a2 β¨ a4 β Q10β’ a1 + a3 + a4 + a2 = a1 + a2 + a3 + a4 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h3:a3 = a2 β¨ a3 β Q10h4:a4 = a2 β¨ a4 β Q10β’ a1 + a3 + a4 + a2 = a1 + a2 + a3 + a4] h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h3:a3 = a2 β¨ a3 β Q10h4:a4 = a2 β¨ a4 β Q10β’ a1 + a3 + a4 + a2 = a1 + a2 + a3 + a4
abel All goals completed! π
rcases h3 with h3 | h3 W1.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h4:a4 = q10 β¨ a4 β Q10h2:a2 β Q10h3:a3 = q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0W1.inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h4:a4 = q10 β¨ a4 β Q10h2:a2 β Q10h3:a3 β Q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
Β· W1.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h4:a4 = q10 β¨ a4 β Q10h2:a2 β Q10h3:a3 = q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0 subst h3 W1.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h4:a4 = a3 β¨ a4 β Q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = a3 β¨ a_1 β Q10) β§ (b = a3 β¨ b β Q10)) β§ a + a_1 + b + a3 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
left W1.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h4:a4 = a3 β¨ a4 β Q10β’ β a a_1 b, (a β Q5 β§ (a_1 = a3 β¨ a_1 β Q10) β§ (b = a3 β¨ b β Q10)) β§ a + a_1 + b + a3 = 0
use a1, a2, a4 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h4:a4 = a3 β¨ a4 β Q10β’ (a1 β Q5 β§ (a2 = a3 β¨ a2 β Q10) β§ (a4 = a3 β¨ a4 β Q10)) β§ a1 + a2 + a4 + a3 = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h4:a4 = a3 β¨ a4 β Q10β’ a1 + a2 + a4 + a3 = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h4:a4 = a3 β¨ a4 β Q10β’ a1 + a2 + a4 + a3 = a1 + a2 + a3 + a4 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h4:a4 = a3 β¨ a4 β Q10β’ a1 + a2 + a4 + a3 = a1 + a2 + a3 + a4]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h4:a4 = a3 β¨ a4 β Q10β’ a1 + a2 + a4 + a3 = a1 + a2 + a3 + a4
abel All goals completed! π
rcases h4 with h4 | h4 W1.inr.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 β Q10h4:a4 = q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0W1.inr.inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 β Q10h4:a4 β Q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
Β· W1.inr.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 β Q10h4:a4 = q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0 subst h4 W1.inr.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 β Q10β’ (β a a_1 b, (a β Q5 β§ (a_1 = a4 β¨ a_1 β Q10) β§ (b = a4 β¨ b β Q10)) β§ a + a_1 + b + a4 = 0) β¨
β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
left W1.inr.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 β Q10β’ β a a_1 b, (a β Q5 β§ (a_1 = a4 β¨ a_1 β Q10) β§ (b = a4 β¨ b β Q10)) β§ a + a_1 + b + a4 = 0
use a1, a2, a3 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 β Q10β’ (a1 β Q5 β§ (a2 = a4 β¨ a2 β Q10) β§ (a3 = a4 β¨ a3 β Q10)) β§ a1 + a2 + a3 + a4 = 0
simp_all All goals completed! π
right W1.inr.inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©a4:π©hsum:a1 + a2 + a3 + a4 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 β Q10h4:a4 β Q10β’ β a a_1 a_2 b, (a β Q5 β§ a_1 β Q10 β§ a_2 β Q10 β§ b β Q10) β§ a + a_1 + a_2 + b = 0
use a1, a2, a3, a4 All goals completed! π
Β· W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match qHd with
| none => 0
| some qHd =>
Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2)
(Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val)β’ (match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } =>
β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0
| x => False) β¨
0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2) (Q10.val ΓΛ’ Q10.val ΓΛ’ Q10.val) match qHd with
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match none with
| none => 0
| some qHd =>
Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2)
(Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val)β’ (match { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } =>
β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0
| x => False) β¨
0 β
match none with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2) (Q10.val ΓΛ’ Q10.val ΓΛ’ Q10.val) simp at h All goals completed! π
| some qHd => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©h:0 β
match some qHd with
| none => 0
| some qHd =>
Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2)
(Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val)β’ (match { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } =>
β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0
| x => False) β¨
0 β
match some qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2) (Q10.val ΓΛ’ Q10.val ΓΛ’ Q10.val)
simp_all π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©h:β a a_1 b, ((a = q10 β¨ a β Q10) β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + a_1 + b = 0β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0
obtain β¨a1, a2, a3, β¨h1, h2, h3β©, hsumβ© := h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 = q10 β¨ a1 β Q10h2:a2 = q10 β¨ a2 β Q10h3:a3 = q10 β¨ a3 β Q10β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0
rcases h1 with h1 | h1 inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h2:a2 = q10 β¨ a2 β Q10h3:a3 = q10 β¨ a3 β Q10h1:a1 = q10β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h2:a2 = q10 β¨ a2 β Q10h3:a3 = q10 β¨ a3 β Q10h1:a1 β Q10β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0
Β· inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h2:a2 = q10 β¨ a2 β Q10h3:a3 = q10 β¨ a3 β Q10h1:a1 = q10β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0 subst h1 inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h2:a2 = a1 β¨ a2 β Q10h3:a3 = a1 β¨ a3 β Q10β’ (β a b, ((a = a1 β¨ a β Q10) β§ (b = a1 β¨ b β Q10)) β§ qHd + a + b + a1 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0
left inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h2:a2 = a1 β¨ a2 β Q10h3:a3 = a1 β¨ a3 β Q10β’ β a b, ((a = a1 β¨ a β Q10) β§ (b = a1 β¨ b β Q10)) β§ qHd + a + b + a1 = 0
use a2, a3 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h2:a2 = a1 β¨ a2 β Q10h3:a3 = a1 β¨ a3 β Q10β’ ((a2 = a1 β¨ a2 β Q10) β§ (a3 = a1 β¨ a3 β Q10)) β§ qHd + a2 + a3 + a1 = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h2:a2 = a1 β¨ a2 β Q10h3:a3 = a1 β¨ a3 β Q10β’ qHd + a2 + a3 + a1 = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h2:a2 = a1 β¨ a2 β Q10h3:a3 = a1 β¨ a3 β Q10β’ qHd + a2 + a3 + a1 = qHd + a1 + a2 + a3 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h2:a2 = a1 β¨ a2 β Q10h3:a3 = a1 β¨ a3 β Q10β’ qHd + a2 + a3 + a1 = qHd + a1 + a2 + a3]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h2:a2 = a1 β¨ a2 β Q10h3:a3 = a1 β¨ a3 β Q10β’ qHd + a2 + a3 + a1 = qHd + a1 + a2 + a3
abel All goals completed! π
rcases h2 with h2 | h2 inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h3:a3 = q10 β¨ a3 β Q10h1:a1 β Q10h2:a2 = q10β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h3:a3 = q10 β¨ a3 β Q10h1:a1 β Q10h2:a2 β Q10β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0
Β· inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h3:a3 = q10 β¨ a3 β Q10h1:a1 β Q10h2:a2 = q10β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0 subst h2 inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h3:a3 = a2 β¨ a3 β Q10β’ (β a b, ((a = a2 β¨ a β Q10) β§ (b = a2 β¨ b β Q10)) β§ qHd + a + b + a2 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0
left inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h3:a3 = a2 β¨ a3 β Q10β’ β a b, ((a = a2 β¨ a β Q10) β§ (b = a2 β¨ b β Q10)) β§ qHd + a + b + a2 = 0
use a1, a3 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h3:a3 = a2 β¨ a3 β Q10β’ ((a1 = a2 β¨ a1 β Q10) β§ (a3 = a2 β¨ a3 β Q10)) β§ qHd + a1 + a3 + a2 = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h3:a3 = a2 β¨ a3 β Q10β’ qHd + a1 + a3 + a2 = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h3:a3 = a2 β¨ a3 β Q10β’ qHd + a1 + a3 + a2 = qHd + a1 + a2 + a3 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h3:a3 = a2 β¨ a3 β Q10β’ qHd + a1 + a3 + a2 = qHd + a1 + a2 + a3]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h3:a3 = a2 β¨ a3 β Q10β’ qHd + a1 + a3 + a2 = qHd + a1 + a2 + a3
abel All goals completed! π
rcases h3 with h3 | h3 inr.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h2:a2 β Q10h3:a3 = q10β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0inr.inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h2:a2 β Q10h3:a3 β Q10β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0
Β· inr.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h2:a2 β Q10h3:a3 = q10β’ (β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0 subst h3 inr.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h2:a2 β Q10β’ (β a b, ((a = a3 β¨ a β Q10) β§ (b = a3 β¨ b β Q10)) β§ qHd + a + b + a3 = 0) β¨
β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0
left inr.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h2:a2 β Q10β’ β a b, ((a = a3 β¨ a β Q10) β§ (b = a3 β¨ b β Q10)) β§ qHd + a + b + a3 = 0
use a1, a2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h2:a2 β Q10β’ ((a1 = a3 β¨ a1 β Q10) β§ (a2 = a3 β¨ a2 β Q10)) β§ qHd + a1 + a2 + a3 = 0
simp_all All goals completed! π
right inr.inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©a3:π©hsum:qHd + a1 + a2 + a3 = 0h1:a1 β Q10h2:a2 β Q10h3:a3 β Q10β’ β a a_1 b, (a β Q10 β§ a_1 β Q10 β§ b β Q10) β§ qHd + a + a_1 + b = 0
use a1, a2, a3 All goals completed! π
Β· W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)β’ 0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val) match qHu with
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match none with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)β’ 0 β
match none with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val) simp at h All goals completed! π
| some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val)β’ 0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu - qHu + x.1 + x.2) (Q5.val ΓΛ’ Q5.val) simp_all All goals completed! π
Β· W4 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.valβ’ 0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.val match qHd, qHu with
| none, _ => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©xβ:Option π©h:0 β
match none, xβ with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.valβ’ 0 β
match none, xβ with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.val simp at h All goals completed! π
| some x, none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©x:π©h:0 β
match some x, none with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.valβ’ 0 β
match some x, none with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.val simp at h All goals completed! π
| some qHd, some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©qHu:π©h:0 β
match some qHd, some qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.valβ’ 0 β
match some qHd, some qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd - qHu - qHu + x) Q5.val simp_all All goals completed! π
Β· K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ -a + a_1 + b = 0β’ (β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0) β¨
β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0 obtain β¨a1, a2, a3, β¨h1, h2, h3β©, hsumβ© := h K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 = q10 β¨ a2 β Q10h3:a3 = q10 β¨ a3 β Q10β’ (β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0) β¨
β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0
rcases h2 with h2 | h2 K1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h2:a2 = q10β’ (β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0) β¨
β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0K1.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h2:a2 β Q10β’ (β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0) β¨
β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0
Β· K1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h2:a2 = q10β’ (β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0) β¨
β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0 left K1.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h2:a2 = q10β’ β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0
use a1, a3 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h2:a2 = q10β’ (a1 β Q5 β§ (a3 = q10 β¨ a3 β Q10)) β§ -a1 + a3 + q10 = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + q10 + a3 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h2:a2 = q10β’ -a1 + a3 + q10 = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + q10 + a3 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h2:a2 = q10β’ -a1 + a3 + q10 = -a1 + q10 + a3 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + q10 + a3 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h2:a2 = q10β’ -a1 + a3 + q10 = -a1 + q10 + a3]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + q10 + a3 = 0h1:a1 β Q5h3:a3 = q10 β¨ a3 β Q10h2:a2 = q10β’ -a1 + a3 + q10 = -a1 + q10 + a3
abel All goals completed! π
rcases h3 with h3 | h3 K1.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 = q10β’ (β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0) β¨
β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0K1.inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 β Q10β’ (β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0) β¨
β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0
Β· K1.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 = q10β’ (β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0) β¨
β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0 left K1.inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 = q10β’ β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0
use a1, a2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 = q10β’ (a1 β Q5 β§ (a2 = q10 β¨ a2 β Q10)) β§ -a1 + a2 + q10 = 0
simp_all All goals completed! π
right K1.inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:-a1 + a2 + a3 = 0h1:a1 β Q5h2:a2 β Q10h3:a3 β Q10β’ β a a_1 b, (a β Q5 β§ a_1 β Q10 β§ b β Q10) β§ -a + a_1 + b = 0
use a1, a2, a3 All goals completed! π
Β· K2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) (Multiset.ndinsert q10 Q10.val)β’ (match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => qHd + qHu + q10 = 0
| x => False) β¨
0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) Q10.val match qHd, qHu with
| none, _ => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©xβ:Option π©h:0 β
match none, xβ with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) (Multiset.ndinsert q10 Q10.val)β’ (match { qHd := none, qHu := xβ, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => qHd + qHu + q10 = 0
| x => False) β¨
0 β
match none, xβ with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) Q10.val simp at h All goals completed! π
| some x, none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©x:π©h:0 β
match some x, none with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) (Multiset.ndinsert q10 Q10.val)β’ (match { qHd := some x, qHu := none, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => qHd + qHu + q10 = 0
| x => False) β¨
0 β
match some x, none with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) Q10.val simp at h All goals completed! π
| some qHd, some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©qHu:π©h:0 β
match some qHd, some qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) (Multiset.ndinsert q10 Q10.val)β’ (match { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => qHd + qHu + q10 = 0
| x => False) β¨
0 β
match some qHd, some qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) Q10.val simp_all All goals completed! π
Β· topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match qHu with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu + x.1 + x.2) (Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val)β’ (match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val) match qHu with
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match none with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu + x.1 + x.2) (Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val)β’ (match { qHd := qHd, qHu := none, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match none with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val) simp at h All goals completed! π
| some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:0 β
match some qHu with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu + x.1 + x.2) (Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val)β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)
simp at h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ -qHu + a + b = 0β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)
obtain β¨a1, a2, β¨h1, h2β©, hsumβ© := h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 = q10 β¨ a1 β Q10h2:a2 = q10 β¨ a2 β Q10β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)
rcases h1 with h1 | h1 inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 = q10 β¨ a2 β Q10h1:a1 = q10β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 = q10 β¨ a2 β Q10h1:a1 β Q10β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)
Β· inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 = q10 β¨ a2 β Q10h1:a1 = q10β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val) subst h1 inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 = a1 β¨ a2 β Q10β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => a1 + a1 - qHu = 0 β¨ β a β Q10, a1 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)
left inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 = a1 β¨ a2 β Q10β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => a1 + a1 - qHu = 0 β¨ β a β Q10, a1 + a - qHu = 0
| x => False
rcases h2 with h2 | h2 inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 = a1β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => a1 + a1 - qHu = 0 β¨ β a β Q10, a1 + a - qHu = 0
| x => Falseinl.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 β Q10β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => a1 + a1 - qHu = 0 β¨ β a β Q10, a1 + a - qHu = 0
| x => False
Β· inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 = a1β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => a1 + a1 - qHu = 0 β¨ β a β Q10, a1 + a - qHu = 0
| x => False subst h2 inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a2:π©hsum:-qHu + a2 + a2 = 0β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => a2 + a2 - qHu = 0 β¨ β a β Q10, a2 + a - qHu = 0
| x => False
left inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a2:π©hsum:-qHu + a2 + a2 = 0β’ a2 + a2 - qHu = 0
rw [β hsum inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a2:π©hsum:-qHu + a2 + a2 = 0β’ a2 + a2 - qHu = -qHu + a2 + a2 inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a2:π©hsum:-qHu + a2 + a2 = 0β’ a2 + a2 - qHu = -qHu + a2 + a2]inl.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a2:π©hsum:-qHu + a2 + a2 = 0β’ a2 + a2 - qHu = -qHu + a2 + a2
abel All goals completed! π
Β· inl.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 β Q10β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => a1 + a1 - qHu = 0 β¨ β a β Q10, a1 + a - qHu = 0
| x => False right inl.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 β Q10β’ β a β Q10, a1 + a - qHu = 0
use a2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 β Q10β’ a2 β Q10 β§ a1 + a2 - qHu = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 β Q10β’ a1 + a2 - qHu = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 β Q10β’ a1 + a2 - qHu = -qHu + a1 + a2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 β Q10β’ a1 + a2 - qHu = -qHu + a1 + a2]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h2:a2 β Q10β’ a1 + a2 - qHu = -qHu + a1 + a2
abel All goals completed! π
rcases h2 with h2 | h2 inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10h2:a2 = q10β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10h2:a2 β Q10β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)
Β· inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10h2:a2 = q10β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val) subst h2 inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => a2 + a2 - qHu = 0 β¨ β a β Q10, a2 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)
left inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10β’ match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => a2 + a2 - qHu = 0 β¨ β a β Q10, a2 + a - qHu = 0
| x => False; right inr.inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10β’ β a β Q10, a2 + a - qHu = 0
use a1 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10β’ a1 β Q10 β§ a2 + a1 - qHu = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10β’ a2 + a1 - qHu = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10β’ a2 + a1 - qHu = -qHu + a1 + a2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10β’ a2 + a1 - qHu = -qHu + a1 + a2]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10β’ a2 + a1 - qHu = -qHu + a1 + a2
abel All goals completed! π
Β· inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10h2:a2 β Q10β’ (match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => False) β¨
0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val) right inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10h2:a2 β Q10β’ 0 β
match some qHu with
| none => 0
| some qHu => Multiset.map (fun x => -qHu + x.1 + x.2) (Q10.val ΓΛ’ Q10.val)
simp only [Multiset.mem_map, Multiset.mem_product, Finset.mem_val, Prod.exists] inr.inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©a2:π©hsum:-qHu + a1 + a2 = 0h1:a1 β Q10h2:a2 β Q10β’ β a b, (a β Q10 β§ b β Q10) β§ -qHu + a + b = 0
use a1, a2 All goals completed! π
Β· bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Multiset.ndinsert q10 Q10.val)β’ (match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5_1, Q10 := Q10 } => β a β Q5, q10 + a + qHd = 0) β¨
0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Q10.val) match qHd with
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:0 β
match none with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Multiset.ndinsert q10 Q10.val)β’ (match { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5_1, Q10 := Q10 } => β a β Q5, q10 + a + qHd = 0) β¨
0 β
match none with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Q10.val) simp at h All goals completed! π
| some qHd => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©h:0 β
match some qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Multiset.ndinsert q10 Q10.val)β’ (match { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5_1, Q10 := Q10 } => β a β Q5, q10 + a + qHd = 0) β¨
0 β
match some qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Q10.val)
simp_all π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©h:β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b = 0β’ (β a β Q5, q10 + a + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0
obtain β¨a1, a2, β¨h1, h2β©, hsumβ© := h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5h2:a2 = q10 β¨ a2 β Q10β’ (β a β Q5, q10 + a + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0
rcases h2 with h2 | h2 inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5h2:a2 = q10β’ (β a β Q5, q10 + a + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5h2:a2 β Q10β’ (β a β Q5, q10 + a + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0
Β· inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5h2:a2 = q10β’ (β a β Q5, q10 + a + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0 subst h2 inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5β’ (β a β Q5, a2 + a + qHd = 0) β¨ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0
left inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5β’ β a β Q5, a2 + a + qHd = 0
use a1 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5β’ a1 β Q5 β§ a2 + a1 + qHd = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5β’ a2 + a1 + qHd = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5β’ a2 + a1 + qHd = qHd + a1 + a2 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5β’ a2 + a1 + qHd = qHd + a1 + a2]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5β’ a2 + a1 + qHd = qHd + a1 + a2
abel All goals completed! π
right inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 = 0h1:a1 β Q5h2:a2 β Q10β’ β a b, (a β Q5 β§ b β Q10) β§ qHd + a + b = 0
use a1, a2 All goals completed! π
D.3. AllowsTerm with inserted of Q10 charge from AllowsTermQ5
We show that if a charge spectrum x allows a potential term T
due to the addition of a charge q10, then the charge spectrum x with that charge inserted
allows that potential term T.
lemma allowsTerm_insertQ10_of_allowsTermQ10 {qHd qHu : Option π©}
{Q5 Q10: Finset π©} {q10 : π©} (T : PotentialTerm)
(h : AllowsTermQ10 β¨qHd, qHu, Q5, Q10β© q10 T) :
AllowsTerm β¨qHd, qHu, Q5, insert q10 Q10β© T := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 Tβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm T
rcases T ΞΌ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.ΞΌβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.ΞΌΞ² π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.Ξ²β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.Ξ²Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.Ξβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.ΞW1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.W1β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.W1W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.W2β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.W2W3 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.W3β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.W3W4 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.W4β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.W4K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.K1β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.K1K2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.K2β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.K2topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.topYukawaβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.topYukawabottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 PotentialTerm.bottomYukawaβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.bottomYukawa
all_goals
simp [AllowsTermQ10] at h bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5_1, Q10 := Q10 } => β a β Q5, q10 + a + qHd = 0β’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm PotentialTerm.bottomYukawa
all_goals
simp [allowsTerm_iff_zero_mem_ofPotentialTerm', ofPotentialTerm'] bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5_1, Q10 := Q10 } => β a β Q5, q10 + a + qHd = 0β’ 0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Multiset.ndinsert q10 Q10.val)
Β· Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:β a b, (a β Q5 β§ b β Q5) β§ a + b + q10 = 0β’ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b = 0 obtain β¨a1, a2, β¨h1, h2β©, hsumβ© := h Ξ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©hsum:a1 + a2 + q10 = 0h1:a1 β Q5h2:a2 β Q5β’ β a a_1 b, (a β Q5 β§ a_1 β Q5 β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b = 0
use a1, a2, q10 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©hsum:a1 + a2 + q10 = 0h1:a1 β Q5h2:a2 β Q5β’ (a1 β Q5 β§ a2 β Q5 β§ (q10 = q10 β¨ q10 β Q10)) β§ a1 + a2 + q10 = 0
simp_all All goals completed! π
Β· W1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + b + q10 = 0β’ β a a_1 a_2 b,
(a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (a_2 = q10 β¨ a_2 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + a_2 + b = 0 obtain β¨a1, a2, a3, β¨h1, h2, h3β©, hsumβ© := h W1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 + q10 = 0h1:a1 β Q5h2:a2 = q10 β¨ a2 β Q10h3:a3 = q10 β¨ a3 β Q10β’ β a a_1 a_2 b,
(a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (a_2 = q10 β¨ a_2 β Q10) β§ (b = q10 β¨ b β Q10)) β§ a + a_1 + a_2 + b = 0
use a1, a2, a3, q10 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©a3:π©hsum:a1 + a2 + a3 + q10 = 0h1:a1 β Q5h2:a2 = q10 β¨ a2 β Q10h3:a3 = q10 β¨ a3 β Q10β’ (a1 β Q5 β§ (a2 = q10 β¨ a2 β Q10) β§ (a3 = q10 β¨ a3 β Q10) β§ (q10 = q10 β¨ q10 β Q10)) β§ a1 + a2 + a3 + q10 = 0
simp_all All goals completed! π
Β· W2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } =>
β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0
| x => Falseβ’ 0 β
match qHd with
| none => 0
| some qHd =>
Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2)
(Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val) match qHd with
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:match { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } =>
β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0
| x => Falseβ’ 0 β
match none with
| none => 0
| some qHd =>
Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2)
(Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val) simp at h All goals completed! π
| some qHd => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©h:match { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10_1 } =>
β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0
| x => Falseβ’ 0 β
match some qHd with
| none => 0
| some qHd =>
Multiset.map (fun x => qHd + x.1 + x.2.1 + x.2.2)
(Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val)
simp at h β’ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©h:β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b + q10 = 0β’ β a a_1 b, ((a = q10 β¨ a β Q10) β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + a_1 + b = 0
obtain β¨a1, a2, β¨h1, h2β©, hsumβ© := h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 + q10 = 0h1:a1 = q10 β¨ a1 β Q10h2:a2 = q10 β¨ a2 β Q10β’ β a a_1 b, ((a = q10 β¨ a β Q10) β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ qHd + a + a_1 + b = 0
use a1, a2, q10 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©a2:π©hsum:qHd + a1 + a2 + q10 = 0h1:a1 = q10 β¨ a1 β Q10h2:a2 = q10 β¨ a2 β Q10β’ ((a1 = q10 β¨ a1 β Q10) β§ (a2 = q10 β¨ a2 β Q10) β§ (q10 = q10 β¨ q10 β Q10)) β§ qHd + a1 + a2 + q10 = 0
simp_all All goals completed! π
Β· K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ -a + b + q10 = 0β’ β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ -a + a_1 + b = 0 obtain β¨a1, a2, β¨h1, h2β©, hsumβ© := h K1 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©hsum:-a1 + a2 + q10 = 0h1:a1 β Q5h2:a2 = q10 β¨ a2 β Q10β’ β a a_1 b, (a β Q5 β§ (a_1 = q10 β¨ a_1 β Q10) β§ (b = q10 β¨ b β Q10)) β§ -a + a_1 + b = 0
use a1, a2, q10 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©a1:π©a2:π©hsum:-a1 + a2 + q10 = 0h1:a1 β Q5h2:a2 = q10 β¨ a2 β Q10β’ (a1 β Q5 β§ (a2 = q10 β¨ a2 β Q10) β§ (q10 = q10 β¨ q10 β Q10)) β§ -a1 + a2 + q10 = 0
simp_all All goals completed! π
Β· K2 π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => qHd + qHu + q10 = 0
| x => Falseβ’ 0 β
match qHd, qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) (Multiset.ndinsert q10 Q10.val) match qHd, qHu with
| none, _ => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©xβ:Option π©h:match { qHd := none, qHu := xβ, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => qHd + qHu + q10 = 0
| x => Falseβ’ 0 β
match none, xβ with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) (Multiset.ndinsert q10 Q10.val) simp at h All goals completed! π
| some x, none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©x:π©h:match { qHd := some x, qHu := none, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => qHd + qHu + q10 = 0
| x => Falseβ’ 0 β
match some x, none with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) (Multiset.ndinsert q10 Q10.val) simp at h All goals completed! π
| some qHd, some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©qHu:π©h:match { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := some qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } => qHd + qHu + q10 = 0
| x => Falseβ’ 0 β
match some qHd, some qHu with
| none, x => 0
| x, none => 0
| some qHd, some qHu => Multiset.map (fun x => qHd + qHu + x) (Multiset.ndinsert q10 Q10.val) simp_all All goals completed! π
Β· topYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => Falseβ’ 0 β
match qHu with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu + x.1 + x.2) (Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val) match qHu with
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:match { qHd := qHd, qHu := none, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => Falseβ’ 0 β
match none with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu + x.1 + x.2) (Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val) simp at h All goals completed! π
| some qHu => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:match { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := qHd, qHu := some qHu, Q5 := Q5, Q10 := Q10_1 } => q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0
| x => Falseβ’ 0 β
match some qHu with
| none => 0
| some qHu =>
Multiset.map (fun x => -qHu + x.1 + x.2) (Multiset.ndinsert q10 Q10.val ΓΛ’ Multiset.ndinsert q10 Q10.val)
simp at h β’ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:q10 + q10 - qHu = 0 β¨ β a β Q10, q10 + a - qHu = 0β’ β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ -qHu + a + b = 0
rcases h with h | h inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:q10 + q10 - qHu = 0β’ β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ -qHu + a + b = 0inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:β a β Q10, q10 + a - qHu = 0β’ β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ -qHu + a + b = 0
Β· inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:q10 + q10 - qHu = 0β’ β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ -qHu + a + b = 0 use q10, q10 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:q10 + q10 - qHu = 0β’ ((q10 = q10 β¨ q10 β Q10) β§ (q10 = q10 β¨ q10 β Q10)) β§ -qHu + q10 + q10 = 0
rw [β h h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:q10 + q10 - qHu = 0β’ ((q10 = q10 β¨ q10 β Q10) β§ (q10 = q10 β¨ q10 β Q10)) β§ -qHu + q10 + q10 = q10 + q10 - qHu h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:q10 + q10 - qHu = 0β’ ((q10 = q10 β¨ q10 β Q10) β§ (q10 = q10 β¨ q10 β Q10)) β§ -qHu + q10 + q10 = q10 + q10 - qHu] h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:q10 + q10 - qHu = 0β’ ((q10 = q10 β¨ q10 β Q10) β§ (q10 = q10 β¨ q10 β Q10)) β§ -qHu + q10 + q10 = q10 + q10 - qHu
simp only [true_or, and_self, true_and] h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:q10 + q10 - qHu = 0β’ -qHu + q10 + q10 = q10 + q10 - qHu
abel All goals completed! π
Β· inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©h:β a β Q10, q10 + a - qHu = 0β’ β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ -qHu + a + b = 0 obtain β¨a1, h1, hsumβ© := h inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©h1:a1 β Q10hsum:q10 + a1 - qHu = 0β’ β a b, ((a = q10 β¨ a β Q10) β§ (b = q10 β¨ b β Q10)) β§ -qHu + a + b = 0
use a1, q10 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©h1:a1 β Q10hsum:q10 + a1 - qHu = 0β’ ((a1 = q10 β¨ a1 β Q10) β§ (q10 = q10 β¨ q10 β Q10)) β§ -qHu + a1 + q10 = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©h1:a1 β Q10hsum:q10 + a1 - qHu = 0β’ -qHu + a1 + q10 = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©h1:a1 β Q10hsum:q10 + a1 - qHu = 0β’ -qHu + a1 + q10 = q10 + a1 - qHu h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©h1:a1 β Q10hsum:q10 + a1 - qHu = 0β’ -qHu + a1 + q10 = q10 + a1 - qHu]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHuβ:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHu:π©a1:π©h1:a1 β Q10hsum:q10 + a1 - qHu = 0β’ -qHu + a1 + q10 = q10 + a1 - qHu
abel All goals completed! π
Β· bottomYukawa π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:match { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5_1, Q10 := Q10 } => β a β Q5, q10 + a + qHd = 0β’ 0 β
match qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Multiset.ndinsert q10 Q10.val) match qHd with
| none => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©h:match { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5_1, Q10 := Q10 } => β a β Q5, q10 + a + qHd = 0β’ 0 β
match none with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Multiset.ndinsert q10 Q10.val) simp at h All goals completed! π
| some qHd => π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©h:match { qHd := some qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } with
| { qHd := none, qHu := qHu, Q5 := Q5, Q10 := Q10 } => False
| { qHd := some qHd, qHu := qHu, Q5 := Q5_1, Q10 := Q10 } => β a β Q5, q10 + a + qHd = 0β’ 0 β
match some qHd with
| none => 0
| some qHd => Multiset.map (fun x => qHd + x.1 + x.2) (Q5.val ΓΛ’ Multiset.ndinsert q10 Q10.val)
simp at h β’ π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©h:β a β Q5, q10 + a + qHd = 0β’ β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b = 0
obtain β¨a1, h1, hsumβ© := h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©h1:a1 β Q5hsum:q10 + a1 + qHd = 0β’ β a b, (a β Q5 β§ (b = q10 β¨ b β Q10)) β§ qHd + a + b = 0
use a1, q10 h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©h1:a1 β Q5hsum:q10 + a1 + qHd = 0β’ (a1 β Q5 β§ (q10 = q10 β¨ q10 β Q10)) β§ qHd + a1 + q10 = 0
simp_all h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©h1:a1 β Q5hsum:q10 + a1 + qHd = 0β’ qHd + a1 + q10 = 0
rw [β hsum h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©h1:a1 β Q5hsum:q10 + a1 + qHd = 0β’ qHd + a1 + q10 = q10 + a1 + qHd h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©h1:a1 β Q5hsum:q10 + a1 + qHd = 0β’ qHd + a1 + q10 = q10 + a1 + qHd]h π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHdβ:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©qHd:π©a1:π©h1:a1 β Q5hsum:q10 + a1 + qHd = 0β’ qHd + a1 + q10 = q10 + a1 + qHd
abel All goals completed! π
D.4. AllowsTerm with inserted of Q10 charge iff AllowsTermQ10 or AllowsTerm
We show that the charge spectrum x with that charge inserted
allows that potential term T if and only if either the charge spectrum x
allows that potential term T due to the addition of that charge,
or the charge spectrum x already allows that potential term T.
lemma allowsTerm_insertQ10_iff_allowsTermQ10 {qHd qHu : Option π©}
{Q5 Q10: Finset π©} {q10 : π©} (T : PotentialTerm) :
AllowsTerm β¨qHd, qHu, Q5, insert q10 Q10β© T β
AllowsTermQ10 β¨qHd, qHu, Q5, Q10β© q10 T β¨
AllowsTerm β¨qHd, qHu, Q5, Q10β© T := by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©T:PotentialTermβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm T β
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 T β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm T
refine β¨allowsTermQ10_or_allowsTerm_of_allowsTerm_insertQ10 T, ?_β© π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©T:PotentialTermβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 T β¨
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm T β
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm T
rintro (h | h) inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 Tβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm Tinr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm Tβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm T
Β· inl π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTermQ10 q10 Tβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm T exact allowsTerm_insertQ10_of_allowsTermQ10 T h All goals completed! π
Β· inr π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm Tβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 }.AllowsTerm T exact allowsTerm_mono (by π©:TypeinstβΒΉ:AddCommGroup π©instβ:DecidableEq π©qHd:Option π©qHu:Option π©Q5:Finset π©Q10:Finset π©q10:π©T:PotentialTermh:{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.AllowsTerm Tβ’ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } β { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := insert q10 Q10 } simp [subset_def] All goals completed! π) h