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.MinimallyAllowsTerm.Basic public import Physlib.Particles.SuperSymmetry.SU5.ChargeSpectrum.PhenoConstrained

The set of charges which minimally allows a potential term

i. Overview

In this module given finite sets for the 5-bar and 10d charges S5 and S10 we find the sets of charge spectra which minimally allowed a potential term T. The set we will actually define will be a multiset, for computational efficiency (using multisets saves Lean having to manually check for duplicates, which can be very costly)

To do this we define some auxiliary results which create multisets of a given cardinality from a finset.

ii. Key results

    minimallyAllowsTermsOfFinset S5 S10 T : the multiset of all charge spectra with charges in S5 and S10 which minimally allow the potential term T.

    minimallyAllowsTerm_iff_mem_minimallyAllowsTermOfFinset : the statement that minimallyAllowsTermsOfFinset S5 S10 T contains exactly the charge spectra with charges in S5 and S10 which minimally allow the potential term T.

iii. Table of contents

    A. Construction of set of charges which minimally allow a potential term

      A.1. Preliminary: Multisets from finite sets

        A.1.1. Multisets of cardinality 1

        A.1.2. Multisets of cardinality 2

        A.1.3. Multisets of cardinality 3

      A.2. minimallyAllowsTermsOfFinset: the set of charges which minimally allow a potential term

      A.3. Showing minimallyAllowsTermsOfFinset has charges in given sets

    B. Proving the minimallyAllowsTermsOfFinset is set of charges which minimally allow a term

      B.1. An element of minimallyAllowsTermsOfFinset is of the form allowsTermForm

      B.2. Every element of minimallyAllowsTermsOfFinset allows the term

      B.3. Every element of minimallyAllowsTermsOfFinset minimally allows the term

      B.4. Every charge spectra which minimally allows term is in minimallyAllowsTermsOfFinset

      B.5. In minimallyAllowsTermsOfFinset iff minimally allowing term

    C. Other properties of minimallyAllowsTermsOfFinset

      C.1. Monotonicity of minimallyAllowsTermsOfFinset in allowed sets of charges

      C.2. Not phenomenologically constrained if in minimallyAllowsTermsOfFinset for topYukawa

iv. References

There are no known references for the material in this module.

@[expose] public section

A. Construction of set of charges which minimally allow a potential term

We start with the construction of the set of charges which minimally allow a potential term, and then later prover properties about this set. The set we will define is minimallyAllowsTermsOfFinset, the construction of which relies on some preliminary results.

A.1. Preliminary: Multisets from finite sets

We construct the multisets of cardinality 1, 2 and 3 which contain elements of finite set s.

A.1.1. Multisets of cardinality 1

The multisets of cardinality 1 containing elements from a finite set s.

def toMultisetsOne (s : Finset 𝓩) : Multiset (Multiset 𝓩) := let X1 := (s.powersetCard 1).val.map fun X => X.val X1
@[simp] lemma mem_toMultisetsOne_iff [DecidableEq 𝓩] {s : Finset 𝓩} (X : Multiset 𝓩) : X ∈ toMultisetsOne s ↔ X.toFinset βŠ† s ∧ X.card = 1 := 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset π“©βŠ’ X ∈ toMultisetsOne s ↔ X.toFinset βŠ† s ∧ X.card = 1 All goals completed! πŸ™
A.1.2. Multisets of cardinality 2

The multisets of cardinality 2 containing elements from a finite set s.

def toMultisetsTwo (s : Finset 𝓩) : Multiset (Multiset 𝓩) := let X1 := (s.powersetCard 1).val.map (fun X => X.val.bind (fun x => Multiset.replicate 2 x)) let X2 := (s.powersetCard 2).val.map fun X => X.val X1 + X2
@[simp] lemma mem_toMultisetsTwo_iff [DecidableEq 𝓩] {s : Finset 𝓩} (X : Multiset 𝓩) : X ∈ toMultisetsTwo s ↔ X.toFinset βŠ† s ∧ X.card = 2 := 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset π“©βŠ’ X ∈ toMultisetsTwo s ↔ X.toFinset βŠ† s ∧ X.card = 2 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset π“©βŠ’ (βˆƒ a, (a βŠ† s ∧ a.card = 1) ∧ a.val + a.val.bind singleton = X) ∨ X ≀ s.val ∧ X.card = 2 ↔ X.toFinset βŠ† s ∧ X.card = 2 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset π“©βŠ’ (βˆƒ a, (a βŠ† s ∧ a.card = 1) ∧ a.val + a.val.bind singleton = X) ∨ X ≀ s.val ∧ X.card = 2 β†’ X.toFinset βŠ† s ∧ X.card = 2𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset π“©βŠ’ X.toFinset βŠ† s ∧ X.card = 2 β†’ (βˆƒ a, (a βŠ† s ∧ a.card = 1) ∧ a.val + a.val.bind singleton = X) ∨ X ≀ s.val ∧ X.card = 2 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset π“©βŠ’ (βˆƒ a, (a βŠ† s ∧ a.card = 1) ∧ a.val + a.val.bind singleton = X) ∨ X ≀ s.val ∧ X.card = 2 β†’ X.toFinset βŠ† s ∧ X.card = 2 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset 𝓩h:(βˆƒ a, (a βŠ† s ∧ a.card = 1) ∧ a.val + a.val.bind singleton = X) ∨ X ≀ s.val ∧ X.card = 2⊒ X.toFinset βŠ† s ∧ X.card = 2 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset 𝓩a:Finset 𝓩hbind:a.val + a.val.bind singleton = Xhasub:a βŠ† shacard:a.card = 1⊒ X.toFinset βŠ† s ∧ X.card = 2𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset 𝓩h1:X ≀ s.valhcard:X.card = 2⊒ X.toFinset βŠ† s ∧ X.card = 2 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset 𝓩a:Finset 𝓩hbind:a.val + a.val.bind singleton = Xhasub:a βŠ† shacard:a.card = 1⊒ X.toFinset βŠ† s ∧ X.card = 2 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset 𝓩a:𝓩hbind:{a}.val + {a}.val.bind singleton = Xhasub:{a} βŠ† shacard:{a}.card = 1⊒ X.toFinset βŠ† s ∧ X.card = 2 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩hasub:{a} βŠ† shacard:{a}.card = 1⊒ ({a}.val + {a}.val.bind singleton).toFinset βŠ† s ∧ ({a}.val + {a}.val.bind singleton).card = 2 All goals completed! πŸ™ 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset 𝓩h1:X ≀ s.valhcard:X.card = 2⊒ X.toFinset βŠ† s ∧ X.card = 2 All goals completed! πŸ™ 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset π“©βŠ’ X.toFinset βŠ† s ∧ X.card = 2 β†’ (βˆƒ a, (a βŠ† s ∧ a.card = 1) ∧ a.val + a.val.bind singleton = X) ∨ X ≀ s.val ∧ X.card = 2 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset 𝓩hsub:X.toFinset βŠ† shcard:X.card = 2⊒ (βˆƒ a, (a βŠ† s ∧ a.card = 1) ∧ a.val + a.val.bind singleton = X) ∨ X ≀ s.val ∧ X.card = 2 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩X:Multiset 𝓩hsub:X.toFinset βŠ† shcard:X.card = 2⊒ (βˆƒ a, (a βŠ† s ∧ a.card = 1) ∧ a.val + a.val.bind singleton = X) ∨ X ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hsub:{a, b}.toFinset βŠ† shcard:{a, b}.card = 2⊒ (βˆƒ a_1, (a_1 βŠ† s ∧ a_1.card = 1) ∧ a_1.val + a_1.val.bind singleton = {a, b}) ∨ {a, b} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hsub:{a, b}.toFinset βŠ† shcard:{a, b}.card = 2hab:a = b⊒ (βˆƒ a_1, (a_1 βŠ† s ∧ a_1.card = 1) ∧ a_1.val + a_1.val.bind singleton = {a, b}) ∨ {a, b} ≀ s.val𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hsub:{a, b}.toFinset βŠ† shcard:{a, b}.card = 2hab:Β¬a = b⊒ (βˆƒ a_1, (a_1 βŠ† s ∧ a_1.card = 1) ∧ a_1.val + a_1.val.bind singleton = {a, b}) ∨ {a, b} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hsub:{a, b}.toFinset βŠ† shcard:{a, b}.card = 2hab:a = b⊒ (βˆƒ a_1, (a_1 βŠ† s ∧ a_1.card = 1) ∧ a_1.val + a_1.val.bind singleton = {a, b}) ∨ {a, b} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩hsub:{a, a}.toFinset βŠ† shcard:{a, a}.card = 2⊒ (βˆƒ a_1, (a_1 βŠ† s ∧ a_1.card = 1) ∧ a_1.val + a_1.val.bind singleton = {a, a}) ∨ {a, a} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩hsub:{a, a}.toFinset βŠ† shcard:{a, a}.card = 2⊒ βˆƒ a_1, (a_1 βŠ† s ∧ a_1.card = 1) ∧ a_1.val + a_1.val.bind singleton = {a, a} 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩hsub:{a, a}.toFinset βŠ† shcard:{a, a}.card = 2⊒ ({a} βŠ† s ∧ {a}.card = 1) ∧ {a}.val + {a}.val.bind singleton = {a, a} All goals completed! πŸ™ 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hsub:{a, b}.toFinset βŠ† shcard:{a, b}.card = 2hab:Β¬a = b⊒ (βˆƒ a_1, (a_1 βŠ† s ∧ a_1.card = 1) ∧ a_1.val + a_1.val.bind singleton = {a, b}) ∨ {a, b} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hsub:{a, b}.toFinset βŠ† shcard:{a, b}.card = 2hab:Β¬a = b⊒ {a, b} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hsub:{a, b}.toFinset βŠ† shcard:{a, b}.card = 2hab:Β¬a = b⊒ {a, b}.Nodup𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hsub:{a, b}.toFinset βŠ† shcard:{a, b}.card = 2hab:Β¬a = b⊒ {a, b} βŠ† s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hsub:{a, b}.toFinset βŠ† shcard:{a, b}.card = 2hab:Β¬a = b⊒ {a, b}.Nodup All goals completed! πŸ™ 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hsub:{a, b}.toFinset βŠ† shcard:{a, b}.card = 2hab:Β¬a = b⊒ {a, b} βŠ† s.val All goals completed! πŸ™
A.1.3. Multisets of cardinality 3

