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.StringTheory.FTheory.SU5.Fluxes.NoExotics.ChiralIndices
public import Physlib.StringTheory.FTheory.SU5.Fluxes.NoExotics.Elems
Completeness of Elems with regard to the NoExotics condition
i. Overview
In the module:
Physlib.StringTheory.FTheory.SU5.Fluxes.NoExotics.Elems
we define finite sets of elements of FluxesFive and FluxesTen which satisfy the
NoExotics and HasNoZero conditions.
In this module we prove that these sets are complete, in the sense that every
element of FluxesFive or FluxesTen which satisfies the NoExotics and
HasNoZero conditions is contained in them.
Our proof follows by building allowed subsets of fluxes by their cardinality, and heavily relies
on the decide tactic.
Note that the 10d fluxes are much more constrained than the 5-bar fluxes. This is because
they are constrained by 3 SM representations Q, U, and E, whereas the 5-bar fluxes
are only constrained by 2 SM representations D and L.
ii. Key results
FluxesFive.noExotics_iff_mem_elemsNoExotics : An element of FluxesFive satisfies NoExotics
and HasNoZero if and only if it is an element of elemsNoExotics.
FluxesTen.noExotics_iff_mem_elemsNoExotics : An element of FluxesTen satisfies NoExotics
and HasNoZero if and only if it is an element of elemsNoExotics.
iii. Table of contents
A. All terms of FluxesFive obeying NoExotics and HasNoZero
A.1. The allowed fluxes in a FluxesFive which obeys NoExotics and HasNoZero
A.2. Sufficient condition for a set to contain allowed subsets of card n.succ based on n
A.3. Statement of the allowed subsets of each cardinality
A.4. Lemma that stated allowed subsets are complete
A.5. Terms of FluxesFive obeying NoExotics and HasNoZero have card ≤ 6
A.6. Terms of FluxesFive obeying NoExotics and HasNoZero are in elemsNoExotics
A.7. Terms of FluxesFive obey NoExotics and HasNoZero if and only if in elemsNoExotics
B. All terms of FluxesTen obeying NoExotics and HasNoZero
B.1. The allowed fluxes in a FluxesTen which obeys NoExotics and HasNoZero
B.2. Sufficient condition for a set to contain allowed subsets of card n.succ based on n
B.3. Statement of the allowed subsets of each cardinality
B.4. Lemma that stated allowed subsets are complete
B.5. Terms of FluxesTen obeying NoExotics and HasNoZero have card ≤ 3
B.6. Terms of FluxesTen obeying NoExotics and HasNoZero are in elemsNoExotics
B.7. Terms of FluxesTen obey NoExotics and HasNoZero if and only if in elemsNoExotics
iv. References
There are no known references for the material in this module.
@[expose] public section
A. All terms of FluxesFive obeying NoExotics and HasNoZero
A.1. The allowed fluxes in a FluxesFive which obeys NoExotics and HasNoZero
F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhL1:x.M + x.N ∈ {0, 1, 2, 3}hD1:x.M ∈ {0, 1, 2, 3}h0:¬x = 0hd:x.N = x.M + x.N - x.M⊢ x = { M := 0, N := 1 } ∨
x = { M := 0, N := 2 } ∨
x = { M := 0, N := 3 } ∨
x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 1, N := 2 } ∨
x = { M := 2, N := -2 } ∨
x = { M := 2, N := -1 } ∨
x = { M := 2, N := 0 } ∨
x = { M := 2, N := 1 } ∨
x = { M := 3, N := -3 } ∨
x = { M := 3, N := -2 } ∨ x = { M := 3, N := -1 } ∨ x = { M := 3, N := 0 }
generalize x.M + x.N = D' at * F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhD1:x.M ∈ {0, 1, 2, 3}h0:¬x = 0D':ℤhL1:D' ∈ {0, 1, 2, 3}hd:x.N = D' - x.M⊢ x = { M := 0, N := 1 } ∨
x = { M := 0, N := 2 } ∨
x = { M := 0, N := 3 } ∨
x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 1, N := 2 } ∨
x = { M := 2, N := -2 } ∨
x = { M := 2, N := -1 } ∨
x = { M := 2, N := 0 } ∨
x = { M := 2, N := 1 } ∨
x = { M := 3, N := -3 } ∨
x = { M := 3, N := -2 } ∨ x = { M := 3, N := -1 } ∨ x = { M := 3, N := 0 }
rcases x with ⟨M, N⟩ F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroD':ℤhL1:D' ∈ {0, 1, 2, 3}M:ℤN:ℤhx:{ M := M, N := N } ∈ FhD1:{ M := M, N := N }.M ∈ {0, 1, 2, 3}h0:¬{ M := M, N := N } = 0hd:{ M := M, N := N }.N = D' - { M := M, N := N }.M⊢ { M := M, N := N } = { M := 0, N := 1 } ∨
{ M := M, N := N } = { M := 0, N := 2 } ∨
{ M := M, N := N } = { M := 0, N := 3 } ∨
{ M := M, N := N } = { M := 1, N := -1 } ∨
{ M := M, N := N } = { M := 1, N := 0 } ∨
{ M := M, N := N } = { M := 1, N := 1 } ∨
{ M := M, N := N } = { M := 1, N := 2 } ∨
{ M := M, N := N } = { M := 2, N := -2 } ∨
{ M := M, N := N } = { M := 2, N := -1 } ∨
{ M := M, N := N } = { M := 2, N := 0 } ∨
{ M := M, N := N } = { M := 2, N := 1 } ∨
{ M := M, N := N } = { M := 3, N := -3 } ∨
{ M := M, N := N } = { M := 3, N := -2 } ∨
{ M := M, N := N } = { M := 3, N := -1 } ∨ { M := M, N := N } = { M := 3, N := 0 }
simp_all only [Fluxes.mk.injEq, Int.reduceNeg] F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroD':ℤhL1:D' ∈ {0, 1, 2, 3}M:ℤN:ℤhx:{ M := M, N := D' - M } ∈ FhD1:M ∈ {0, 1, 2, 3}h0:¬{ M := M, N := D' - M } = 0hd:N = D' - M⊢ M = 0 ∧ D' - M = 1 ∨
M = 0 ∧ D' - M = 2 ∨
M = 0 ∧ D' - M = 3 ∨
M = 1 ∧ D' - M = -1 ∨
M = 1 ∧ D' - M = 0 ∨
M = 1 ∧ D' - M = 1 ∨
M = 1 ∧ D' - M = 2 ∨
M = 2 ∧ D' - M = -2 ∨
M = 2 ∧ D' - M = -1 ∨
M = 2 ∧ D' - M = 0 ∨
M = 2 ∧ D' - M = 1 ∨
M = 3 ∧ D' - M = -3 ∨ M = 3 ∧ D' - M = -2 ∨ M = 3 ∧ D' - M = -1 ∨ M = 3 ∧ D' - M = 0
subst hd F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroD':ℤhL1:D' ∈ {0, 1, 2, 3}M:ℤhx:{ M := M, N := D' - M } ∈ FhD1:M ∈ {0, 1, 2, 3}h0:¬{ M := M, N := D' - M } = 0⊢ M = 0 ∧ D' - M = 1 ∨
M = 0 ∧ D' - M = 2 ∨
M = 0 ∧ D' - M = 3 ∨
M = 1 ∧ D' - M = -1 ∨
M = 1 ∧ D' - M = 0 ∨
M = 1 ∧ D' - M = 1 ∨
M = 1 ∧ D' - M = 2 ∨
M = 2 ∧ D' - M = -2 ∨
M = 2 ∧ D' - M = -1 ∨
M = 2 ∧ D' - M = 0 ∨
M = 2 ∧ D' - M = 1 ∨
M = 3 ∧ D' - M = -3 ∨ M = 3 ∧ D' - M = -2 ∨ M = 3 ∧ D' - M = -1 ∨ M = 3 ∧ D' - M = 0
clear hx F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroD':ℤhL1:D' ∈ {0, 1, 2, 3}M:ℤhD1:M ∈ {0, 1, 2, 3}h0:¬{ M := M, N := D' - M } = 0⊢ M = 0 ∧ D' - M = 1 ∨
M = 0 ∧ D' - M = 2 ∨
M = 0 ∧ D' - M = 3 ∨
M = 1 ∧ D' - M = -1 ∨
M = 1 ∧ D' - M = 0 ∨
M = 1 ∧ D' - M = 1 ∨
M = 1 ∧ D' - M = 2 ∨
M = 2 ∧ D' - M = -2 ∨
M = 2 ∧ D' - M = -1 ∨
M = 2 ∧ D' - M = 0 ∨
M = 2 ∧ D' - M = 1 ∨
M = 3 ∧ D' - M = -3 ∨ M = 3 ∧ D' - M = -2 ∨ M = 3 ∧ D' - M = -1 ∨ M = 3 ∧ D' - M = 0
revert h0 F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroD':ℤhL1:D' ∈ {0, 1, 2, 3}M:ℤhD1:M ∈ {0, 1, 2, 3}⊢ ¬{ M := M, N := D' - M } = 0 →
M = 0 ∧ D' - M = 1 ∨
M = 0 ∧ D' - M = 2 ∨
M = 0 ∧ D' - M = 3 ∨
M = 1 ∧ D' - M = -1 ∨
M = 1 ∧ D' - M = 0 ∨
M = 1 ∧ D' - M = 1 ∨
M = 1 ∧ D' - M = 2 ∨
M = 2 ∧ D' - M = -2 ∨
M = 2 ∧ D' - M = -1 ∨
M = 2 ∧ D' - M = 0 ∨
M = 2 ∧ D' - M = 1 ∨
M = 3 ∧ D' - M = -3 ∨ M = 3 ∧ D' - M = -2 ∨ M = 3 ∧ D' - M = -1 ∨ M = 3 ∧ D' - M = 0
revert D' M F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZero⊢ ∀ D' ∈ {0, 1, 2, 3},
∀ M ∈ {0, 1, 2, 3},
¬{ M := M, N := D' - M } = 0 →
M = 0 ∧ D' - M = 1 ∨
M = 0 ∧ D' - M = 2 ∨
M = 0 ∧ D' - M = 3 ∨
M = 1 ∧ D' - M = -1 ∨
M = 1 ∧ D' - M = 0 ∨
M = 1 ∧ D' - M = 1 ∨
M = 1 ∧ D' - M = 2 ∨
M = 2 ∧ D' - M = -2 ∨
M = 2 ∧ D' - M = -1 ∨
M = 2 ∧ D' - M = 0 ∨
M = 2 ∧ D' - M = 1 ∨
M = 3 ∧ D' - M = -3 ∨ M = 3 ∧ D' - M = -2 ∨ M = 3 ∧ D' - M = -1 ∨ M = 3 ∧ D' - M = 0
decide All goals completed! 🐙
A.2. Sufficient condition for a set to contain allowed subsets of card n.succ based on n
lemma subset_le_mem_of_card_eq_succ {n : ℕ} {F : FluxesFive} (hF : F.NoExotics) (hnZ : F.HasNoZero)
(S : Multiset Fluxes) (hcard : S.card = n.succ) (hS : S ≤ F) {Y X : Finset (Multiset Fluxes)}
(hY : ∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ Y)
(hX : ∀ a ∈ ({⟨0, 1⟩, ⟨0, 2⟩, ⟨0, 3⟩, ⟨1, -1⟩, ⟨1, 0⟩, ⟨1, 1⟩, ⟨1, 2⟩,
⟨2, -2⟩, ⟨2, -1⟩, ⟨2, 0⟩, ⟨2, 1⟩, ⟨3, -3⟩, ⟨3, -2⟩, ⟨3, -1⟩, ⟨3, 0⟩} : Finset Fluxes),
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
a ::ₘ y ∈ X) :
S ∈ X := by n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS:Multiset Fluxeshcard:S.card = n.succhS:S ≤ FY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ X⊢ S ∈ X
have hSum1 := chiralIndicesOfL_subset_sum_le_three_of_noExotics F hF S hS n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS:Multiset Fluxeshcard:S.card = n.succhS:S ≤ FY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ XhSum1:(Multiset.map (fun x => x.M + x.N) S).sum ≤ 3⊢ S ∈ X
have hSum2 := chiralIndicesOfD_subset_sum_le_three_of_noExotics F hF S hS n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS:Multiset Fluxeshcard:S.card = n.succhS:S ≤ FY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ XhSum1:(Multiset.map (fun x => x.M + x.N) S).sum ≤ 3hSum2:(Multiset.map (fun x => x.M) S).sum ≤ 3⊢ S ∈ X
revert S n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ X⊢ ∀ (S : Multiset Fluxes),
S.card = n.succ →
S ≤ F → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M) S).sum ≤ 3 → S ∈ X
apply Multiset.induction empty n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ X⊢ Multiset.card 0 = n.succ →
0 ≤ F → (Multiset.map (fun x => x.M + x.N) 0).sum ≤ 3 → (Multiset.map (fun x => x.M) 0).sum ≤ 3 → 0 ∈ Xcons n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ X⊢ ∀ (a : Fluxes) (s : Multiset Fluxes),
(s.card = n.succ →
s ≤ F → (Multiset.map (fun x => x.M + x.N) s).sum ≤ 3 → (Multiset.map (fun x => x.M) s).sum ≤ 3 → s ∈ X) →
(a ::ₘ s).card = n.succ →
a ::ₘ s ≤ F →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ s)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ s)).sum ≤ 3 → a ::ₘ s ∈ X
· empty n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ X⊢ Multiset.card 0 = n.succ →
0 ≤ F → (Multiset.map (fun x => x.M + x.N) 0).sum ≤ 3 → (Multiset.map (fun x => x.M) 0).sum ≤ 3 → 0 ∈ X simp All goals completed! 🐙
intro a S ih hcard hle hsum1 hsum2 cons n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M) S).sum ≤ 3 → S ∈ Xhcard:(a ::ₘ S).card = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3⊢ a ::ₘ S ∈ X
have hsub : S ≤ F := (S.le_cons_self a).trans hle cons n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M) S).sum ≤ 3 → S ∈ Xhcard:(a ::ₘ S).card = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsub:S ≤ F⊢ a ::ₘ S ∈ X
have ha : a ∈ F := Multiset.mem_of_le hle (S.mem_cons_self a) cons n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M) S).sum ≤ 3 → S ∈ Xhcard:(a ::ₘ S).card = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsub:S ≤ Fha:a ∈ F⊢ a ::ₘ S ∈ X
rw [Multiset.card_cons cons n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M) S).sum ≤ 3 → S ∈ Xhcard:S.card + 1 = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsub:S ≤ Fha:a ∈ F⊢ a ::ₘ S ∈ X cons n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M) S).sum ≤ 3 → S ∈ Xhcard:S.card + 1 = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsub:S ≤ Fha:a ∈ F⊢ a ::ₘ S ∈ X] at hcard cons n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M) S).sum ≤ 3 → S ∈ Xhcard:S.card + 1 = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsub:S ≤ Fha:a ∈ F⊢ a ::ₘ S ∈ X
simp at hcard cons n:ℕF:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M) S).sum ≤ 3 → S ∈ Xhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsub:S ≤ Fha:a ∈ Fhcard:S.card = n⊢ a ::ₘ S ∈ X
exact hX a (mem_mem_finset_of_noExotics F hF hnZ a ha) S (hY S hcard hsub) hsum1 hsum2 All goals completed! 🐙A.3. Statement of the allowed subsets of each cardinality
The allowed subsets of a FluxesFive which has no exotics or zeros.
def noExoticsSubsets : (n : ℕ) → Finset (Multiset Fluxes)
| 0 => {{}}
| 1 => {{⟨0, 1⟩}, {⟨0, 2⟩}, {⟨0, 3⟩}, {⟨1, -1⟩}, {⟨1, 0⟩}, {⟨1, 1⟩}, {⟨1, 2⟩},
{⟨2, -2⟩}, {⟨2, -1⟩}, {⟨2, 0⟩}, {⟨2, 1⟩}, {⟨3, -3⟩}, {⟨3, -2⟩}, {⟨3, -1⟩}, {⟨3, 0⟩}}
| 2 => {{⟨0, 1⟩, ⟨0, 1⟩}, {⟨0, 1⟩, ⟨1, -1⟩}, {⟨0, 1⟩, ⟨1, 0⟩}, {⟨0, 1⟩, ⟨0, 2⟩},
{⟨0, 1⟩, ⟨1, 1⟩}, {⟨0, 1⟩, ⟨2, -2⟩}, {⟨0, 1⟩, ⟨2, -1⟩}, {⟨0, 1⟩, ⟨2, 0⟩},
{⟨0, 1⟩, ⟨3, -3⟩}, {⟨0, 1⟩, ⟨3, -2⟩}, {⟨0, 1⟩, ⟨3, -1⟩},
{⟨0, 2⟩, ⟨1, -1⟩}, {⟨0, 2⟩, ⟨1, 0⟩}, {⟨0, 2⟩, ⟨2, -2⟩}, {⟨0, 2⟩, ⟨2, -1⟩},
{⟨0, 2⟩, ⟨3, -3⟩}, {⟨0, 2⟩, ⟨3, -2⟩}, {⟨0, 3⟩, ⟨1, -1⟩}, {⟨0, 3⟩, ⟨2, -2⟩},
{⟨0, 3⟩, ⟨3, -3⟩}, {⟨1, -1⟩, ⟨1, -1⟩}, {⟨1, -1⟩, ⟨1, 0⟩}, {⟨1, -1⟩, ⟨1, 1⟩},
{⟨1, -1⟩, ⟨1, 2⟩}, {⟨1, -1⟩, ⟨2, -2⟩}, {⟨1, -1⟩, ⟨2, -1⟩}, {⟨1, -1⟩, ⟨2, 0⟩},
{⟨1, 0⟩, ⟨1, 0⟩}, {⟨1, -1⟩, ⟨2, 1⟩}, {⟨1, 0⟩, ⟨1, 1⟩}, {⟨1, 0⟩, ⟨2, -2⟩},
{⟨1, 0⟩, ⟨2, -1⟩}, {⟨1, 0⟩, ⟨2, 0⟩}, {⟨1, 1⟩, ⟨2, -2⟩}, {⟨1, 1⟩, ⟨2, -1⟩},
{⟨1, 2⟩, ⟨2, -2⟩}}
| 3 => {{⟨0, 1⟩, ⟨0, 1⟩, ⟨0, 1⟩}, {⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩},
{⟨0, 1⟩, ⟨0, 1⟩, ⟨1, 0⟩}, {⟨0, 1⟩, ⟨0, 1⟩, ⟨2, -2⟩},
{⟨0, 1⟩, ⟨0, 1⟩, ⟨2, -1⟩}, {⟨0, 1⟩, ⟨0, 1⟩, ⟨3, -3⟩}, {⟨0, 1⟩, ⟨0, 1⟩, ⟨3, -2⟩},
{⟨0, 1⟩, ⟨0, 2⟩, ⟨1, -1⟩}, {⟨0, 1⟩, ⟨0, 2⟩, ⟨2, -2⟩}, {⟨0, 1⟩, ⟨0, 2⟩, ⟨3, -3⟩},
{⟨0, 1⟩, ⟨1, -1⟩, ⟨1, -1⟩}, {⟨0, 1⟩, ⟨1, -1⟩, ⟨1, 0⟩}, {⟨0, 1⟩, ⟨1, -1⟩, ⟨1, 1⟩},
{⟨0, 1⟩, ⟨1, -1⟩, ⟨2, -2⟩}, {⟨0, 1⟩, ⟨1, -1⟩, ⟨2, -1⟩}, {⟨0, 1⟩, ⟨1, -1⟩, ⟨2, 0⟩},
{⟨0, 1⟩, ⟨1, 0⟩, ⟨1, 0⟩}, {⟨0, 1⟩, ⟨1, 0⟩, ⟨2, -2⟩}, {⟨0, 1⟩, ⟨1, 0⟩, ⟨2, -1⟩},
{⟨0, 1⟩, ⟨1, 1⟩, ⟨2, -2⟩}, {⟨0, 2⟩, ⟨1, -1⟩, ⟨1, -1⟩}, {⟨0, 2⟩, ⟨1, -1⟩, ⟨1, 0⟩},
{⟨0, 2⟩, ⟨1, -1⟩, ⟨2, -2⟩}, {⟨0, 2⟩, ⟨1, -1⟩, ⟨2, -1⟩}, {⟨0, 2⟩, ⟨1, 0⟩, ⟨2, -2⟩},
{⟨0, 3⟩, ⟨1, -1⟩, ⟨1, -1⟩}, {⟨0, 3⟩, ⟨1, -1⟩, ⟨2, -2⟩}, {⟨1, -1⟩, ⟨1, -1⟩, ⟨1, -1⟩},
{⟨1, -1⟩, ⟨1, -1⟩, ⟨1, 0⟩}, {⟨1, -1⟩, ⟨1, -1⟩, ⟨1, 1⟩}, {⟨1, -1⟩, ⟨1, -1⟩, ⟨1, 2⟩},
{⟨1, -1⟩, ⟨1, 0⟩, ⟨1, 0⟩}, {⟨1, -1⟩, ⟨1, 0⟩, ⟨1, 1⟩}, {⟨1, 0⟩, ⟨1, 0⟩, ⟨1, 0⟩}}
| 4 => {{⟨0, 1⟩, ⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩},
{⟨0, 1⟩, ⟨0, 1⟩, ⟨0, 1⟩, ⟨2, -2⟩}, {⟨0, 1⟩, ⟨0, 1⟩, ⟨0, 1⟩, ⟨3, -3⟩},
{⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩, ⟨1, -1⟩}, {⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩, ⟨1, 0⟩},
{⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩, ⟨2, -2⟩}, {⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩, ⟨2, -1⟩},
{⟨0, 1⟩, ⟨0, 1⟩, ⟨1, 0⟩, ⟨2, -2⟩}, {⟨0, 1⟩, ⟨0, 2⟩, ⟨1, -1⟩, ⟨1, -1⟩},
{⟨0, 1⟩, ⟨0, 2⟩, ⟨1, -1⟩, ⟨2, -2⟩}, {⟨0, 1⟩, ⟨1, -1⟩, ⟨1, -1⟩, ⟨1, -1⟩},
{⟨0, 1⟩, ⟨1, -1⟩, ⟨1, -1⟩, ⟨1, 0⟩}, {⟨0, 1⟩, ⟨1, -1⟩, ⟨1, -1⟩, ⟨1, 1⟩},
{⟨0, 1⟩, ⟨1, -1⟩, ⟨1, 0⟩, ⟨1, 0⟩}, {⟨0, 2⟩, ⟨1, -1⟩, ⟨1, -1⟩, ⟨1, -1⟩},
{⟨0, 2⟩, ⟨1, -1⟩, ⟨1, -1⟩, ⟨1, 0⟩}, {⟨0, 3⟩, ⟨1, -1⟩, ⟨1, -1⟩, ⟨1, -1⟩}}
| 5 => {{⟨0, 1⟩, ⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩, ⟨1, -1⟩},
{⟨0, 1⟩, ⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩, ⟨2, -2⟩},
{⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩, ⟨1, -1⟩, ⟨1, -1⟩},
{⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩, ⟨1, -1⟩, ⟨1, 0⟩},
{⟨0, 1⟩, ⟨0, 2⟩, ⟨1, -1⟩, ⟨1, -1⟩, ⟨1, -1⟩}}
| 6 => {{⟨0, 1⟩, ⟨0, 1⟩, ⟨0, 1⟩, ⟨1, -1⟩, ⟨1, -1⟩, ⟨1, -1⟩}}
| _ + 7 => ∅A.4. Lemma that stated allowed subsets are complete
lemma subset_of_fluxesFive_mem_noExoticsSubsets_of_noExotics {F : FluxesFive} (hF : F.NoExotics)
(hnZ : F.HasNoZero) (S : Multiset Fluxes) (hS : S ≤ F) :
S ∈ noExoticsSubsets S.card := recS S.card S rfl hS
where recS : (n : ℕ) → (S : Multiset Fluxes) → S.card = n → S ≤ F → S ∈ noExoticsSubsets n
| 0, S, hcard, hS => F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 0hS:S ≤ F⊢ S ∈ noExoticsSubsets 0 by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 0hS:S ≤ F⊢ S ∈ noExoticsSubsets 0
rw [Multiset.card_eq_zero F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S = 0hS:S ≤ F⊢ S ∈ noExoticsSubsets 0 F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S = 0hS:S ≤ F⊢ S ∈ noExoticsSubsets 0] at hcard F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S = 0hS:S ≤ F⊢ S ∈ noExoticsSubsets 0
subst hcard F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS:Multiset FluxeshS✝:S✝ ≤ FhS:0 ≤ F⊢ 0 ∈ noExoticsSubsets 0
simp [noExoticsSubsets] All goals completed! 🐙
| 1, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 0 S hc) <| by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 1hS:S ≤ F⊢ ∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 0,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 1 decide All goals completed! 🐙
| 2, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 1 S hc) <| by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 2hS:S ≤ F⊢ ∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 1,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 2 decide All goals completed! 🐙
| 3, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 2 S hc) <| by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 3hS:S ≤ F⊢ ∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 2,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 3 decide All goals completed! 🐙
| 4, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 3 S hc) <| by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 4hS:S ≤ F⊢ ∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 3,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 4 decide All goals completed! 🐙
| 5, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 4 S hc) <| by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 5hS:S ≤ F⊢ ∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 4,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 5 decide All goals completed! 🐙
| 6, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 5 S hc) <| by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 6hS:S ≤ F⊢ ∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 5,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 6 decide All goals completed! 🐙
| 7, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 6 S hc) <| by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 7hS:S ≤ F⊢ ∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 6,
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 7 decide All goals completed! 🐙
| (n + 1) + 7, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS (n + 7) S hc) <| by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ Fn:ℕS:Multiset Fluxeshcard:S.card = n + 1 + 7hS:S ≤ F⊢ ∀
a ∈
{{ M := 0, N := 1 }, { M := 0, N := 2 }, { M := 0, N := 3 }, { M := 1, N := -1 }, { M := 1, N := 0 },
{ M := 1, N := 1 }, { M := 1, N := 2 }, { M := 2, N := -2 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := -3 }, { M := 3, N := -2 }, { M := 3, N := -1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets (n + 7),
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets (n + 1 + 7)
simp [noExoticsSubsets] All goals completed! 🐙
A.5. Terms of FluxesFive obeying NoExotics and HasNoZero have card ≤ 6
lemma card_le_six_of_noExotics {F : FluxesFive} (hF : F.NoExotics) (hnZ : F.HasNoZero) :
F.card ≤ 6 := by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZero⊢ Multiset.card F ≤ 6
have hx := subset_of_fluxesFive_mem_noExoticsSubsets_of_noExotics hF hnZ F
(Preorder.le_refl F) F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZerohx:F ∈ noExoticsSubsets (Multiset.card F)⊢ Multiset.card F ≤ 6
generalize F.card = n at * F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets n⊢ n ≤ 6
match n with
| 0 => F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 0⊢ 0 ≤ 6 simp All goals completed! 🐙
| 1 => F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 1⊢ 1 ≤ 6 simp All goals completed! 🐙
| 2 => F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 2⊢ 2 ≤ 6 simp All goals completed! 🐙
| 3 => F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 3⊢ 3 ≤ 6 simp All goals completed! 🐙
| 4 => F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 4⊢ 4 ≤ 6 simp All goals completed! 🐙
| 5 => F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 5⊢ 5 ≤ 6 simp All goals completed! 🐙
| 6 => F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 6⊢ 6 ≤ 6 simp All goals completed! 🐙
| _ + 7 => F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZeron:ℕn✝:ℕhx:F ∈ noExoticsSubsets (n✝ + 7)⊢ n✝ + 7 ≤ 6 simp [noExoticsSubsets] at hx All goals completed! 🐙
lemma card_mem_range_seven_of_noExotics {F : FluxesFive} (hF : F.NoExotics) (hnZ : F.HasNoZero) :
F.card ∈ Finset.range 7 := by F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZero⊢ Multiset.card F ∈ Finset.range 7
rw [Finset.mem_range_succ_iff F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZero⊢ Multiset.card F ≤ 6 F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZero⊢ Multiset.card F ≤ 6] F:FluxesFivehF:F.NoExoticshnZ:F.HasNoZero⊢ Multiset.card F ≤ 6
exact card_le_six_of_noExotics hF hnZ All goals completed! 🐙
A.6. Terms of FluxesFive obeying NoExotics and HasNoZero are in elemsNoExotics
lemma mem_elemsNoExotics_of_noExotics (F : FluxesFive) (hNE : F.NoExotics) (hnZ : F.HasNoZero) :
F ∈ elemsNoExotics := by F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZero⊢ F ∈ elemsNoExotics
have h1 := card_mem_range_seven_of_noExotics hNE hnZ F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZeroh1:Multiset.card F ∈ Finset.range 7⊢ F ∈ elemsNoExotics
have hF := subset_of_fluxesFive_mem_noExoticsSubsets_of_noExotics hNE hnZ F
(Preorder.le_refl F) F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZeroh1:Multiset.card F ∈ Finset.range 7hF:F ∈ noExoticsSubsets (Multiset.card F)⊢ F ∈ elemsNoExotics
simp only [Finset.range, Multiset.range_succ, Multiset.range_zero, Multiset.cons_zero,
Finset.mk_cons, Finset.cons_eq_insert, Finset.mem_insert, Finset.mem_mk,
Multiset.mem_singleton] at h1 F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)h1:Multiset.card F = 6 ∨
Multiset.card F = 5 ∨
Multiset.card F = 4 ∨ Multiset.card F = 3 ∨ Multiset.card F = 2 ∨ Multiset.card F = 1 ∨ Multiset.card F = 0⊢ F ∈ elemsNoExotics
rcases h1 with hr | hr | hr | hr | hr | hr | hr inl F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 6⊢ F ∈ elemsNoExoticsinr.inl F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 5⊢ F ∈ elemsNoExoticsinr.inr.inl F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 4⊢ F ∈ elemsNoExoticsinr.inr.inr.inl F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 3⊢ F ∈ elemsNoExoticsinr.inr.inr.inr.inl F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 2⊢ F ∈ elemsNoExoticsinr.inr.inr.inr.inr.inl F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 1⊢ F ∈ elemsNoExoticsinr.inr.inr.inr.inr.inr F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 0⊢ F ∈ elemsNoExotics
all_goals
· inr.inr.inr.inr.inr.inr F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 0⊢ F ∈ elemsNoExotics rw [hr inl F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets 6hr:Multiset.card F = 6⊢ F ∈ elemsNoExotics inr.inr.inr.inr.inr.inr F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets 0hr:Multiset.card F = 0⊢ F ∈ elemsNoExotics] inr.inr.inr.inr.inr.inl F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets 1hr:Multiset.card F = 1⊢ F ∈ elemsNoExotics inr.inr.inr.inr.inr.inr F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets 0hr:Multiset.card F = 0⊢ F ∈ elemsNoExotics at hFinr.inr.inr.inr.inr.inr F:FluxesFivehNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets 0hr:Multiset.card F = 0⊢ F ∈ elemsNoExotics
clear hr hnZ inr.inr.inr.inr.inr.inr F:FluxesFivehNE:F.NoExoticshF:F ∈ noExoticsSubsets 0⊢ F ∈ elemsNoExotics
revert hNE inr.inr.inr.inr.inr.inr F:FluxesFivehF:F ∈ noExoticsSubsets 0⊢ F.NoExotics → F ∈ elemsNoExotics
revert F inr.inr.inr.inr.inr.inr ⊢ ∀ F ∈ noExoticsSubsets 0, F.NoExotics → F ∈ elemsNoExotics
decide All goals completed! 🐙
A.7. Terms of FluxesFive obey NoExotics and HasNoZero if and only if in elemsNoExotics
Completeness of elemsNoExotics, that is, every element of FluxesFive
which obeys NoExotics is an element of elemsNoExotics, and every
element of elemsNoExotics obeys NoExotics.
lemma noExotics_iff_mem_elemsNoExotics (F : FluxesFive) :
F.NoExotics ∧ F.HasNoZero ↔ F ∈ elemsNoExotics := by F:FluxesFive⊢ F.NoExotics ∧ F.HasNoZero ↔ F ∈ elemsNoExotics
constructor mp F:FluxesFive⊢ F.NoExotics ∧ F.HasNoZero → F ∈ elemsNoExoticsmpr F:FluxesFive⊢ F ∈ elemsNoExotics → F.NoExotics ∧ F.HasNoZero
· mp F:FluxesFive⊢ F.NoExotics ∧ F.HasNoZero → F ∈ elemsNoExotics exact fun ⟨h1, h2⟩ => mem_elemsNoExotics_of_noExotics F h1 h2 All goals completed! 🐙
· mpr F:FluxesFive⊢ F ∈ elemsNoExotics → F.NoExotics ∧ F.HasNoZero exact fun h => ⟨noExotics_of_mem_elemsNoExotics F h, hasNoZero_of_mem_elemsNoExotics F h⟩ All goals completed! 🐙
B. All terms of FluxesTen obeying NoExotics and HasNoZero
B.1. The allowed fluxes in a FluxesTen which obeys NoExotics and HasNoZero
lemma mem_mem_finset_of_noExotics (F : FluxesTen) (hF : F.NoExotics) (hnZ : F.HasNoZero)
(x : Fluxes) (hx : x ∈ F) :
x ∈ ({⟨1, -1⟩, ⟨1, 0⟩, ⟨1, 1⟩, ⟨2, -1⟩, ⟨2, 0⟩, ⟨2, 1⟩, ⟨3, 0⟩} : Finset Fluxes) := by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ F⊢ x ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }}
rcases x with f F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ F⊢ x ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }}
simp only [Int.reduceNeg, Finset.mem_insert, Finset.mem_singleton] F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ F⊢ x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 2, N := -1 } ∨ x = { M := 2, N := 0 } ∨ x = { M := 2, N := 1 } ∨ x = { M := 3, N := 0 }
have hQ1 := F.mem_chiralIndicesOfQ_mem_of_noExotics hF x.M (Multiset.mem_map.mpr ⟨x, hx, rfl⟩) F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhQ1:x.M ∈ {0, 1, 2, 3}⊢ x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 2, N := -1 } ∨ x = { M := 2, N := 0 } ∨ x = { M := 2, N := 1 } ∨ x = { M := 3, N := 0 }
have hU1 := F.mem_chiralIndicesOfU_mem_of_noExotics hF (x.M - x.N)
(Multiset.mem_map.mpr ⟨x, hx, rfl⟩) F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhQ1:x.M ∈ {0, 1, 2, 3}hU1:x.M - x.N ∈ {0, 1, 2, 3}⊢ x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 2, N := -1 } ∨ x = { M := 2, N := 0 } ∨ x = { M := 2, N := 1 } ∨ x = { M := 3, N := 0 }
have hE1 := F.mem_chiralIndicesOfE_mem_of_noExotics hF (x.M + x.N)
(Multiset.mem_map.mpr ⟨x, hx, rfl⟩) F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhQ1:x.M ∈ {0, 1, 2, 3}hU1:x.M - x.N ∈ {0, 1, 2, 3}hE1:x.M + x.N ∈ {0, 1, 2, 3}⊢ x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 2, N := -1 } ∨ x = { M := 2, N := 0 } ∨ x = { M := 2, N := 1 } ∨ x = { M := 3, N := 0 }
have h0 : ¬ x = 0 := by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ F⊢ x ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }} F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhQ1:x.M ∈ {0, 1, 2, 3}hU1:x.M - x.N ∈ {0, 1, 2, 3}hE1:x.M + x.N ∈ {0, 1, 2, 3}h0:¬x = 0⊢ x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 2, N := -1 } ∨ x = { M := 2, N := 0 } ∨ x = { M := 2, N := 1 } ∨ x = { M := 3, N := 0 }
by_contra hn F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhQ1:x.M ∈ {0, 1, 2, 3}hU1:x.M - x.N ∈ {0, 1, 2, 3}hE1:x.M + x.N ∈ {0, 1, 2, 3}hn:x = 0⊢ False F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhQ1:x.M ∈ {0, 1, 2, 3}hU1:x.M - x.N ∈ {0, 1, 2, 3}hE1:x.M + x.N ∈ {0, 1, 2, 3}h0:¬x = 0⊢ x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 2, N := -1 } ∨ x = { M := 2, N := 0 } ∨ x = { M := 2, N := 1 } ∨ x = { M := 3, N := 0 }
subst hn F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerohx:0 ∈ FhQ1:Fluxes.M 0 ∈ {0, 1, 2, 3}hU1:Fluxes.M 0 - Fluxes.N 0 ∈ {0, 1, 2, 3}hE1:Fluxes.M 0 + Fluxes.N 0 ∈ {0, 1, 2, 3}⊢ False F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhQ1:x.M ∈ {0, 1, 2, 3}hU1:x.M - x.N ∈ {0, 1, 2, 3}hE1:x.M + x.N ∈ {0, 1, 2, 3}h0:¬x = 0⊢ x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 2, N := -1 } ∨ x = { M := 2, N := 0 } ∨ x = { M := 2, N := 1 } ∨ x = { M := 3, N := 0 }
exact hnZ hx F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhQ1:x.M ∈ {0, 1, 2, 3}hU1:x.M - x.N ∈ {0, 1, 2, 3}hE1:x.M + x.N ∈ {0, 1, 2, 3}h0:¬x = 0⊢ x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 2, N := -1 } ∨ x = { M := 2, N := 0 } ∨ x = { M := 2, N := 1 } ∨ x = { M := 3, N := 0 } F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ FhQ1:x.M ∈ {0, 1, 2, 3}hU1:x.M - x.N ∈ {0, 1, 2, 3}hE1:x.M + x.N ∈ {0, 1, 2, 3}h0:¬x = 0⊢ x = { M := 1, N := -1 } ∨
x = { M := 1, N := 0 } ∨
x = { M := 1, N := 1 } ∨
x = { M := 2, N := -1 } ∨ x = { M := 2, N := 0 } ∨ x = { M := 2, N := 1 } ∨ x = { M := 3, N := 0 }
rcases x with ⟨M, N⟩ F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤN:ℤhx:{ M := M, N := N } ∈ FhQ1:{ M := M, N := N }.M ∈ {0, 1, 2, 3}hU1:{ M := M, N := N }.M - { M := M, N := N }.N ∈ {0, 1, 2, 3}hE1:{ M := M, N := N }.M + { M := M, N := N }.N ∈ {0, 1, 2, 3}h0:¬{ M := M, N := N } = 0⊢ { M := M, N := N } = { M := 1, N := -1 } ∨
{ M := M, N := N } = { M := 1, N := 0 } ∨
{ M := M, N := N } = { M := 1, N := 1 } ∨
{ M := M, N := N } = { M := 2, N := -1 } ∨
{ M := M, N := N } = { M := 2, N := 0 } ∨
{ M := M, N := N } = { M := 2, N := 1 } ∨ { M := M, N := N } = { M := 3, N := 0 }
let D := M + N F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤN:ℤhx:{ M := M, N := N } ∈ FhQ1:{ M := M, N := N }.M ∈ {0, 1, 2, 3}hU1:{ M := M, N := N }.M - { M := M, N := N }.N ∈ {0, 1, 2, 3}hE1:{ M := M, N := N }.M + { M := M, N := N }.N ∈ {0, 1, 2, 3}h0:¬{ M := M, N := N } = 0D:ℤ := M + N⊢ { M := M, N := N } = { M := 1, N := -1 } ∨
{ M := M, N := N } = { M := 1, N := 0 } ∨
{ M := M, N := N } = { M := 1, N := 1 } ∨
{ M := M, N := N } = { M := 2, N := -1 } ∨
{ M := M, N := N } = { M := 2, N := 0 } ∨
{ M := M, N := N } = { M := 2, N := 1 } ∨ { M := M, N := N } = { M := 3, N := 0 }
have hd : N = D - M := by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerox:Fluxeshx:x ∈ F⊢ x ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }} F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤN:ℤhx:{ M := M, N := N } ∈ FhQ1:{ M := M, N := N }.M ∈ {0, 1, 2, 3}hU1:{ M := M, N := N }.M - { M := M, N := N }.N ∈ {0, 1, 2, 3}hE1:{ M := M, N := N }.M + { M := M, N := N }.N ∈ {0, 1, 2, 3}h0:¬{ M := M, N := N } = 0D:ℤ := M + Nhd:N = D - M⊢ { M := M, N := N } = { M := 1, N := -1 } ∨
{ M := M, N := N } = { M := 1, N := 0 } ∨
{ M := M, N := N } = { M := 1, N := 1 } ∨
{ M := M, N := N } = { M := 2, N := -1 } ∨
{ M := M, N := N } = { M := 2, N := 0 } ∨
{ M := M, N := N } = { M := 2, N := 1 } ∨ { M := M, N := N } = { M := 3, N := 0 } omega F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤN:ℤhx:{ M := M, N := N } ∈ FhQ1:{ M := M, N := N }.M ∈ {0, 1, 2, 3}hU1:{ M := M, N := N }.M - { M := M, N := N }.N ∈ {0, 1, 2, 3}hE1:{ M := M, N := N }.M + { M := M, N := N }.N ∈ {0, 1, 2, 3}h0:¬{ M := M, N := N } = 0D:ℤ := M + Nhd:N = D - M⊢ { M := M, N := N } = { M := 1, N := -1 } ∨
{ M := M, N := N } = { M := 1, N := 0 } ∨
{ M := M, N := N } = { M := 1, N := 1 } ∨
{ M := M, N := N } = { M := 2, N := -1 } ∨
{ M := M, N := N } = { M := 2, N := 0 } ∨
{ M := M, N := N } = { M := 2, N := 1 } ∨ { M := M, N := N } = { M := 3, N := 0 } F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤN:ℤhx:{ M := M, N := N } ∈ FhQ1:{ M := M, N := N }.M ∈ {0, 1, 2, 3}hU1:{ M := M, N := N }.M - { M := M, N := N }.N ∈ {0, 1, 2, 3}hE1:{ M := M, N := N }.M + { M := M, N := N }.N ∈ {0, 1, 2, 3}h0:¬{ M := M, N := N } = 0D:ℤ := M + Nhd:N = D - M⊢ { M := M, N := N } = { M := 1, N := -1 } ∨
{ M := M, N := N } = { M := 1, N := 0 } ∨
{ M := M, N := N } = { M := 1, N := 1 } ∨
{ M := M, N := N } = { M := 2, N := -1 } ∨
{ M := M, N := N } = { M := 2, N := 0 } ∨
{ M := M, N := N } = { M := 2, N := 1 } ∨ { M := M, N := N } = { M := 3, N := 0 }
generalize D = D' at * F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤN:ℤhx:{ M := M, N := N } ∈ FhQ1:{ M := M, N := N }.M ∈ {0, 1, 2, 3}hU1:{ M := M, N := N }.M - { M := M, N := N }.N ∈ {0, 1, 2, 3}hE1:{ M := M, N := N }.M + { M := M, N := N }.N ∈ {0, 1, 2, 3}h0:¬{ M := M, N := N } = 0D:ℤ := M + ND':ℤhd:N = D' - M⊢ { M := M, N := N } = { M := 1, N := -1 } ∨
{ M := M, N := N } = { M := 1, N := 0 } ∨
{ M := M, N := N } = { M := 1, N := 1 } ∨
{ M := M, N := N } = { M := 2, N := -1 } ∨
{ M := M, N := N } = { M := 2, N := 0 } ∨
{ M := M, N := N } = { M := 2, N := 1 } ∨ { M := M, N := N } = { M := 3, N := 0 }
subst hd F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤD':ℤhx:{ M := M, N := D' - M } ∈ FhQ1:{ M := M, N := D' - M }.M ∈ {0, 1, 2, 3}hU1:{ M := M, N := D' - M }.M - { M := M, N := D' - M }.N ∈ {0, 1, 2, 3}hE1:{ M := M, N := D' - M }.M + { M := M, N := D' - M }.N ∈ {0, 1, 2, 3}h0:¬{ M := M, N := D' - M } = 0D:ℤ := M + (D' - M)⊢ { M := M, N := D' - M } = { M := 1, N := -1 } ∨
{ M := M, N := D' - M } = { M := 1, N := 0 } ∨
{ M := M, N := D' - M } = { M := 1, N := 1 } ∨
{ M := M, N := D' - M } = { M := 2, N := -1 } ∨
{ M := M, N := D' - M } = { M := 2, N := 0 } ∨
{ M := M, N := D' - M } = { M := 2, N := 1 } ∨ { M := M, N := D' - M } = { M := 3, N := 0 }
simp only [add_sub_cancel] at hE1 F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤD':ℤhx:{ M := M, N := D' - M } ∈ FhQ1:{ M := M, N := D' - M }.M ∈ {0, 1, 2, 3}hU1:{ M := M, N := D' - M }.M - { M := M, N := D' - M }.N ∈ {0, 1, 2, 3}h0:¬{ M := M, N := D' - M } = 0D:ℤ := M + (D' - M)hE1:D' ∈ {0, 1, 2, 3}⊢ { M := M, N := D' - M } = { M := 1, N := -1 } ∨
{ M := M, N := D' - M } = { M := 1, N := 0 } ∨
{ M := M, N := D' - M } = { M := 1, N := 1 } ∨
{ M := M, N := D' - M } = { M := 2, N := -1 } ∨
{ M := M, N := D' - M } = { M := 2, N := 0 } ∨
{ M := M, N := D' - M } = { M := 2, N := 1 } ∨ { M := M, N := D' - M } = { M := 3, N := 0 }
simp_all only [Int.reduceNeg, Fluxes.mk.injEq] F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤD':ℤhx:{ M := M, N := D' - M } ∈ FD:ℤ := M + (D' - M)hQ1:M ∈ {0, 1, 2, 3}hU1:M - (D' - M) ∈ {0, 1, 2, 3}h0:¬{ M := M, N := D' - M } = 0hE1:D' ∈ {0, 1, 2, 3}⊢ M = 1 ∧ D' - M = -1 ∨
M = 1 ∧ D' - M = 0 ∨
M = 1 ∧ D' - M = 1 ∨ M = 2 ∧ D' - M = -1 ∨ M = 2 ∧ D' - M = 0 ∨ M = 2 ∧ D' - M = 1 ∨ M = 3 ∧ D' - M = 0
clear hx D F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤD':ℤhQ1:M ∈ {0, 1, 2, 3}hU1:M - (D' - M) ∈ {0, 1, 2, 3}h0:¬{ M := M, N := D' - M } = 0hE1:D' ∈ {0, 1, 2, 3}⊢ M = 1 ∧ D' - M = -1 ∨
M = 1 ∧ D' - M = 0 ∨
M = 1 ∧ D' - M = 1 ∨ M = 2 ∧ D' - M = -1 ∨ M = 2 ∧ D' - M = 0 ∨ M = 2 ∧ D' - M = 1 ∨ M = 3 ∧ D' - M = 0
revert h0 hU1 F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤD':ℤhQ1:M ∈ {0, 1, 2, 3}hE1:D' ∈ {0, 1, 2, 3}⊢ M - (D' - M) ∈ {0, 1, 2, 3} →
¬{ M := M, N := D' - M } = 0 →
M = 1 ∧ D' - M = -1 ∨
M = 1 ∧ D' - M = 0 ∨
M = 1 ∧ D' - M = 1 ∨ M = 2 ∧ D' - M = -1 ∨ M = 2 ∧ D' - M = 0 ∨ M = 2 ∧ D' - M = 1 ∨ M = 3 ∧ D' - M = 0
revert D' F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroM:ℤhQ1:M ∈ {0, 1, 2, 3}⊢ ∀ D' ∈ {0, 1, 2, 3},
M - (D' - M) ∈ {0, 1, 2, 3} →
¬{ M := M, N := D' - M } = 0 →
M = 1 ∧ D' - M = -1 ∨
M = 1 ∧ D' - M = 0 ∨
M = 1 ∧ D' - M = 1 ∨ M = 2 ∧ D' - M = -1 ∨ M = 2 ∧ D' - M = 0 ∨ M = 2 ∧ D' - M = 1 ∨ M = 3 ∧ D' - M = 0
revert M F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZero⊢ ∀ M ∈ {0, 1, 2, 3},
∀ D' ∈ {0, 1, 2, 3},
M - (D' - M) ∈ {0, 1, 2, 3} →
¬{ M := M, N := D' - M } = 0 →
M = 1 ∧ D' - M = -1 ∨
M = 1 ∧ D' - M = 0 ∨
M = 1 ∧ D' - M = 1 ∨ M = 2 ∧ D' - M = -1 ∨ M = 2 ∧ D' - M = 0 ∨ M = 2 ∧ D' - M = 1 ∨ M = 3 ∧ D' - M = 0
decide All goals completed! 🐙
B.2. Sufficient condition for a set to contain allowed subsets of card n.succ based on n
lemma subset_le_mem_of_card_eq_succ {n : ℕ} {F : FluxesTen} (hF : F.NoExotics) (hnZ : F.HasNoZero)
(S : Multiset Fluxes) (hcard : S.card = n.succ) (hS : S ≤ F) {Y X : Finset (Multiset Fluxes)}
(hY : ∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ Y)
(hX : ∀ a ∈ ({⟨1, -1⟩, ⟨1, 0⟩, ⟨1, 1⟩, ⟨2, -1⟩, ⟨2, 0⟩, ⟨2, 1⟩, ⟨3, 0⟩} : Finset Fluxes),
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 →
a ::ₘ y ∈ X) :
S ∈ X := by n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS:Multiset Fluxeshcard:S.card = n.succhS:S ≤ FY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ X⊢ S ∈ X
have hSum1 := chiralIndicesOfQ_subset_sum_le_three_of_noExotics F hF S hS n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS:Multiset Fluxeshcard:S.card = n.succhS:S ≤ FY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ XhSum1:(Multiset.map (fun x => x.M) S).sum ≤ 3⊢ S ∈ X
have hSum2 := chiralIndicesOfU_subset_sum_le_three_of_noExotics F hF S hS n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS:Multiset Fluxeshcard:S.card = n.succhS:S ≤ FY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ XhSum1:(Multiset.map (fun x => x.M) S).sum ≤ 3hSum2:(Multiset.map (fun x => x.M - x.N) S).sum ≤ 3⊢ S ∈ X
have hsum3 := chiralIndicesOfE_subset_sum_le_three_of_noExotics F hF S hS n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS:Multiset Fluxeshcard:S.card = n.succhS:S ≤ FY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ XhSum1:(Multiset.map (fun x => x.M) S).sum ≤ 3hSum2:(Multiset.map (fun x => x.M - x.N) S).sum ≤ 3hsum3:(Multiset.map (fun x => x.M + x.N) S).sum ≤ 3⊢ S ∈ X
revert S n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ X⊢ ∀ (S : Multiset Fluxes),
S.card = n.succ →
S ≤ F →
(Multiset.map (fun x => x.M) S).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → S ∈ X
apply Multiset.induction empty n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ X⊢ Multiset.card 0 = n.succ →
0 ≤ F →
(Multiset.map (fun x => x.M) 0).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) 0).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) 0).sum ≤ 3 → 0 ∈ Xcons n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ X⊢ ∀ (a : Fluxes) (s : Multiset Fluxes),
(s.card = n.succ →
s ≤ F →
(Multiset.map (fun x => x.M) s).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) s).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) s).sum ≤ 3 → s ∈ X) →
(a ::ₘ s).card = n.succ →
a ::ₘ s ≤ F →
(Multiset.map (fun x => x.M) (a ::ₘ s)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ s)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ s)).sum ≤ 3 → a ::ₘ s ∈ X
· empty n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ X⊢ Multiset.card 0 = n.succ →
0 ≤ F →
(Multiset.map (fun x => x.M) 0).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) 0).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) 0).sum ≤ 3 → 0 ∈ X simp All goals completed! 🐙
intro a S ih hcard hle hsum1 hsum2 hsum3 cons n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F →
(Multiset.map (fun x => x.M) S).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → S ∈ Xhcard:(a ::ₘ S).card = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M - x.N) (a ::ₘ S)).sum ≤ 3hsum3:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3⊢ a ::ₘ S ∈ X
have hsub : S ≤ F := (S.le_cons_self a).trans hle cons n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F →
(Multiset.map (fun x => x.M) S).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → S ∈ Xhcard:(a ::ₘ S).card = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M - x.N) (a ::ₘ S)).sum ≤ 3hsum3:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsub:S ≤ F⊢ a ::ₘ S ∈ X
have ha : a ∈ F := Multiset.mem_of_le hle (S.mem_cons_self a) cons n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F →
(Multiset.map (fun x => x.M) S).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → S ∈ Xhcard:(a ::ₘ S).card = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M - x.N) (a ::ₘ S)).sum ≤ 3hsum3:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsub:S ≤ Fha:a ∈ F⊢ a ::ₘ S ∈ X
rw [Multiset.card_cons cons n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F →
(Multiset.map (fun x => x.M) S).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → S ∈ Xhcard:S.card + 1 = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M - x.N) (a ::ₘ S)).sum ≤ 3hsum3:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsub:S ≤ Fha:a ∈ F⊢ a ::ₘ S ∈ X cons n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F →
(Multiset.map (fun x => x.M) S).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → S ∈ Xhcard:S.card + 1 = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M - x.N) (a ::ₘ S)).sum ≤ 3hsum3:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsub:S ≤ Fha:a ∈ F⊢ a ::ₘ S ∈ X] at hcard cons n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F →
(Multiset.map (fun x => x.M) S).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → S ∈ Xhcard:S.card + 1 = n.succhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M - x.N) (a ::ₘ S)).sum ≤ 3hsum3:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsub:S ≤ Fha:a ∈ F⊢ a ::ₘ S ∈ X
simp at hcard cons n:ℕF:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroY:Finset (Multiset Fluxes)X:Finset (Multiset Fluxes)hY:∀ (S : Multiset Fluxes), S.card = n → S ≤ F → S ∈ YhX:∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ Y,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ Xa:FluxesS:Multiset Fluxesih:S.card = n.succ →
S ≤ F →
(Multiset.map (fun x => x.M) S).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) S).sum ≤ 3 → (Multiset.map (fun x => x.M + x.N) S).sum ≤ 3 → S ∈ Xhle:a ::ₘ S ≤ Fhsum1:(Multiset.map (fun x => x.M) (a ::ₘ S)).sum ≤ 3hsum2:(Multiset.map (fun x => x.M - x.N) (a ::ₘ S)).sum ≤ 3hsum3:(Multiset.map (fun x => x.M + x.N) (a ::ₘ S)).sum ≤ 3hsub:S ≤ Fha:a ∈ Fhcard:S.card = n⊢ a ::ₘ S ∈ X
exact hX a (mem_mem_finset_of_noExotics F hF hnZ a ha) S (hY S hcard hsub) hsum1 hsum2 hsum3 All goals completed! 🐙B.3. Statement of the allowed subsets of each cardinality
The allowed subsets of a FluxesTen which has no exotics or zeros.
def noExoticsSubsets : (n : ℕ) → Finset (Multiset Fluxes)
| 0 => {{}}
| 1 => {{⟨1, -1⟩}, {⟨1, 0⟩}, {⟨1, 1⟩}, {⟨2, -1⟩}, {⟨2, 0⟩}, {⟨2, 1⟩}, {⟨3, 0⟩}}
| 2 => {{⟨1, -1⟩, ⟨1, 0⟩}, {⟨1, -1⟩, ⟨1, 1⟩}, {⟨1, -1⟩, ⟨2, 1⟩},
{⟨1, 0⟩, ⟨1, 0⟩}, {⟨1, 0⟩, ⟨1, 1⟩}, {⟨1, 0⟩, ⟨2, 0⟩}, {⟨1, 1⟩, ⟨2, -1⟩}}
| 3 => {{⟨1, -1⟩, ⟨1, 0⟩, ⟨1, 1⟩}, {⟨1, 0⟩, ⟨1, 0⟩, ⟨1, 0⟩}}
| _ + 4 => ∅B.4. Lemma that stated allowed subsets are complete
lemma subset_of_fluxesTen_mem_noExoticsSubsets_of_noExotics {F : FluxesTen} (hF : F.NoExotics)
(hnZ : F.HasNoZero) (S : Multiset Fluxes) (hS : S ≤ F) :
S ∈ noExoticsSubsets S.card := recS S.card S rfl hS
where recS : (n : ℕ) → (S : Multiset Fluxes) → S.card = n → S ≤ F → S ∈ noExoticsSubsets n
| 0, S, hcard, hS => F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 0hS:S ≤ F⊢ S ∈ noExoticsSubsets 0 by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 0hS:S ≤ F⊢ S ∈ noExoticsSubsets 0
rw [Multiset.card_eq_zero F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S = 0hS:S ≤ F⊢ S ∈ noExoticsSubsets 0 F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S = 0hS:S ≤ F⊢ S ∈ noExoticsSubsets 0] at hcard F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S = 0hS:S ≤ F⊢ S ∈ noExoticsSubsets 0
subst hcard F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS:Multiset FluxeshS✝:S✝ ≤ FhS:0 ≤ F⊢ 0 ∈ noExoticsSubsets 0
simp [noExoticsSubsets] All goals completed! 🐙
| 1, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 0 S hc) <| by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 1hS:S ≤ F⊢ ∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 0,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 1 decide All goals completed! 🐙
| 2, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 1 S hc) <| by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 2hS:S ≤ F⊢ ∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 1,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 2 decide All goals completed! 🐙
| 3, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 2 S hc) <| by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 3hS:S ≤ F⊢ ∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 2,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 3 decide All goals completed! 🐙
| 4, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS 3 S hc) <| by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ FS:Multiset Fluxeshcard:S.card = 4hS:S ≤ F⊢ ∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets 3,
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets 4 decide All goals completed! 🐙
| (n + 1) + 4, S, hcard, hS => subset_le_mem_of_card_eq_succ hF hnZ S hcard hS
(fun S hc => recS (n + 4) S hc) <| by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeroS✝:Multiset FluxeshS✝:S✝ ≤ Fn:ℕS:Multiset Fluxeshcard:S.card = n + 1 + 4hS:S ≤ F⊢ ∀
a ∈
{{ M := 1, N := -1 }, { M := 1, N := 0 }, { M := 1, N := 1 }, { M := 2, N := -1 }, { M := 2, N := 0 },
{ M := 2, N := 1 }, { M := 3, N := 0 }},
∀ y ∈ noExoticsSubsets (n + 4),
(Multiset.map (fun x => x.M) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M - x.N) (a ::ₘ y)).sum ≤ 3 →
(Multiset.map (fun x => x.M + x.N) (a ::ₘ y)).sum ≤ 3 → a ::ₘ y ∈ noExoticsSubsets (n + 1 + 4)
simp [noExoticsSubsets] All goals completed! 🐙
B.5. Terms of FluxesTen obeying NoExotics and HasNoZero have card ≤ 3
lemma card_le_three_of_noExotics {F : FluxesTen} (hF : F.NoExotics) (hnZ : F.HasNoZero) :
F.card ≤ 3 := by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZero⊢ Multiset.card F ≤ 3
have hx := subset_of_fluxesTen_mem_noExoticsSubsets_of_noExotics hF hnZ F
(Preorder.le_refl F) F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZerohx:F ∈ noExoticsSubsets (Multiset.card F)⊢ Multiset.card F ≤ 3
generalize F.card = n at * F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets n⊢ n ≤ 3
match n with
| 0 => F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 0⊢ 0 ≤ 3 simp All goals completed! 🐙
| 1 => F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 1⊢ 1 ≤ 3 simp All goals completed! 🐙
| 2 => F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 2⊢ 2 ≤ 3 simp All goals completed! 🐙
| 3 => F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeron:ℕhx:F ∈ noExoticsSubsets 3⊢ 3 ≤ 3 simp All goals completed! 🐙
| _ + 4 => F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZeron:ℕn✝:ℕhx:F ∈ noExoticsSubsets (n✝ + 4)⊢ n✝ + 4 ≤ 3 simp [noExoticsSubsets] at hx All goals completed! 🐙
lemma card_mem_range_four_of_noExotics {F : FluxesTen} (hF : F.NoExotics) (hnZ : F.HasNoZero) :
F.card ∈ Finset.range 4 := by F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZero⊢ Multiset.card F ∈ Finset.range 4
rw [Finset.mem_range_succ_iff F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZero⊢ Multiset.card F ≤ 3 F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZero⊢ Multiset.card F ≤ 3] F:FluxesTenhF:F.NoExoticshnZ:F.HasNoZero⊢ Multiset.card F ≤ 3
exact card_le_three_of_noExotics hF hnZ All goals completed! 🐙
B.6. Terms of FluxesTen obeying NoExotics and HasNoZero are in elemsNoExotics
lemma mem_elemsNoExotics_of_noExotics (F : FluxesTen) (hNE : F.NoExotics) (hnZ : F.HasNoZero) :
F ∈ elemsNoExotics := by F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZero⊢ F ∈ elemsNoExotics
have h1 := card_mem_range_four_of_noExotics hNE hnZ F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZeroh1:Multiset.card F ∈ Finset.range 4⊢ F ∈ elemsNoExotics
have hF := subset_of_fluxesTen_mem_noExoticsSubsets_of_noExotics hNE hnZ F
(Preorder.le_refl F) F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZeroh1:Multiset.card F ∈ Finset.range 4hF:F ∈ noExoticsSubsets (Multiset.card F)⊢ F ∈ elemsNoExotics
simp only [Finset.range, Multiset.range_succ, Multiset.range_zero, Multiset.cons_zero,
Finset.mk_cons, Finset.cons_eq_insert, Finset.mem_insert, Finset.mem_mk,
Multiset.mem_singleton] at h1 F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)h1:Multiset.card F = 3 ∨ Multiset.card F = 2 ∨ Multiset.card F = 1 ∨ Multiset.card F = 0⊢ F ∈ elemsNoExotics
rcases h1 with hr | hr | hr | hr inl F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 3⊢ F ∈ elemsNoExoticsinr.inl F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 2⊢ F ∈ elemsNoExoticsinr.inr.inl F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 1⊢ F ∈ elemsNoExoticsinr.inr.inr F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 0⊢ F ∈ elemsNoExotics
all_goals
· inr.inr.inr F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets (Multiset.card F)hr:Multiset.card F = 0⊢ F ∈ elemsNoExotics rw [hr inl F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets 3hr:Multiset.card F = 3⊢ F ∈ elemsNoExotics inr.inr.inr F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets 0hr:Multiset.card F = 0⊢ F ∈ elemsNoExotics] inr.inr.inl F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets 1hr:Multiset.card F = 1⊢ F ∈ elemsNoExotics inr.inr.inr F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets 0hr:Multiset.card F = 0⊢ F ∈ elemsNoExotics at hFinr.inr.inr F:FluxesTenhNE:F.NoExoticshnZ:F.HasNoZerohF:F ∈ noExoticsSubsets 0hr:Multiset.card F = 0⊢ F ∈ elemsNoExotics
clear hr hnZ inr.inr.inr F:FluxesTenhNE:F.NoExoticshF:F ∈ noExoticsSubsets 0⊢ F ∈ elemsNoExotics
revert hNE inr.inr.inr F:FluxesTenhF:F ∈ noExoticsSubsets 0⊢ F.NoExotics → F ∈ elemsNoExotics
revert F inr.inr.inr ⊢ ∀ F ∈ noExoticsSubsets 0, F.NoExotics → F ∈ elemsNoExotics
decide All goals completed! 🐙
B.7. Terms of FluxesTen obey NoExotics and HasNoZero if and only if in elemsNoExotics
Completeness of elemsNoExotics, that is, every element of FluxesTen
which obeys NoExotics is an element of elemsNoExotics, and every
element of elemsNoExotics obeys NoExotics.
lemma noExotics_iff_mem_elemsNoExotics (F : FluxesTen) :
F.NoExotics ∧ F.HasNoZero ↔ F ∈ elemsNoExotics := by F:FluxesTen⊢ F.NoExotics ∧ F.HasNoZero ↔ F ∈ elemsNoExotics
constructor mp F:FluxesTen⊢ F.NoExotics ∧ F.HasNoZero → F ∈ elemsNoExoticsmpr F:FluxesTen⊢ F ∈ elemsNoExotics → F.NoExotics ∧ F.HasNoZero
· mp F:FluxesTen⊢ F.NoExotics ∧ F.HasNoZero → F ∈ elemsNoExotics exact fun h => mem_elemsNoExotics_of_noExotics F h.1 h.2 All goals completed! 🐙
· mpr F:FluxesTen⊢ F ∈ elemsNoExotics → F.NoExotics ∧ F.HasNoZero exact fun h => ⟨noExotics_of_mem_elemsNoExotics F h, hasNoZero_of_mem_elemsNoExotics F h⟩ All goals completed! 🐙