The multisets of cardinality 3 containing elements from a finite set s.

def toMultisetsThree [DecidableEq 𝓩] (s : Finset 𝓩) : Multiset (Multiset 𝓩) := let X1 := (s.powersetCard 1).val.map (fun X => X.val.bind (fun x => Multiset.replicate 3 x)) let X2 := s.val.bind (fun x => (s \ {x}).val.map (fun y => {x} + Multiset.replicate 2 y)) let X3 := (s.powersetCard 3).val.map fun X => X.val X1 + X2 + X3
𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = b⊒ (βˆƒ a_1, (a_1 βŠ† s ∧ a_1.card = 1) ∧ a_1.val + (a_1.val + a_1.val.bind singleton) = {a, b, c}) ∨ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, c}) ∨ {a, b, c} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = b⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, c}) ∨ {a, b, c} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:a = c⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, c}) ∨ {a, b, c} ≀ s.val𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = c⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, c}) ∨ {a, b, c} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:a = c⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, c}) ∨ {a, b, c} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hab:Β¬a = bhsub:{a, b, a}.toFinset βŠ† shcard:{a, b, a}.card = 3⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, a}) ∨ {a, b, a} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hab:Β¬a = bhcard:{a, b, a}.card = 3hsub:b ∈ s ∧ a ∈ s⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, a}) ∨ {a, b, a} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hab:Β¬a = bhcard:{a, b, a}.card = 3hsub:b ∈ s ∧ a ∈ s⊒ βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, a} All goals completed! πŸ™ 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = c⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, c}) ∨ {a, b, c} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = chbc:b = c⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, c}) ∨ {a, b, c} ≀ s.val𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = chbc:Β¬b = c⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, c}) ∨ {a, b, c} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = chbc:b = c⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, c}) ∨ {a, b, c} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hab:Β¬a = bhsub:{a, b, b}.toFinset βŠ† shcard:{a, b, b}.card = 3hac:Β¬a = b⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, b}) ∨ {a, b, b} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hab:Β¬a = bhsub:{a, b, b}.toFinset βŠ† shcard:{a, b, b}.card = 3hac:Β¬a = b⊒ βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, b} 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hab:Β¬a = bhcard:{a, b, b}.card = 3hac:Β¬a = bhsub:a ∈ s ∧ b ∈ s⊒ βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, b} 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩hab:Β¬a = bhcard:{a, b, b}.card = 3hac:Β¬a = bhsub:a ∈ s ∧ b ∈ s⊒ b ::β‚˜ a ::β‚˜ {b} = {a, b, b} All goals completed! πŸ™ 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = chbc:Β¬b = c⊒ (βˆƒ a_1 ∈ s, βˆƒ a_2 ∈ s.val.erase a_1, a_2 ::β‚˜ a_1 ::β‚˜ {a_2} = {a, b, c}) ∨ {a, b, c} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = chbc:Β¬b = c⊒ {a, b, c} ≀ s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = chbc:Β¬b = c⊒ {a, b, c}.Nodup𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = chbc:Β¬b = c⊒ {a, b, c} βŠ† s.val 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = chbc:Β¬b = c⊒ {a, b, c}.Nodup All goals completed! πŸ™ 𝓩:Typeinst✝:DecidableEq 𝓩s:Finset 𝓩a:𝓩b:𝓩c:𝓩hsub:{a, b, c}.toFinset βŠ† shcard:{a, b, c}.card = 3hab:Β¬a = bhac:Β¬a = chbc:Β¬b = c⊒ {a, b, c} βŠ† s.val All goals completed! πŸ™

A.2. minimallyAllowsTermsOfFinset: the set of charges which minimally allow a potential term

Given the construction of the multisets above we can now define the set of charges which minimally allow a potential term.

We will prove it has the desired properties later in this module.

The multiset of all charges within ofFinset S5 S10 which minimally allow the potential term T.

def minimallyAllowsTermsOfFinset (S5 S10 : Finset 𝓩) : (T : PotentialTerm) β†’ Multiset (ChargeSpectrum 𝓩) | ΞΌ => let SqHd := S5.val let SqHu := S5.val let prod := SqHd Γ—Λ’ (SqHu) let Filt := prod.filter (fun x => - x.1 + x.2 = 0) (Filt.map (fun x => ⟨x.1, x.2, βˆ…, βˆ…βŸ©)) | K2 => let SqHd := S5.val let SqHu := S5.val let Q10 := toMultisetsOne S10 let prod := SqHd Γ—Λ’ (SqHu Γ—Λ’ Q10) let Filt := prod.filter (fun x => x.1 + x.2.1 + x.2.2.sum = 0) (Filt.map (fun x => ⟨x.1, x.2.1, βˆ…, x.2.2.toFinset⟩)) | K1 => let Q5 := toMultisetsOne S5 let Q10 := toMultisetsTwo S10 let Prod := Q5 Γ—Λ’ Q10 let Filt := Prod.filter (fun x => - x.1.sum + x.2.sum = 0) (Filt.map (fun x => ⟨none, none, x.1.toFinset, x.2.toFinset⟩)) | W4 => let SqHd := S5.val let SqHu := S5.val let Q5 := toMultisetsOne S5 let prod := SqHd Γ—Λ’ (SqHu Γ—Λ’ Q5) let Filt := prod.filter (fun x => x.1 - 2 β€’ x.2.1 + x.2.2.sum = 0) (Filt.map (fun x => ⟨x.1, x.2.1, x.2.2.toFinset, βˆ…βŸ©)) | W3 => let SqHu := S5.val let Q5 := toMultisetsTwo S5 let prod := SqHu Γ—Λ’ Q5 let Filt := prod.filter (fun x => - 2 β€’ x.1 + x.2.sum = 0) (Filt.map (fun x => ⟨none, x.1, x.2.toFinset, βˆ…βŸ©)) | W2 => let SqHd := S5.val let Q10 := toMultisetsThree S10 let prod := SqHd Γ—Λ’ Q10 let Filt := prod.filter (fun x => x.1 + x.2.sum = 0) (Filt.map (fun x => ⟨x.1, none, βˆ…, x.2.toFinset⟩)).filter fun x => MinimallyAllowsTerm x W2 | W1 => let Q5 := toMultisetsOne S5 let Q10 := toMultisetsThree S10 let Prod := Q5 Γ—Λ’ Q10 let Filt := Prod.filter (fun x => x.1.sum + x.2.sum = 0) (Filt.map (fun x => ⟨none, none, x.1.toFinset, x.2.toFinset⟩)).filter fun x => MinimallyAllowsTerm x W1 | Ξ› => let Q5 := toMultisetsTwo S5 let Q10 := toMultisetsOne S10 let Prod := Q5 Γ—Λ’ Q10 let Filt := Prod.filter (fun x => x.1.sum + x.2.sum = 0) (Filt.map (fun x => ⟨none, none, x.1.toFinset, x.2.toFinset⟩)) | Ξ² => let SqHu := S5.val let Q5 := toMultisetsOne S5 let prod := SqHu Γ—Λ’ Q5 let Filt := prod.filter (fun x => - x.1 + x.2.sum = 0) (Filt.map (fun x => ⟨none, x.1, x.2.toFinset, βˆ…βŸ©)) | topYukawa => let SqHu := S5.val let Q10 := toMultisetsTwo S10 let prod := SqHu Γ—Λ’ Q10 let Filt := prod.filter (fun x => - x.1 + x.2.sum = 0) (Filt.map (fun x => ⟨none, x.1, βˆ…, x.2.toFinset⟩)) | bottomYukawa => let SqHd := S5.val let Q5 := toMultisetsOne S5 let Q10 := toMultisetsOne S10 let prod := SqHd Γ—Λ’ (Q5 Γ—Λ’ Q10) let Filt := prod.filter (fun x => x.1 + x.2.1.sum + x.2.2.sum = 0) (Filt.map (fun x => ⟨x.1, none,x.2.1.toFinset, x.2.2.toFinset⟩))

A.3. Showing minimallyAllowsTermsOfFinset has charges in given sets

We show that every element of minimallyAllowsTermsOfFinset S5 S10 T is in ofFinset S5 S10. That is every element of minimallyAllowsTermsOfFinset S5 S10 T has charges in the sets S5 and S10.

𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩h:(a ∈ S5 ∧ b ∈ S5) ∧ -a + b = 0⊒ { qHd := some a, qHu := some b, Q5 := βˆ…, Q10 := βˆ… }.qHd.toFinset βŠ† S5 ∧ { qHd := some a, qHu := some b, Q5 := βˆ…, Q10 := βˆ… }.qHu.toFinset βŠ† S5 ∧ { qHd := some a, qHu := some b, Q5 := βˆ…, Q10 := βˆ… }.Q5 βŠ† S5 ∧ { qHd := some a, qHu := some b, Q5 := βˆ…, Q10 := βˆ… }.Q10 βŠ† S10 All goals completed! πŸ™lemma minimallyAllowsTermOfFinset_subset_ofFinset {S5 S10 : Finset 𝓩} {T : PotentialTerm} : minimallyAllowsTermsOfFinset S5 S10 T βŠ† (ofFinset S5 S10).val := fun _ hx => Finset.mem_val.mpr (mem_ofFinset_of_mem_minimallyAllowsTermOfFinset hx)

B. Proving the minimallyAllowsTermsOfFinset is set of charges which minimally allow a term

We now prove that minimallyAllowsTermsOfFinset has the property that all charges spectra with charges in the sets S5 and S10 which minimally allow the potential term T are in minimallyAllowsTermsOfFinset S5 S10 T, and vice versa.

B.1. An element of minimallyAllowsTermsOfFinset is of the form allowsTermForm

We show that every element of minimallyAllowsTermsOfFinset S5 S10 T is of the form allowsTermForm a b c T for some a, b and c.

lemma eq_allowsTermForm_of_mem_minimallyAllowsTermOfFinset {S5 S10 : Finset 𝓩} {T : PotentialTerm} {x : ChargeSpectrum 𝓩} (hx : x ∈ minimallyAllowsTermsOfFinset S5 S10 T) : βˆƒ a b c, x = allowsTermForm a b c T := 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩T:PotentialTermx:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 T⊒ βˆƒ a b c, x = allowsTermForm a b c T 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 μ⊒ βˆƒ a b c, x = allowsTermForm a b c μ𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 β⊒ βˆƒ a b c, x = allowsTermForm a b c β𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 Ξ›βŠ’ βˆƒ a b c, x = allowsTermForm a b c Λ𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 W1⊒ βˆƒ a b c, x = allowsTermForm a b c W1𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 W2⊒ βˆƒ a b c, x = allowsTermForm a b c W2𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 W3⊒ βˆƒ a b c, x = allowsTermForm a b c W3𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 W4⊒ βˆƒ a b c, x = allowsTermForm a b c W4𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 K1⊒ βˆƒ a b c, x = allowsTermForm a b c K1𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 K2⊒ βˆƒ a b c, x = allowsTermForm a b c K2𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 topYukawa⊒ βˆƒ a b c, x = allowsTermForm a b c topYukawa𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 bottomYukawa⊒ βˆƒ a b c, x = allowsTermForm a b c bottomYukawa all_goals 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a a_1 b, ((a ∈ S5 ∧ (a_1.toFinset βŠ† S5 ∧ a_1.card = 1) ∧ b.toFinset βŠ† S10 ∧ b.card = 1) ∧ a + a_1.sum + b.sum = 0) ∧ { qHd := some a, qHu := none, Q5 := a_1.toFinset, Q10 := b.toFinset } = x⊒ βˆƒ a b c, x = allowsTermForm a b c bottomYukawa case ΞΌ 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a b, ((a ∈ S5 ∧ b ∈ S5) ∧ -a + b = 0) ∧ { qHd := some a, qHu := some b, Q5 := βˆ…, Q10 := βˆ… } = x⊒ βˆƒ a b c, x = allowsTermForm a b c ΞΌ 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩hsum:-a + b = 0ha:a ∈ S5hb:b ∈ S5⊒ βˆƒ a_1 b_1 c, { qHd := some a, qHu := some b, Q5 := βˆ…, Q10 := βˆ… } = allowsTermForm a_1 b_1 c ΞΌ 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩hsum:-a + b = 0ha:a ∈ S5hb:b ∈ S5⊒ b = a All goals completed! πŸ™ case Ξ² 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a b, ((a ∈ S5 ∧ b.toFinset βŠ† S5 ∧ b.card = 1) ∧ -a + b.sum = 0) ∧ { qHd := none, qHu := some a, Q5 := b.toFinset, Q10 := βˆ… } = x⊒ βˆƒ a b c, x = allowsTermForm a b c Ξ² 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:Multiset 𝓩hsum:-a + b.sum = 0ha:a ∈ S5hb:b.toFinset βŠ† S5hbcard:b.card = 1⊒ βˆƒ a_1 b_1 c, { qHd := none, qHu := some a, Q5 := b.toFinset, Q10 := βˆ… } = allowsTermForm a_1 b_1 c Ξ² 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩hsum:-a + {c}.sum = 0hb:{c}.toFinset βŠ† S5hbcard:{c}.card = 1⊒ βˆƒ a_1 b c_1, { qHd := none, qHu := some a, Q5 := {c}.toFinset, Q10 := βˆ… } = allowsTermForm a_1 b c_1 Ξ² 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩hsum:-a + c = 0hb:c ∈ S5⊒ c = a All goals completed! πŸ™ case K1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a b, (((a.toFinset βŠ† S5 ∧ a.card = 1) ∧ b.toFinset βŠ† S10 ∧ b.card = 2) ∧ -a.sum + b.sum = 0) ∧ { qHd := none, qHu := none, Q5 := a.toFinset, Q10 := b.toFinset } = x⊒ βˆƒ a b c, x = allowsTermForm a b c K1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:Multiset 𝓩b:Multiset 𝓩hsum:-a.sum + b.sum = 0ha:a.toFinset βŠ† S5hacard:a.card = 1hb:b.toFinset βŠ† S10hbcard:b.card = 2⊒ βˆƒ a_1 b_1 c, { qHd := none, qHu := none, Q5 := a.toFinset, Q10 := b.toFinset } = allowsTermForm a_1 b_1 c K1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩b:Multiset 𝓩hb:b.toFinset βŠ† S10hbcard:b.card = 2c:𝓩hsum:-{c}.sum + b.sum = 0ha:{c}.toFinset βŠ† S5hacard:{c}.card = 1⊒ βˆƒ a b_1 c_1, { qHd := none, qHu := none, Q5 := {c}.toFinset, Q10 := b.toFinset } = allowsTermForm a b_1 c_1 K1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩c:𝓩ha:{c}.toFinset βŠ† S5hacard:{c}.card = 1d:𝓩e:𝓩hb:{d, e}.toFinset βŠ† S10hbcard:{d, e}.card = 2hsum:-{c}.sum + {d, e}.sum = 0⊒ βˆƒ a b c_1, { qHd := none, qHu := none, Q5 := {c}.toFinset, Q10 := {d, e}.toFinset } = allowsTermForm a b c_1 K1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩c:𝓩d:𝓩e:𝓩ha:c ∈ S5hb:{d, e} βŠ† S10hsum:-c + (d + e) = 0⊒ βˆƒ a, c = -a ∧ βˆƒ x, {d, e} = {x, -a - x} 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩c:𝓩d:𝓩e:𝓩ha:c ∈ S5hb:{d, e} βŠ† S10hsum:-c + (d + e) = 0⊒ c = - -c𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩c:𝓩d:𝓩e:𝓩ha:c ∈ S5hb:{d, e} βŠ† S10hsum:-c + (d + e) = 0⊒ {d, e} = {d, - -c - d} 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩c:𝓩d:𝓩e:𝓩ha:c ∈ S5hb:{d, e} βŠ† S10hsum:-c + (d + e) = 0⊒ c = - -c𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩c:𝓩d:𝓩e:𝓩ha:c ∈ S5hb:{d, e} βŠ† S10hsum:-c + (d + e) = 0⊒ {d, e} = {d, - -c - d} All goals completed! πŸ™ case Ξ› 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a b, (((a.toFinset βŠ† S5 ∧ a.card = 2) ∧ b.toFinset βŠ† S10 ∧ b.card = 1) ∧ a.sum + b.sum = 0) ∧ { qHd := none, qHu := none, Q5 := a.toFinset, Q10 := b.toFinset } = x⊒ βˆƒ a b c, x = allowsTermForm a b c Ξ› 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:Multiset 𝓩b:Multiset 𝓩hsum:a.sum + b.sum = 0ha:a.toFinset βŠ† S5hacard:a.card = 2hb:b.toFinset βŠ† S10hbcard:b.card = 1⊒ βˆƒ a_1 b_1 c, { qHd := none, qHu := none, Q5 := a.toFinset, Q10 := b.toFinset } = allowsTermForm a_1 b_1 c Ξ› 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩b:Multiset 𝓩hb:b.toFinset βŠ† S10hbcard:b.card = 1c:𝓩d:𝓩hsum:{c, d}.sum + b.sum = 0ha:{c, d}.toFinset βŠ† S5hacard:{c, d}.card = 2⊒ βˆƒ a b_1 c_1, { qHd := none, qHu := none, Q5 := {c, d}.toFinset, Q10 := b.toFinset } = allowsTermForm a b_1 c_1 Ξ› 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩c:𝓩d:𝓩ha:{c, d}.toFinset βŠ† S5hacard:{c, d}.card = 2e:𝓩hb:{e}.toFinset βŠ† S10hbcard:{e}.card = 1hsum:{c, d}.sum + {e}.sum = 0⊒ βˆƒ a b c_1, { qHd := none, qHu := none, Q5 := {c, d}.toFinset, Q10 := {e}.toFinset } = allowsTermForm a b c_1 Ξ› 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩c:𝓩d:𝓩e:𝓩ha:{c, d} βŠ† S5hb:e ∈ S10hsum:c + d + e = 0⊒ βˆƒ a b, {c, d} = {a, b} ∧ e = -a - b All goals completed! πŸ™ case W1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:(βˆƒ a b, (((a.toFinset βŠ† S5 ∧ a.card = 1) ∧ b.toFinset βŠ† S10 ∧ b.card = 3) ∧ a.sum + b.sum = 0) ∧ { qHd := none, qHu := none, Q5 := a.toFinset, Q10 := b.toFinset } = x) ∧ x.MinimallyAllowsTerm W1⊒ βˆƒ a b c, x = allowsTermForm a b c W1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:Multiset 𝓩b:Multiset 𝓩hsum:a.sum + b.sum = 0ha:a.toFinset βŠ† S5hacard:a.card = 1hb:b.toFinset βŠ† S10hbcard:b.card = 3right✝:{ qHd := none, qHu := none, Q5 := a.toFinset, Q10 := b.toFinset }.MinimallyAllowsTerm W1⊒ βˆƒ a_1 b_1 c, { qHd := none, qHu := none, Q5 := a.toFinset, Q10 := b.toFinset } = allowsTermForm a_1 b_1 c W1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩b:Multiset 𝓩hb:b.toFinset βŠ† S10hbcard:b.card = 3c:𝓩hsum:{c}.sum + b.sum = 0ha:{c}.toFinset βŠ† S5hacard:{c}.card = 1right✝:{ qHd := none, qHu := none, Q5 := {c}.toFinset, Q10 := b.toFinset }.MinimallyAllowsTerm W1⊒ βˆƒ a b_1 c_1, { qHd := none, qHu := none, Q5 := {c}.toFinset, Q10 := b.toFinset } = allowsTermForm a b_1 c_1 W1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩c:𝓩ha:{c}.toFinset βŠ† S5hacard:{c}.card = 1e:𝓩d:𝓩f:𝓩hb:{e, d, f}.toFinset βŠ† S10hbcard:{e, d, f}.card = 3hsum:{c}.sum + {e, d, f}.sum = 0right✝:{ qHd := none, qHu := none, Q5 := {c}.toFinset, Q10 := {e, d, f}.toFinset }.MinimallyAllowsTerm W1⊒ βˆƒ a b c_1, { qHd := none, qHu := none, Q5 := {c}.toFinset, Q10 := {e, d, f}.toFinset } = allowsTermForm a b c_1 W1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩c:𝓩e:𝓩d:𝓩f:𝓩ha:c ∈ S5hb:{e, d, f} βŠ† S10hsum:c + (e + (d + f)) = 0right✝:{ qHd := none, qHu := none, Q5 := {c}, Q10 := {e, d, f} }.MinimallyAllowsTerm W1⊒ βˆƒ a b c_1, c = -a - b - c_1 ∧ {e, d, f} = {a, b, c_1} All goals completed! πŸ™ case W2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:(βˆƒ a b, ((a ∈ S5 ∧ b.toFinset βŠ† S10 ∧ b.card = 3) ∧ a + b.sum = 0) ∧ { qHd := some a, qHu := none, Q5 := βˆ…, Q10 := b.toFinset } = x) ∧ x.MinimallyAllowsTerm W2⊒ βˆƒ a b c, x = allowsTermForm a b c W2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:Multiset 𝓩hsum:a + b.sum = 0ha:a ∈ S5hb:b.toFinset βŠ† S10hbcard:b.card = 3right✝:{ qHd := some a, qHu := none, Q5 := βˆ…, Q10 := b.toFinset }.MinimallyAllowsTerm W2⊒ βˆƒ a_1 b_1 c, { qHd := some a, qHu := none, Q5 := βˆ…, Q10 := b.toFinset } = allowsTermForm a_1 b_1 c W2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5e:𝓩d:𝓩f:𝓩hsum:a + {e, d, f}.sum = 0hb:{e, d, f}.toFinset βŠ† S10hbcard:{e, d, f}.card = 3right✝:{ qHd := some a, qHu := none, Q5 := βˆ…, Q10 := {e, d, f}.toFinset }.MinimallyAllowsTerm W2⊒ βˆƒ a_1 b c, { qHd := some a, qHu := none, Q5 := βˆ…, Q10 := {e, d, f}.toFinset } = allowsTermForm a_1 b c W2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5e:𝓩d:𝓩f:𝓩hsum:a + (e + (d + f)) = 0hb:{e, d, f} βŠ† S10right✝:{ qHd := some a, qHu := none, Q5 := βˆ…, Q10 := {e, d, f} }.MinimallyAllowsTerm W2⊒ βˆƒ a_1 b c, a = -a_1 - b - c ∧ {e, d, f} = {a_1, b, c} All goals completed! πŸ™ case W3 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a b, ((a ∈ S5 ∧ b.toFinset βŠ† S5 ∧ b.card = 2) ∧ -(2 β€’ a) + b.sum = 0) ∧ { qHd := none, qHu := some a, Q5 := b.toFinset, Q10 := βˆ… } = x⊒ βˆƒ a b c, x = allowsTermForm a b c W3 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:Multiset 𝓩hsum:-(2 β€’ a) + b.sum = 0ha:a ∈ S5hb:b.toFinset βŠ† S5hbcard:b.card = 2⊒ βˆƒ a_1 b_1 c, { qHd := none, qHu := some a, Q5 := b.toFinset, Q10 := βˆ… } = allowsTermForm a_1 b_1 c W3 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-(2 β€’ a) + {c, d}.sum = 0hb:{c, d}.toFinset βŠ† S5hbcard:{c, d}.card = 2⊒ βˆƒ a_1 b c_1, { qHd := none, qHu := some a, Q5 := {c, d}.toFinset, Q10 := βˆ… } = allowsTermForm a_1 b c_1 W3 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-(2 β€’ a) + (c + d) = 0hb:{c, d} βŠ† S5⊒ βˆƒ a_1, a = -a_1 ∧ βˆƒ x, {c, d} = {x, -x - 2 β€’ a_1} 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-(2 β€’ a) + (c + d) = 0hb:{c, d} βŠ† S5⊒ a = - -a𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-(2 β€’ a) + (c + d) = 0hb:{c, d} βŠ† S5⊒ {c, d} = {c, -c - 2 β€’ -a} 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-(2 β€’ a) + (c + d) = 0hb:{c, d} βŠ† S5⊒ a = - -a𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-(2 β€’ a) + (c + d) = 0hb:{c, d} βŠ† S5⊒ {c, d} = {c, -c - 2 β€’ -a} All goals completed! πŸ™ case W4 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a a_1 b, ((a ∈ S5 ∧ a_1 ∈ S5 ∧ b.toFinset βŠ† S5 ∧ b.card = 1) ∧ a - 2 β€’ a_1 + b.sum = 0) ∧ { qHd := some a, qHu := some a_1, Q5 := b.toFinset, Q10 := βˆ… } = x⊒ βˆƒ a b c, x = allowsTermForm a b c W4 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:Multiset 𝓩hsum:a - 2 β€’ b + c.sum = 0ha:a ∈ S5hb:b ∈ S5hc:c.toFinset βŠ† S5hcard:c.card = 1⊒ βˆƒ a_1 b_1 c_1, { qHd := some a, qHu := some b, Q5 := c.toFinset, Q10 := βˆ… } = allowsTermForm a_1 b_1 c_1 W4 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩ha:a ∈ S5hb:b ∈ S5d:𝓩hsum:a - 2 β€’ b + {d}.sum = 0hc:{d}.toFinset βŠ† S5hcard:{d}.card = 1⊒ βˆƒ a_1 b_1 c, { qHd := some a, qHu := some b, Q5 := {d}.toFinset, Q10 := βˆ… } = allowsTermForm a_1 b_1 c W4 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩ha:a ∈ S5hb:b ∈ S5d:𝓩hsum:a - 2 β€’ b + d = 0hc:d ∈ S5⊒ βˆƒ b_1, a = -d - 2 β€’ b_1 ∧ b = -b_1 exact ⟨-b, 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩ha:a ∈ S5hb:b ∈ S5d:𝓩hsum:a - 2 β€’ b + d = 0hc:d ∈ S5⊒ a = -d - 2 β€’ -b ∧ b = - -b All goals completed! πŸ™βŸ© case K2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a a_1 b, ((a ∈ S5 ∧ a_1 ∈ S5 ∧ b.toFinset βŠ† S10 ∧ b.card = 1) ∧ a + a_1 + b.sum = 0) ∧ { qHd := some a, qHu := some a_1, Q5 := βˆ…, Q10 := b.toFinset } = x⊒ βˆƒ a b c, x = allowsTermForm a b c K2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:Multiset 𝓩hsum:a + b + c.sum = 0ha:a ∈ S5hb:b ∈ S5hc:c.toFinset βŠ† S10hcard:c.card = 1⊒ βˆƒ a_1 b_1 c_1, { qHd := some a, qHu := some b, Q5 := βˆ…, Q10 := c.toFinset } = allowsTermForm a_1 b_1 c_1 K2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩ha:a ∈ S5hb:b ∈ S5d:𝓩hsum:a + b + {d}.sum = 0hc:{d}.toFinset βŠ† S10hcard:{d}.card = 1⊒ βˆƒ a_1 b_1 c, { qHd := some a, qHu := some b, Q5 := βˆ…, Q10 := {d}.toFinset } = allowsTermForm a_1 b_1 c K2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩ha:a ∈ S5hb:b ∈ S5d:𝓩hsum:a + b + d = 0hc:d ∈ S10⊒ d = -a - b All goals completed! πŸ™ case topYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a b, ((a ∈ S5 ∧ b.toFinset βŠ† S10 ∧ b.card = 2) ∧ -a + b.sum = 0) ∧ { qHd := none, qHu := some a, Q5 := βˆ…, Q10 := b.toFinset } = x⊒ βˆƒ a b c, x = allowsTermForm a b c topYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:Multiset 𝓩hsum:-a + b.sum = 0ha:a ∈ S5hb:b.toFinset βŠ† S10hbcard:b.card = 2⊒ βˆƒ a_1 b_1 c, { qHd := none, qHu := some a, Q5 := βˆ…, Q10 := b.toFinset } = allowsTermForm a_1 b_1 c topYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-a + {c, d}.sum = 0hb:{c, d}.toFinset βŠ† S10hbcard:{c, d}.card = 2⊒ βˆƒ a_1 b c_1, { qHd := none, qHu := some a, Q5 := βˆ…, Q10 := {c, d}.toFinset } = allowsTermForm a_1 b c_1 topYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-a + (c + d) = 0hb:{c, d} βŠ† S10⊒ βˆƒ a_1, a = -a_1 ∧ βˆƒ x, {c, d} = {x, -a_1 - x} 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-a + (c + d) = 0hb:{c, d} βŠ† S10⊒ a = - -a𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-a + (c + d) = 0hb:{c, d} βŠ† S10⊒ {c, d} = {c, - -a - c} 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-a + (c + d) = 0hb:{c, d} βŠ† S10⊒ a = - -a𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5c:𝓩d:𝓩hsum:-a + (c + d) = 0hb:{c, d} βŠ† S10⊒ {c, d} = {c, - -a - c} All goals completed! πŸ™ case bottomYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a a_1 b, ((a ∈ S5 ∧ (a_1.toFinset βŠ† S5 ∧ a_1.card = 1) ∧ b.toFinset βŠ† S10 ∧ b.card = 1) ∧ a + a_1.sum + b.sum = 0) ∧ { qHd := some a, qHu := none, Q5 := a_1.toFinset, Q10 := b.toFinset } = x⊒ βˆƒ a b c, x = allowsTermForm a b c bottomYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:Multiset 𝓩c:Multiset 𝓩hsum:a + b.sum + c.sum = 0ha:a ∈ S5hb:b.toFinset βŠ† S5hbcard:b.card = 1hc:c.toFinset βŠ† S10hcard:c.card = 1⊒ βˆƒ a_1 b_1 c_1, { qHd := some a, qHu := none, Q5 := b.toFinset, Q10 := c.toFinset } = allowsTermForm a_1 b_1 c_1 bottomYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:Multiset 𝓩ha:a ∈ S5hb:b.toFinset βŠ† S5hbcard:b.card = 1e:𝓩hsum:a + b.sum + {e}.sum = 0hc:{e}.toFinset βŠ† S10hcard:{e}.card = 1⊒ βˆƒ a_1 b_1 c, { qHd := some a, qHu := none, Q5 := b.toFinset, Q10 := {e}.toFinset } = allowsTermForm a_1 b_1 c bottomYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5e:𝓩hc:{e}.toFinset βŠ† S10hcard:{e}.card = 1d:𝓩hb:{d}.toFinset βŠ† S5hbcard:{d}.card = 1hsum:a + {d}.sum + {e}.sum = 0⊒ βˆƒ a_1 b c, { qHd := some a, qHu := none, Q5 := {d}.toFinset, Q10 := {e}.toFinset } = allowsTermForm a_1 b c bottomYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩ha:a ∈ S5e:𝓩d:𝓩hc:e ∈ S10hb:d ∈ S5hsum:a + d + e = 0⊒ e = -a - d All goals completed! πŸ™

B.2. Every element of minimallyAllowsTermsOfFinset allows the term

We show that every element of minimallyAllowsTermsOfFinset S5 S10 T allows the term T.

lemma allowsTerm_of_mem_minimallyAllowsTermOfFinset {S5 S10 : Finset 𝓩} {T : PotentialTerm} {x : ChargeSpectrum 𝓩} (hx : x ∈ minimallyAllowsTermsOfFinset S5 S10 T) : x.AllowsTerm T := 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩T:PotentialTermx:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 T⊒ x.AllowsTerm T 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩T:PotentialTerma:𝓩b:𝓩c:𝓩hx:allowsTermForm a b c T ∈ minimallyAllowsTermsOfFinset S5 S10 T⊒ (allowsTermForm a b c T).AllowsTerm T All goals completed! πŸ™

B.3. Every element of minimallyAllowsTermsOfFinset minimally allows the term

We make the above condition stronger, showing that every element of minimallyAllowsTermsOfFinset S5 S10 T minimally allows the term T.

𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 W1hT:Β¬(W1 β‰  W1 ∧ W1 β‰  W2)⊒ x.MinimallyAllowsTerm W1𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 W2hT:Β¬(W2 β‰  W1 ∧ W2 β‰  W2)⊒ x.MinimallyAllowsTerm W2 all_goals 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hT:Β¬(W2 β‰  W1 ∧ W2 β‰  W2)hx:(βˆƒ a b, ((a ∈ S5 ∧ b.toFinset βŠ† S10 ∧ b.card = 3) ∧ a + b.sum = 0) ∧ { qHd := some a, qHu := none, Q5 := βˆ…, Q10 := b.toFinset } = x) ∧ x.MinimallyAllowsTerm W2⊒ x.MinimallyAllowsTerm W2 All goals completed! πŸ™

B.4. Every charge spectra which minimally allows term is in minimallyAllowsTermsOfFinset

We show that every charge spectra which minimally allows term T and has charges in the sets S5 and S10 is in minimallyAllowsTermsOfFinset S5 S10 T.

𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c bottomYukawa).MinimallyAllowsTerm bottomYukawahx:(allowsTermForm a b c bottomYukawa).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c bottomYukawa).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c bottomYukawa).Q5 βŠ† S5 ∧ (allowsTermForm a b c bottomYukawa).Q10 βŠ† S10⊒ βˆƒ a_1 b_1, ((a ∈ S5 ∧ (a_1.toFinset βŠ† S5 ∧ a_1.card = 1) ∧ b_1.toFinset βŠ† S10 ∧ b_1.card = 1) ∧ a + a_1.sum + b_1.sum = 0) ∧ a_1.toFinset = {b} ∧ b_1.toFinset = {-a - b} case ΞΌ 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c ΞΌ).MinimallyAllowsTerm ΞΌhx:(allowsTermForm a b c ΞΌ).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c ΞΌ).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c ΞΌ).Q5 βŠ† S5 ∧ (allowsTermForm a b c ΞΌ).Q10 βŠ† S10⊒ a ∈ S5 All goals completed! πŸ™ case Ξ² 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c Ξ²).MinimallyAllowsTerm Ξ²hx:(allowsTermForm a b c Ξ²).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c Ξ²).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c Ξ²).Q5 βŠ† S5 ∧ (allowsTermForm a b c Ξ²).Q10 βŠ† S10⊒ βˆƒ b, ((a ∈ S5 ∧ b.toFinset βŠ† S5 ∧ b.card = 1) ∧ -a + b.sum = 0) ∧ b.toFinset = {a} exact ⟨{a}, 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c Ξ²).MinimallyAllowsTerm Ξ²hx:(allowsTermForm a b c Ξ²).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c Ξ²).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c Ξ²).Q5 βŠ† S5 ∧ (allowsTermForm a b c Ξ²).Q10 βŠ† S10⊒ ((a ∈ S5 ∧ {a}.toFinset βŠ† S5 ∧ {a}.card = 1) ∧ -a + {a}.sum = 0) ∧ {a}.toFinset = {a} All goals completed! πŸ™βŸ© case Ξ› 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c Ξ›).MinimallyAllowsTerm Ξ›hx:(allowsTermForm a b c Ξ›).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c Ξ›).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c Ξ›).Q5 βŠ† S5 ∧ (allowsTermForm a b c Ξ›).Q10 βŠ† S10⊒ βˆƒ a_1 b_1, (((a_1.toFinset βŠ† S5 ∧ a_1.card = 2) ∧ b_1.toFinset βŠ† S10 ∧ b_1.card = 1) ∧ a_1.sum + b_1.sum = 0) ∧ a_1.toFinset = {a, b} ∧ b_1.toFinset = {-a - b} exact ⟨{a, b}, {- a - b}, 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c Ξ›).MinimallyAllowsTerm Ξ›hx:(allowsTermForm a b c Ξ›).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c Ξ›).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c Ξ›).Q5 βŠ† S5 ∧ (allowsTermForm a b c Ξ›).Q10 βŠ† S10⊒ ((({a, b}.toFinset βŠ† S5 ∧ {a, b}.card = 2) ∧ {-a - b}.toFinset βŠ† S10 ∧ {-a - b}.card = 1) ∧ {a, b}.sum + {-a - b}.sum = 0) ∧ {a, b}.toFinset = {a, b} ∧ {-a - b}.toFinset = {-a - b} All goals completed! πŸ™βŸ© case W1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c W1).MinimallyAllowsTerm W1hx:(allowsTermForm a b c W1).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c W1).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c W1).Q5 βŠ† S5 ∧ (allowsTermForm a b c W1).Q10 βŠ† S10⊒ (βˆƒ a_1 b_1, (((a_1.toFinset βŠ† S5 ∧ a_1.card = 1) ∧ b_1.toFinset βŠ† S10 ∧ b_1.card = 3) ∧ a_1.sum + b_1.sum = 0) ∧ a_1.toFinset = {-a - b - c} ∧ b_1.toFinset = {a, b, c}) ∧ { qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }.MinimallyAllowsTerm W1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c W1).MinimallyAllowsTerm W1hx:(allowsTermForm a b c W1).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c W1).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c W1).Q5 βŠ† S5 ∧ (allowsTermForm a b c W1).Q10 βŠ† S10⊒ ((({-a - b - c}.toFinset βŠ† S5 ∧ {-a - b - c}.card = 1) ∧ {a, b, c}.toFinset βŠ† S10 ∧ {a, b, c}.card = 3) ∧ {-a - b - c}.sum + {a, b, c}.sum = 0) ∧ {-a - b - c}.toFinset = {-a - b - c} ∧ {a, b, c}.toFinset = {a, b, c} 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:{ qHd := none, qHu := none, Q5 := {-a - b - c}, Q10 := {a, b, c} }.MinimallyAllowsTerm W1hx:-a - b - c ∈ S5 ∧ {a, b, c} βŠ† S10⊒ -a - b - c + (a + (b + c)) = 0 All goals completed! πŸ™ case W2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c W2).MinimallyAllowsTerm W2hx:(allowsTermForm a b c W2).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c W2).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c W2).Q5 βŠ† S5 ∧ (allowsTermForm a b c W2).Q10 βŠ† S10⊒ (βˆƒ b_1, ((-a - b - c ∈ S5 ∧ b_1.toFinset βŠ† S10 ∧ b_1.card = 3) ∧ -a - b - c + b_1.sum = 0) ∧ b_1.toFinset = {a, b, c}) ∧ { qHd := some (-a - b - c), qHu := none, Q5 := βˆ…, Q10 := {a, b, c} }.MinimallyAllowsTerm W2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c W2).MinimallyAllowsTerm W2hx:(allowsTermForm a b c W2).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c W2).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c W2).Q5 βŠ† S5 ∧ (allowsTermForm a b c W2).Q10 βŠ† S10⊒ ((-a - b - c ∈ S5 ∧ {a, b, c}.toFinset βŠ† S10 ∧ {a, b, c}.card = 3) ∧ -a - b - c + {a, b, c}.sum = 0) ∧ {a, b, c}.toFinset = {a, b, c} 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:{ qHd := some (-a - b - c), qHu := none, Q5 := βˆ…, Q10 := {a, b, c} }.MinimallyAllowsTerm W2hx:-a - b - c ∈ S5 ∧ {a, b, c} βŠ† S10⊒ -a - b - c + (a + (b + c)) = 0 All goals completed! πŸ™ case W3 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c W3).MinimallyAllowsTerm W3hx:(allowsTermForm a b c W3).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c W3).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c W3).Q5 βŠ† S5 ∧ (allowsTermForm a b c W3).Q10 βŠ† S10⊒ βˆƒ b_1, ((-a ∈ S5 ∧ b_1.toFinset βŠ† S5 ∧ b_1.card = 2) ∧ 2 β€’ a + b_1.sum = 0) ∧ b_1.toFinset = {b, -b - 2 β€’ a} 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c W3).MinimallyAllowsTerm W3hx:(allowsTermForm a b c W3).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c W3).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c W3).Q5 βŠ† S5 ∧ (allowsTermForm a b c W3).Q10 βŠ† S10⊒ ((-a ∈ S5 ∧ {b, -b - 2 β€’ a}.toFinset βŠ† S5 ∧ {b, -b - 2 β€’ a}.card = 2) ∧ 2 β€’ a + {b, -b - 2 β€’ a}.sum = 0) ∧ {b, -b - 2 β€’ a}.toFinset = {b, -b - 2 β€’ a} 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:{ qHd := none, qHu := some (-a), Q5 := {b, -b - 2 β€’ a}, Q10 := βˆ… }.MinimallyAllowsTerm W3hx:-a ∈ S5 ∧ {b, -b - 2 β€’ a} βŠ† S5⊒ 2 β€’ a + (b + (-b - 2 β€’ a)) = 0 All goals completed! πŸ™ case W4 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c W4).MinimallyAllowsTerm W4hx:(allowsTermForm a b c W4).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c W4).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c W4).Q5 βŠ† S5 ∧ (allowsTermForm a b c W4).Q10 βŠ† S10⊒ βˆƒ b_1, ((-c - 2 β€’ b ∈ S5 ∧ -b ∈ S5 ∧ b_1.toFinset βŠ† S5 ∧ b_1.card = 1) ∧ -c + b_1.sum = 0) ∧ b_1.toFinset = {c} exact ⟨{c}, 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c W4).MinimallyAllowsTerm W4hx:(allowsTermForm a b c W4).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c W4).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c W4).Q5 βŠ† S5 ∧ (allowsTermForm a b c W4).Q10 βŠ† S10⊒ ((-c - 2 β€’ b ∈ S5 ∧ -b ∈ S5 ∧ {c}.toFinset βŠ† S5 ∧ {c}.card = 1) ∧ -c + {c}.sum = 0) ∧ {c}.toFinset = {c} All goals completed! πŸ™βŸ© case K1 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c K1).MinimallyAllowsTerm K1hx:(allowsTermForm a b c K1).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c K1).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c K1).Q5 βŠ† S5 ∧ (allowsTermForm a b c K1).Q10 βŠ† S10⊒ βˆƒ a_1 b_1, (((a_1.toFinset βŠ† S5 ∧ a_1.card = 1) ∧ b_1.toFinset βŠ† S10 ∧ b_1.card = 2) ∧ -a_1.sum + b_1.sum = 0) ∧ a_1.toFinset = {-a} ∧ b_1.toFinset = {b, -a - b} exact ⟨{-a}, {b, - a - b}, 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c K1).MinimallyAllowsTerm K1hx:(allowsTermForm a b c K1).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c K1).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c K1).Q5 βŠ† S5 ∧ (allowsTermForm a b c K1).Q10 βŠ† S10⊒ ((({-a}.toFinset βŠ† S5 ∧ {-a}.card = 1) ∧ {b, -a - b}.toFinset βŠ† S10 ∧ {b, -a - b}.card = 2) ∧ -{-a}.sum + {b, -a - b}.sum = 0) ∧ {-a}.toFinset = {-a} ∧ {b, -a - b}.toFinset = {b, -a - b} All goals completed! πŸ™βŸ© case K2 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c K2).MinimallyAllowsTerm K2hx:(allowsTermForm a b c K2).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c K2).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c K2).Q5 βŠ† S5 ∧ (allowsTermForm a b c K2).Q10 βŠ† S10⊒ βˆƒ b_1, ((a ∈ S5 ∧ b ∈ S5 ∧ b_1.toFinset βŠ† S10 ∧ b_1.card = 1) ∧ a + b + b_1.sum = 0) ∧ b_1.toFinset = {-a - b} exact ⟨{- a - b}, 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c K2).MinimallyAllowsTerm K2hx:(allowsTermForm a b c K2).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c K2).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c K2).Q5 βŠ† S5 ∧ (allowsTermForm a b c K2).Q10 βŠ† S10⊒ ((a ∈ S5 ∧ b ∈ S5 ∧ {-a - b}.toFinset βŠ† S10 ∧ {-a - b}.card = 1) ∧ a + b + {-a - b}.sum = 0) ∧ {-a - b}.toFinset = {-a - b} All goals completed! πŸ™βŸ© case topYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c topYukawa).MinimallyAllowsTerm topYukawahx:(allowsTermForm a b c topYukawa).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c topYukawa).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c topYukawa).Q5 βŠ† S5 ∧ (allowsTermForm a b c topYukawa).Q10 βŠ† S10⊒ βˆƒ b_1, ((-a ∈ S5 ∧ b_1.toFinset βŠ† S10 ∧ b_1.card = 2) ∧ a + b_1.sum = 0) ∧ b_1.toFinset = {b, -a - b} exact ⟨{b, - a - b}, 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c topYukawa).MinimallyAllowsTerm topYukawahx:(allowsTermForm a b c topYukawa).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c topYukawa).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c topYukawa).Q5 βŠ† S5 ∧ (allowsTermForm a b c topYukawa).Q10 βŠ† S10⊒ ((-a ∈ S5 ∧ {b, -a - b}.toFinset βŠ† S10 ∧ {b, -a - b}.card = 2) ∧ a + {b, -a - b}.sum = 0) ∧ {b, -a - b}.toFinset = {b, -a - b} All goals completed! πŸ™βŸ© case bottomYukawa 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c bottomYukawa).MinimallyAllowsTerm bottomYukawahx:(allowsTermForm a b c bottomYukawa).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c bottomYukawa).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c bottomYukawa).Q5 βŠ† S5 ∧ (allowsTermForm a b c bottomYukawa).Q10 βŠ† S10⊒ βˆƒ a_1 b_1, ((a ∈ S5 ∧ (a_1.toFinset βŠ† S5 ∧ a_1.card = 1) ∧ b_1.toFinset βŠ† S10 ∧ b_1.card = 1) ∧ a + a_1.sum + b_1.sum = 0) ∧ a_1.toFinset = {b} ∧ b_1.toFinset = {-a - b} exact ⟨{b}, {- a - b}, 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩a:𝓩b:𝓩c:𝓩h:(allowsTermForm a b c bottomYukawa).MinimallyAllowsTerm bottomYukawahx:(allowsTermForm a b c bottomYukawa).qHd.toFinset βŠ† S5 ∧ (allowsTermForm a b c bottomYukawa).qHu.toFinset βŠ† S5 ∧ (allowsTermForm a b c bottomYukawa).Q5 βŠ† S5 ∧ (allowsTermForm a b c bottomYukawa).Q10 βŠ† S10⊒ ((a ∈ S5 ∧ ({b}.toFinset βŠ† S5 ∧ {b}.card = 1) ∧ {-a - b}.toFinset βŠ† S10 ∧ {-a - b}.card = 1) ∧ a + {b}.sum + {-a - b}.sum = 0) ∧ {b}.toFinset = {b} ∧ {-a - b}.toFinset = {-a - b} All goals completed! πŸ™βŸ©

B.5. In minimallyAllowsTermsOfFinset iff minimally allowing term

We now show the key result of this section, that a charge spectrum x is in minimallyAllowsTermsOfFinset S5 S10 T if and only if it minimally allows the term T, provided it is in ofFinset S5 S10.

lemma minimallyAllowsTerm_iff_mem_minimallyAllowsTermOfFinset {S5 S10 : Finset 𝓩} {T : PotentialTerm} {x : ChargeSpectrum 𝓩} (hx : x ∈ ofFinset S5 S10) : x.MinimallyAllowsTerm T ↔ x ∈ minimallyAllowsTermsOfFinset S5 S10 T := ⟨fun h => mem_minimallyAllowsTermOfFinset_of_minimallyAllowsTerm x h hx, minimallyAllowsTerm_of_mem_minimallyAllowsTermOfFinset⟩

C. Other properties of minimallyAllowsTermsOfFinset

We show two other properties of minimallyAllowsTermsOfFinset.

C.1. Monotonicity of minimallyAllowsTermsOfFinset in allowed sets of charges

𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S5':Finset 𝓩S10:Finset 𝓩S10':Finset 𝓩T:PotentialTermh5:S5' βŠ† S5h10:S10' βŠ† S10x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5' S10' Th1:x ∈ ofFinset S5' S10'⊒ x.MinimallyAllowsTerm T All goals completed! πŸ™

C.2. Not phenomenologically constrained if in minimallyAllowsTermsOfFinset for topYukawa

We show that every term which is in minimallyAllowsTermsOfFinset S5 S10 topYukawa is not phenomenologically constrained.

lemma not_isPhenoConstrained_of_minimallyAllowsTermsOfFinset_topYukawa {S5 S10 : Finset 𝓩} {x : ChargeSpectrum 𝓩} (hx : x ∈ minimallyAllowsTermsOfFinset S5 S10 topYukawa) : Β¬ x.IsPhenoConstrained := 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:x ∈ minimallyAllowsTermsOfFinset S5 S10 topYukawa⊒ Β¬x.IsPhenoConstrained 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hx:βˆƒ a b, ((a ∈ S5 ∧ b.toFinset βŠ† S10 ∧ b.card = 2) ∧ -a + b.sum = 0) ∧ { qHd := none, qHu := some a, Q5 := βˆ…, Q10 := b.toFinset } = x⊒ Β¬x.IsPhenoConstrained 𝓩:Typeinst✝¹:DecidableEq 𝓩inst✝:AddCommGroup 𝓩S5:Finset 𝓩S10:Finset 𝓩qHu:𝓩Q10:Multiset 𝓩h1:(qHu ∈ S5 ∧ Q10.toFinset βŠ† S10 ∧ Q10.card = 2) ∧ -qHu + Q10.sum = 0⊒ Β¬{ qHd := none, qHu := some qHu, Q5 := βˆ…, Q10 := Q10.toFinset }.IsPhenoConstrained All goals completed! πŸ™