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.CompletionsMinimal super set
i. Overview
The minimally super set of a spectrum of charges x is the finite set of
spectrums of charges y such that x ⊆ y and there is no z such that x ⊆ z ⊂ y.
The minimal super set is defined using a finite set of possible charges in the 5-bar and 10
representations of su(5). This is to ensure that the minimal super set is itself finite.
In this file we define the minimal super set and prove some basic properties of it.
ii. Key results
minimalSuperSet: the minimal super set of a charge spectrum.
exists_minimalSuperSet: the existence of a member of the minimal super set
between two charge spectra.
subset_insert_filter_card_zero: a statement related to closure properties of multisets
of charge spectra under a proposition p satisfying certain properties. The proof
of this result relies on induction on minimal super sets.
iii. Table of contents
A. The minimal super set
A.1. Members of the minimal super set are super sets
A.2. Self is not a member of the minimal super set
A.3. Cardinality of member of the minimal super set
A.4. Inserting charges and minimal super sets
A.5. Existence of a minimal super set member between two charges
B. Induction properties on the minimal super set
B.1. Lifting propositions from minimal super sets to super sets
B.2. Closure of multisets based on proposition for minimal super sets
B.3. Closure of multisets based on propositions
iv. References
There are no known references for the material in this file.
@[expose] public sectionA. The minimal super set
We define the minimal super set.
Given a collection of charges x in ofFinset S5 S10,
the minimal charges y in ofFinset S5 S10 which are a super sets of x.
def minimalSuperSet (S5 S10 : Finset 𝓩) (x : ChargeSpectrum 𝓩) : Finset (ChargeSpectrum 𝓩) :=
let SqHd := if x.qHd.isSome then ∅ else S5.map ⟨fun y => ⟨some y, x.qHu, x.Q5, x.Q10⟩,
𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩⊢ Function.Injective fun y => { qHd := some y, qHu := x.qHu, Q5 := x.Q5, Q10 := x.Q10 } 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y1:𝓩y2:𝓩⊢ (fun y => { qHd := some y, qHu := x.qHu, Q5 := x.Q5, Q10 := x.Q10 }) y1 =
(fun y => { qHd := some y, qHu := x.qHu, Q5 := x.Q5, Q10 := x.Q10 }) y2 →
y1 = y2; All goals completed! 🐙⟩
let SqHu := if x.qHu.isSome then ∅ else S5.image fun y => ⟨x.qHd, some y, x.Q5, x.Q10⟩
let SQ5 := (S5 \ x.Q5).image (fun y => ⟨x.qHd, x.qHu, insert y x.Q5, x.Q10⟩)
let SQ10 := (S10 \ x.Q10).image (fun y => ⟨x.qHd, x.qHu, x.Q5, insert y x.Q10⟩)
(SqHd ∪ SqHu ∪ SQ5 ∪ SQ10).erase xA.1. Members of the minimal super set are super sets
We show the basic property of a member y ∈ minimalSuperSet S5 S10 x, that is
that they are indeed super sets, namely x ⊆ y.
𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }⊢ hasSubset.1 { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }
{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 }
simp [hasSubset] All goals completed! 🐙A.2. Self is not a member of the minimal super set
A charge spectrum is not a member of its own minimal super set. We give two different forms of this result.
@[simp]
lemma self_not_mem_minimalSuperSet (S5 S10 : Finset 𝓩) (x : ChargeSpectrum 𝓩) :
x ∉ minimalSuperSet S5 S10 x := by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩⊢ x ∉ minimalSuperSet S5 S10 x
simp [minimalSuperSet] All goals completed! 🐙lemma self_ne_mem_minimalSuperSet (S5 S10 : Finset 𝓩) (x y : ChargeSpectrum 𝓩)
(hy : y ∈ minimalSuperSet S5 S10 x) : x ≠ y := by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy:y ∈ minimalSuperSet S5 S10 x⊢ x ≠ y
by_contra h 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy:y ∈ minimalSuperSet S5 S10 xh:x = y⊢ False
subst h 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩hy:x ∈ minimalSuperSet S5 S10 x⊢ False
simp at hy All goals completed! 🐙A.3. Cardinality of member of the minimal super set
We show that any member y of the minimal super set of x has cardinality one more than
that of x. I.e. it contains exactly one more unique charge.
lemma card_of_mem_minimalSuperSet {S5 S10 : Finset 𝓩} {x : ChargeSpectrum 𝓩}
(y : ChargeSpectrum 𝓩) (hy : y ∈ minimalSuperSet S5 S10 x) :
card y = card x + 1 := by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy:y ∈ minimalSuperSet S5 S10 x⊢ y.card = x.card + 1
simp [minimalSuperSet] at hy 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy:¬y = x ∧
((y ∈
if x.qHd.isSome = true then ∅
else Finset.map { toFun := fun y => { qHd := some y, qHu := x.qHu, Q5 := x.Q5, Q10 := x.Q10 }, inj' := ⋯ } S5) ∨
(y ∈
if x.qHu.isSome = true then ∅
else Finset.image (fun y => { qHd := x.qHd, qHu := some y, Q5 := x.Q5, Q10 := x.Q10 }) S5) ∨
(∃ a, (a ∈ S5 ∧ a ∉ x.Q5) ∧ { qHd := x.qHd, qHu := x.qHu, Q5 := insert a x.Q5, Q10 := x.Q10 } = y) ∨
∃ a, (a ∈ S10 ∧ a ∉ x.Q10) ∧ { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert a x.Q10 } = y)⊢ y.card = x.card + 1
rcases hy with ⟨hy1, hr | hr | hr | hr⟩ inl 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy1:¬y = xhr:y ∈
if x.qHd.isSome = true then ∅
else Finset.map { toFun := fun y => { qHd := some y, qHu := x.qHu, Q5 := x.Q5, Q10 := x.Q10 }, inj' := ⋯ } S5⊢ y.card = x.card + 1inr.inl 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy1:¬y = xhr:y ∈
if x.qHu.isSome = true then ∅
else Finset.image (fun y => { qHd := x.qHd, qHu := some y, Q5 := x.Q5, Q10 := x.Q10 }) S5⊢ y.card = x.card + 1inr.inr.inl 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy1:¬y = xhr:∃ a, (a ∈ S5 ∧ a ∉ x.Q5) ∧ { qHd := x.qHd, qHu := x.qHu, Q5 := insert a x.Q5, Q10 := x.Q10 } = y⊢ y.card = x.card + 1inr.inr.inr 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy1:¬y = xhr:∃ a, (a ∈ S10 ∧ a ∉ x.Q10) ∧ { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert a x.Q10 } = y⊢ y.card = x.card + 1
· inl 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy1:¬y = xhr:y ∈
if x.qHd.isSome = true then ∅
else Finset.map { toFun := fun y => { qHd := some y, qHu := x.qHu, Q5 := x.Q5, Q10 := x.Q10 }, inj' := ⋯ } S5⊢ y.card = x.card + 1 match x with
| ⟨none, _, _, _⟩ => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10✝:Finset 𝓩hy1:¬y = { qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }hr:y ∈
if { qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.qHd.isSome = true then ∅
else
Finset.map
{
toFun := fun y =>
{ qHd := some y, qHu := { qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.qHu,
Q5 := { qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.Q5,
Q10 := { qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.Q10 },
inj' := ⋯ }
S5⊢ y.card = { qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.card + 1
simp at hr 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10✝:Finset 𝓩hy1:¬y = { qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }hr:∃ a ∈ S5, { qHd := some a, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ } = y⊢ y.card = { qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.card + 1
obtain ⟨a, ha, rfl⟩ := hr 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5hy1:¬{ qHd := some a, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ } = { qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }⊢ { qHd := some a, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.card =
{ qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.card + 1
simp [card] 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5hy1:¬{ qHd := some a, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ } = { qHd := none, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }⊢ qHu✝.toFinset.card + 1 + Q5✝.card + Q10✝.card = qHu✝.toFinset.card + Q5✝.card + Q10✝.card + 1
omega All goals completed! 🐙
| ⟨some x1, _, _, _⟩ => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10✝:Finset 𝓩hy1:¬y = { qHd := some x1, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }hr:y ∈
if { qHd := some x1, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.qHd.isSome = true then ∅
else
Finset.map
{
toFun := fun y =>
{ qHd := some y, qHu := { qHd := some x1, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.qHu,
Q5 := { qHd := some x1, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.Q5,
Q10 := { qHd := some x1, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.Q10 },
inj' := ⋯ }
S5⊢ y.card = { qHd := some x1, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10✝ }.card + 1
simp at hr All goals completed! 🐙
· inr.inl 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy1:¬y = xhr:y ∈
if x.qHu.isSome = true then ∅
else Finset.image (fun y => { qHd := x.qHd, qHu := some y, Q5 := x.Q5, Q10 := x.Q10 }) S5⊢ y.card = x.card + 1 match x with
| ⟨_, none, _, _⟩ => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩qHd✝:Option 𝓩Q5✝:Finset 𝓩Q10✝:Finset 𝓩hy1:¬y = { qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }hr:y ∈
if { qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }.qHu.isSome = true then ∅
else
Finset.image
(fun y =>
{ qHd := { qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }.qHd, qHu := some y,
Q5 := { qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }.Q5,
Q10 := { qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }.Q10 })
S5⊢ y.card = { qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }.card + 1
simp at hr 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩qHd✝:Option 𝓩Q5✝:Finset 𝓩Q10✝:Finset 𝓩hy1:¬y = { qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }hr:∃ a ∈ S5, { qHd := qHd✝, qHu := some a, Q5 := Q5✝, Q10 := Q10✝ } = y⊢ y.card = { qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }.card + 1
obtain ⟨a, ha, rfl⟩ := hr 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩Q5✝:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5hy1:¬{ qHd := qHd✝, qHu := some a, Q5 := Q5✝, Q10 := Q10✝ } = { qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }⊢ { qHd := qHd✝, qHu := some a, Q5 := Q5✝, Q10 := Q10✝ }.card =
{ qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }.card + 1
simp [card] 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩Q5✝:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5hy1:¬{ qHd := qHd✝, qHu := some a, Q5 := Q5✝, Q10 := Q10✝ } = { qHd := qHd✝, qHu := none, Q5 := Q5✝, Q10 := Q10✝ }⊢ 1 + qHd✝.toFinset.card + Q5✝.card + Q10✝.card = qHd✝.toFinset.card + Q5✝.card + Q10✝.card + 1
omega All goals completed! 🐙
| ⟨_, some x2, _, _⟩ => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩qHd✝:Option 𝓩x2:𝓩Q5✝:Finset 𝓩Q10✝:Finset 𝓩hy1:¬y = { qHd := qHd✝, qHu := some x2, Q5 := Q5✝, Q10 := Q10✝ }hr:y ∈
if { qHd := qHd✝, qHu := some x2, Q5 := Q5✝, Q10 := Q10✝ }.qHu.isSome = true then ∅
else
Finset.image
(fun y =>
{ qHd := { qHd := qHd✝, qHu := some x2, Q5 := Q5✝, Q10 := Q10✝ }.qHd, qHu := some y,
Q5 := { qHd := qHd✝, qHu := some x2, Q5 := Q5✝, Q10 := Q10✝ }.Q5,
Q10 := { qHd := qHd✝, qHu := some x2, Q5 := Q5✝, Q10 := Q10✝ }.Q10 })
S5⊢ y.card = { qHd := qHd✝, qHu := some x2, Q5 := Q5✝, Q10 := Q10✝ }.card + 1
simp at hr All goals completed! 🐙
· inr.inr.inl 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy1:¬y = xhr:∃ a, (a ∈ S5 ∧ a ∉ x.Q5) ∧ { qHd := x.qHd, qHu := x.qHu, Q5 := insert a x.Q5, Q10 := x.Q10 } = y⊢ y.card = x.card + 1 match x with
| ⟨_, _, Q5, _⟩ => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩hy1:¬y = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }hr:∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }.Q5) ∧
{ qHd := { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }.qHd,
qHu := { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }.qHu,
Q5 := insert a { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }.Q5,
Q10 := { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }.Q10 } =
y⊢ y.card = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }.card + 1
simp at hr 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩hy1:¬y = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }hr:∃ a, (a ∈ S5 ∧ a ∉ Q5) ∧ { qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = y⊢ y.card = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }.card + 1
obtain ⟨a, ha, rfl⟩ := hr 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }⊢ { qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ }.card =
{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }.card + 1
simp [card] 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }⊢ qHu✝.toFinset.card + qHd✝.toFinset.card + (insert a Q5).card + Q10✝.card =
qHu✝.toFinset.card + qHd✝.toFinset.card + Q5.card + Q10✝.card + 1
rw [Finset.card_insert_of_notMem 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }⊢ qHu✝.toFinset.card + qHd✝.toFinset.card + (Q5.card + 1) + Q10✝.card =
qHu✝.toFinset.card + qHd✝.toFinset.card + Q5.card + Q10✝.card + 1𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }⊢ a ∉ Q5 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }⊢ qHu✝.toFinset.card + qHd✝.toFinset.card + (Q5.card + 1) + Q10✝.card =
qHu✝.toFinset.card + qHd✝.toFinset.card + Q5.card + Q10✝.card + 1𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }⊢ a ∉ Q5] 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }⊢ qHu✝.toFinset.card + qHd✝.toFinset.card + (Q5.card + 1) + Q10✝.card =
qHu✝.toFinset.card + qHd✝.toFinset.card + Q5.card + Q10✝.card + 1𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }⊢ a ∉ Q5
omega 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }⊢ a ∉ Q5
by_contra h 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := insert a Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }h:a ∈ Q5⊢ False
rw [Finset.insert_eq_of_mem h 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }h:a ∈ Q5⊢ False 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }h:a ∈ Q5⊢ False] at hy1 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5:Finset 𝓩Q10✝:Finset 𝓩a:𝓩ha:a ∈ S5 ∧ a ∉ Q5hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5, Q10 := Q10✝ }h:a ∈ Q5⊢ False
simp at hy1 All goals completed! 🐙
· inr.inr.inr 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy1:¬y = xhr:∃ a, (a ∈ S10 ∧ a ∉ x.Q10) ∧ { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert a x.Q10 } = y⊢ y.card = x.card + 1 match x with
| ⟨_, _, _, Q10⟩ => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩hy1:¬y = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }hr:∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }.Q10) ∧
{ qHd := { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }.qHd,
qHu := { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }.Q5,
Q10 := insert a { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }.Q10 } =
y⊢ y.card = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }.card + 1
simp at hr 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩hy1:¬y = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }hr:∃ a, (a ∈ S10 ∧ a ∉ Q10) ∧ { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = y⊢ y.card = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }.card + 1
obtain ⟨a, ha, rfl⟩ := hr 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }⊢ { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 }.card =
{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }.card + 1
simp [card] 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }⊢ qHu✝.toFinset.card + qHd✝.toFinset.card + Q5✝.card + (insert a Q10).card =
qHu✝.toFinset.card + qHd✝.toFinset.card + Q5✝.card + Q10.card + 1
rw [Finset.card_insert_of_notMem 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }⊢ qHu✝.toFinset.card + qHd✝.toFinset.card + Q5✝.card + (Q10.card + 1) =
qHu✝.toFinset.card + qHd✝.toFinset.card + Q5✝.card + Q10.card + 1𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }⊢ a ∉ Q10 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }⊢ qHu✝.toFinset.card + qHd✝.toFinset.card + Q5✝.card + (Q10.card + 1) =
qHu✝.toFinset.card + qHd✝.toFinset.card + Q5✝.card + Q10.card + 1𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }⊢ a ∉ Q10] 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }⊢ qHu✝.toFinset.card + qHd✝.toFinset.card + Q5✝.card + (Q10.card + 1) =
qHu✝.toFinset.card + qHd✝.toFinset.card + Q5✝.card + Q10.card + 1𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }⊢ a ∉ Q10
omega 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }⊢ a ∉ Q10
by_contra h 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := insert a Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }h:a ∈ Q10⊢ False
rw [Finset.insert_eq_of_mem h 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }h:a ∈ Q10⊢ False 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }h:a ∈ Q10⊢ False] at hy1 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩qHd✝:Option 𝓩qHu✝:Option 𝓩Q5✝:Finset 𝓩Q10:Finset 𝓩a:𝓩ha:a ∈ S10 ∧ a ∉ Q10hy1:¬{ qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 } = { qHd := qHd✝, qHu := qHu✝, Q5 := Q5✝, Q10 := Q10 }h:a ∈ Q10⊢ False
simp at hy1 All goals completed! 🐙A.4. Inserting charges and minimal super sets
We show that inserting a charge from S5 or S10 into x's Q5 or Q10 respectively
which is not already present in x gives a member of the minimal super set.
Likewise we show that if x has no qHd or qHu charge, then inserting a charge from S5
into qHd or qHu respectively gives a member of the minimal super set.
lemma insert_Q5_mem_minimalSuperSet {S5 S10 : Finset 𝓩} {x : ChargeSpectrum 𝓩}
(z : 𝓩) (hz : z ∈ S5) (hznot : z ∉ x.Q5) :
⟨x.qHd, x.qHu, insert z x.Q5, x.Q10⟩ ∈ minimalSuperSet S5 S10 x := by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S5hznot:z ∉ x.Q5⊢ { qHd := x.qHd, qHu := x.qHu, Q5 := insert z x.Q5, Q10 := x.Q10 } ∈ minimalSuperSet S5 S10 x
simp [minimalSuperSet] 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S5hznot:z ∉ x.Q5⊢ ¬{ qHd := x.qHd, qHu := x.qHu, Q5 := insert z x.Q5, Q10 := x.Q10 } = x ∧
(({ qHd := x.qHd, qHu := x.qHu, Q5 := insert z x.Q5, Q10 := x.Q10 } ∈
if x.qHd.isSome = true then ∅
else Finset.map { toFun := fun y => { qHd := some y, qHu := x.qHu, Q5 := x.Q5, Q10 := x.Q10 }, inj' := ⋯ } S5) ∨
({ qHd := x.qHd, qHu := x.qHu, Q5 := insert z x.Q5, Q10 := x.Q10 } ∈
if x.qHu.isSome = true then ∅
else Finset.image (fun y => { qHd := x.qHd, qHu := some y, Q5 := x.Q5, Q10 := x.Q10 }) S5) ∨
(∃ a, (a ∈ S5 ∧ a ∉ x.Q5) ∧ insert a x.Q5 = insert z x.Q5) ∨
∃ a, (a ∈ S10 ∧ a ∉ x.Q10) ∧ x.Q5 = insert z x.Q5 ∧ a ∈ x.Q10)
match x with
| ⟨qHd, qHu, Q5, Q10⟩ => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S5qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5⊢ ¬{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } =
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } ∧
(({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd.isSome = true then ∅
else
Finset.map
{
toFun := fun y =>
{ qHd := some y, qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 },
inj' := ⋯ }
S5) ∨
({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu.isSome = true then ∅
else
Finset.image
(fun y =>
{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd, qHu := some y,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 })
S5) ∨
(∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∨
∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 ∧
a ∈ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10)
apply And.intro left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S5qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5⊢ ¬{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } =
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S5qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5⊢ ({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd.isSome = true then ∅
else
Finset.map
{
toFun := fun y =>
{ qHd := some y, qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 },
inj' := ⋯ }
S5) ∨
({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu.isSome = true then ∅
else
Finset.image
(fun y =>
{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd, qHu := some y,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 })
S5) ∨
(∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∨
∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 ∧
a ∈ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10
· left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S5qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5⊢ ¬{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } =
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } simpa using hznot All goals completed! 🐙
· right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S5qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5⊢ ({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd.isSome = true then ∅
else
Finset.map
{
toFun := fun y =>
{ qHd := some y, qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 },
inj' := ⋯ }
S5) ∨
({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu.isSome = true then ∅
else
Finset.image
(fun y =>
{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd, qHu := some y,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 })
S5) ∨
(∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∨
∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 ∧
a ∈ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 right right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S5qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5⊢ ({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu.isSome = true then ∅
else
Finset.image
(fun y =>
{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd, qHu := some y,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 })
S5) ∨
(∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∨
∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 ∧
a ∈ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10
right right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S5qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5⊢ (∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∨
∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 ∧
a ∈ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10
left right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S5qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5⊢ ∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5
use z All goals completed! 🐙lemma insert_Q10_mem_minimalSuperSet {S5 S10 : Finset 𝓩} {x : ChargeSpectrum 𝓩}
(z : 𝓩) (hz : z ∈ S10) (hznot : z ∉ x.Q10) :
⟨x.qHd, x.qHu, x.Q5, insert z x.Q10⟩ ∈ minimalSuperSet S5 S10 x := by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S10hznot:z ∉ x.Q10⊢ { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert z x.Q10 } ∈ minimalSuperSet S5 S10 x
simp [minimalSuperSet] 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S10hznot:z ∉ x.Q10⊢ ¬{ qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert z x.Q10 } = x ∧
(({ qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert z x.Q10 } ∈
if x.qHd.isSome = true then ∅
else Finset.map { toFun := fun y => { qHd := some y, qHu := x.qHu, Q5 := x.Q5, Q10 := x.Q10 }, inj' := ⋯ } S5) ∨
({ qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert z x.Q10 } ∈
if x.qHu.isSome = true then ∅
else Finset.image (fun y => { qHd := x.qHd, qHu := some y, Q5 := x.Q5, Q10 := x.Q10 }) S5) ∨
(∃ a, (a ∈ S5 ∧ a ∉ x.Q5) ∧ a ∈ x.Q5 ∧ x.Q10 = insert z x.Q10) ∨
∃ a, (a ∈ S10 ∧ a ∉ x.Q10) ∧ insert a x.Q10 = insert z x.Q10)
match x with
| ⟨qHd, qHu, Q5, Q10⟩ => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S10qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10⊢ ¬{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } =
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } ∧
(({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd.isSome = true then ∅
else
Finset.map
{
toFun := fun y =>
{ qHd := some y, qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 },
inj' := ⋯ }
S5) ∨
({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu.isSome = true then ∅
else
Finset.image
(fun y =>
{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd, qHu := some y,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 })
S5) ∨
(∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
a ∈ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 ∧
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∨
∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10)
apply And.intro left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S10qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10⊢ ¬{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } =
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S10qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10⊢ ({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd.isSome = true then ∅
else
Finset.map
{
toFun := fun y =>
{ qHd := some y, qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 },
inj' := ⋯ }
S5) ∨
({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu.isSome = true then ∅
else
Finset.image
(fun y =>
{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd, qHu := some y,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 })
S5) ∨
(∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
a ∈ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 ∧
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∨
∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10
· left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S10qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10⊢ ¬{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } =
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 } simpa using hznot All goals completed! 🐙
· right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S10qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10⊢ ({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd.isSome = true then ∅
else
Finset.map
{
toFun := fun y =>
{ qHd := some y, qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 },
inj' := ⋯ }
S5) ∨
({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu.isSome = true then ∅
else
Finset.image
(fun y =>
{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd, qHu := some y,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 })
S5) ∨
(∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
a ∈ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 ∧
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∨
∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 right right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S10qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10⊢ ({ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd,
qHu := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 } ∈
if { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHu.isSome = true then ∅
else
Finset.image
(fun y =>
{ qHd := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.qHd, qHu := some y,
Q5 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5,
Q10 := { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 })
S5) ∨
(∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
a ∈ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 ∧
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∨
∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10
right right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S10qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10⊢ (∃ a,
(a ∈ S5 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5) ∧
a ∈ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q5 ∧
{ qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∨
∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10
right right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩z:𝓩hz:z ∈ S10qHd:Option 𝓩qHu:Option 𝓩Q5:Finset 𝓩Q10:Finset 𝓩hznot:z ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10⊢ ∃ a,
(a ∈ S10 ∧ a ∉ { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10) ∧
insert a { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10 =
insert z { qHd := qHd, qHu := qHu, Q5 := Q5, Q10 := Q10 }.Q10
use z All goals completed! 🐙lemma some_qHd_mem_minimalSuperSet_of_none {S5 S10 : Finset 𝓩}
{x2 : Option 𝓩 × Finset 𝓩 × Finset 𝓩} (z : 𝓩) (hz : z ∈ S5) :
⟨some z, x2.1, x2.2.1, x2.2.2⟩ ∈ minimalSuperSet S5 S10 ⟨none, x2.1, x2.2.1, x2.2.2⟩ := by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x2:Option 𝓩 × Finset 𝓩 × Finset 𝓩z:𝓩hz:z ∈ S5⊢ { qHd := some z, qHu := x2.1, Q5 := x2.2.1, Q10 := x2.2.2 } ∈
minimalSuperSet S5 S10 { qHd := none, qHu := x2.1, Q5 := x2.2.1, Q10 := x2.2.2 }
simp_all [minimalSuperSet] All goals completed! 🐙lemma some_qHu_mem_minimalSuperSet_of_none {S5 S10 : Finset 𝓩}
{x1 : Option 𝓩} {x2 : Finset 𝓩 × Finset 𝓩} (z : 𝓩) (hz : z ∈ S5) :
⟨x1, some z, x2.1,x2.2⟩ ∈ minimalSuperSet S5 S10 ⟨x1, none, x2.1, x2.2⟩ := by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x1:Option 𝓩x2:Finset 𝓩 × Finset 𝓩z:𝓩hz:z ∈ S5⊢ { qHd := x1, qHu := some z, Q5 := x2.1, Q10 := x2.2 } ∈
minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := x2.1, Q10 := x2.2 }
simp_all [minimalSuperSet] All goals completed! 🐙A.5. Existence of a minimal super set member between two charges
We show that if y has charges from S5 and S10 and is a super set of x but not equal to x
then there is a z in the minimal super set of x which is a subset of y.
This shows, in a sense, that minimalSuperSet is "minimal", although it does not
go all the way to doing that. In particular, it does show that every minimal super set
is a member of minimalSuperSet.
lemma exists_minimalSuperSet (S5 S10 : Finset 𝓩) {x y : ChargeSpectrum 𝓩}
(hy : y ∈ ofFinset S5 S10) (hsubset : x ⊆ y)
(hxneqy : x ≠ y) : ∃ z ∈ minimalSuperSet S5 S10 x, z ⊆ y := by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yhxneqy:x ≠ y⊢ ∃ z ∈ minimalSuperSet S5 S10 x, z ⊆ y
rw [Subset 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:hasSubset.1 x yhxneqy:x ≠ y⊢ ∃ z ∈ minimalSuperSet S5 S10 x, z ⊆ y 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:hasSubset.1 x yhxneqy:x ≠ y⊢ ∃ z ∈ minimalSuperSet S5 S10 x, z ⊆ y] at hsubset 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:hasSubset.1 x yhxneqy:x ≠ y⊢ ∃ z ∈ minimalSuperSet S5 S10 x, z ⊆ y
dsimp [hasSubset] at hsubset 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x.qHd.toFinset ⊆ y.qHd.toFinset ∧ x.qHu.toFinset ⊆ y.qHu.toFinset ∧ x.Q5 ⊆ y.Q5 ∧ x.Q10 ⊆ y.Q10hxneqy:x ≠ y⊢ ∃ z ∈ minimalSuperSet S5 S10 x, z ⊆ y
match x, y with
| ⟨x1, x2, x3, x4⟩, ⟨y1, y2, y3, y4⟩ => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hy:{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 } ∈ ofFinset S5 S10hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 } ≠ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }
simp at hxneqy 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hy:{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 } ∈ ofFinset S5 S10hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }
simp [mem_ofFinset_iff] at hy 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }
by_cases h3 : x3 ≠ y3 pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10h3:x3 ≠ y3⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }neg 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10h3:¬x3 ≠ y3⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }
· pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10h3:x3 ≠ y3⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 } obtain ⟨z3, hz3, hz3not⟩ :=
Finset.exists_of_ssubset (ssubset_of_subset_of_ne hsubset.2.2.1 h3) pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10h3:x3 ≠ y3z3:𝓩hz3:z3 ∈ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5hz3not:z3 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }
refine ⟨⟨x1, x2, insert z3 x3, x4⟩, insert_Q5_mem_minimalSuperSet z3 (hy.2.2.1 hz3) hz3not, ?_⟩ pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10h3:x3 ≠ y3z3:𝓩hz3:z3 ∈ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5hz3not:z3 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5⊢ { qHd := x1, qHu := x2, Q5 := insert z3 x3, Q10 := x4 } ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }
rw [Subset pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10h3:x3 ≠ y3z3:𝓩hz3:z3 ∈ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5hz3not:z3 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5⊢ hasSubset.1 { qHd := x1, qHu := x2, Q5 := insert z3 x3, Q10 := x4 } { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 } pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10h3:x3 ≠ y3z3:𝓩hz3:z3 ∈ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5hz3not:z3 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5⊢ hasSubset.1 { qHd := x1, qHu := x2, Q5 := insert z3 x3, Q10 := x4 } { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }]pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10h3:x3 ≠ y3z3:𝓩hz3:z3 ∈ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5hz3not:z3 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5⊢ hasSubset.1 { qHd := x1, qHu := x2, Q5 := insert z3 x3, Q10 := x4 } { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }
dsimp [hasSubset] pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10h3:x3 ≠ y3z3:𝓩hz3:z3 ∈ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5hz3not:z3 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5⊢ x1.toFinset ⊆ y1.toFinset ∧ x2.toFinset ⊆ y2.toFinset ∧ insert z3 x3 ⊆ y3 ∧ x4 ⊆ y4
simp_all [Finset.insert_subset_iff] All goals completed! 🐙
simp at h3 neg 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y3:Finset 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = y3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ y3 ⊆ S5 ∧ y4 ⊆ S10h3:x3 = y3⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := y3, Q10 := y4 }
subst h3 neg 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }
by_cases h4 : x4 ≠ y4 pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10h4:x4 ≠ y4⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }neg 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10h4:¬x4 ≠ y4⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }
· pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10h4:x4 ≠ y4⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 } obtain ⟨z4, hz4, hz4not⟩ :=
Finset.exists_of_ssubset (ssubset_of_subset_of_ne hsubset.2.2.2 h4) pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10h4:x4 ≠ y4z4:𝓩hz4:z4 ∈ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hz4not:z4 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }
refine ⟨⟨x1, x2, x3, insert z4 x4⟩, insert_Q10_mem_minimalSuperSet z4 (hy.2.2.2 hz4) hz4not, ?_⟩ pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10h4:x4 ≠ y4z4:𝓩hz4:z4 ∈ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hz4not:z4 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10⊢ { qHd := x1, qHu := x2, Q5 := x3, Q10 := insert z4 x4 } ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }
rw [Subset pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10h4:x4 ≠ y4z4:𝓩hz4:z4 ∈ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hz4not:z4 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10⊢ hasSubset.1 { qHd := x1, qHu := x2, Q5 := x3, Q10 := insert z4 x4 } { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 } pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10h4:x4 ≠ y4z4:𝓩hz4:z4 ∈ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hz4not:z4 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10⊢ hasSubset.1 { qHd := x1, qHu := x2, Q5 := x3, Q10 := insert z4 x4 } { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }]pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10h4:x4 ≠ y4z4:𝓩hz4:z4 ∈ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hz4not:z4 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10⊢ hasSubset.1 { qHd := x1, qHu := x2, Q5 := x3, Q10 := insert z4 x4 } { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }
dsimp [hasSubset] pos 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10h4:x4 ≠ y4z4:𝓩hz4:z4 ∈ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hz4not:z4 ∉ { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10⊢ x1.toFinset ⊆ y1.toFinset ∧ x2.toFinset ⊆ y2.toFinset ∧ x3 ⊆ x3 ∧ insert z4 x4 ⊆ y4
simp_all [Finset.insert_subset_iff] All goals completed! 🐙
simp at h4 neg 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩y4:Finset 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = y4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ y4 ⊆ S10h4:x4 = y4⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := y4 }
subst h4 neg 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩hsubset:{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHd.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := x4 }.qHd.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.qHu.toFinset ⊆
{ qHd := y1, qHu := y2, Q5 := x3, Q10 := x4 }.qHu.toFinset ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q5 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := x4 }.Q5 ∧
{ qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 }.Q10 ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := x4 }.Q10hxneqy:x1 = y1 → x2 = y2 → x3 = x3 → ¬x4 = x4hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := x4 }
simp_all neg 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩hsubset:x1.toFinset ⊆ y1.toFinset ∧ x2.toFinset ⊆ y2.toFinsethxneqy:x1 = y1 → ¬x2 = y2hy:y1.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := y2, Q5 := x3, Q10 := x4 }
match x1, y1, x2, y2 with
| some x1, none, x2, y2 => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2✝:Option 𝓩x1:𝓩x2:Option 𝓩y2:Option 𝓩hsubset:(some x1).toFinset ⊆ none.toFinset ∧ x2.toFinset ⊆ y2.toFinsethxneqy:some x1 = none → ¬x2 = y2hy:none.toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := some x1, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := none, qHu := y2, Q5 := x3, Q10 := x4 }
simp at hsubset All goals completed! 🐙
| none, some y1, x2, y2 => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hsubset:none.toFinset ⊆ (some y1).toFinset ∧ x2.toFinset ⊆ y2.toFinsethxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := none, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := some y1, qHu := y2, Q5 := x3, Q10 := x4 }
simp at hsubset 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x2.toFinset ⊆ y2.toFinset⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := none, qHu := x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := some y1, qHu := y2, Q5 := x3, Q10 := x4 }
use ⟨some y1, x2, x3, x4⟩ h 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x2.toFinset ⊆ y2.toFinset⊢ { qHd := some y1, qHu := x2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := none, qHu := x2, Q5 := x3, Q10 := x4 } ∧
{ qHd := some y1, qHu := x2, Q5 := x3, Q10 := x4 } ⊆ { qHd := some y1, qHu := y2, Q5 := x3, Q10 := x4 }
constructor h.left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x2.toFinset ⊆ y2.toFinset⊢ { qHd := some y1, qHu := x2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := none, qHu := x2, Q5 := x3, Q10 := x4 }h.right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x2.toFinset ⊆ y2.toFinset⊢ { qHd := some y1, qHu := x2, Q5 := x3, Q10 := x4 } ⊆ { qHd := some y1, qHu := y2, Q5 := x3, Q10 := x4 }
· h.left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x2.toFinset ⊆ y2.toFinset⊢ { qHd := some y1, qHu := x2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := none, qHu := x2, Q5 := x3, Q10 := x4 } have h0 := (some_qHd_mem_minimalSuperSet_of_none (S5 := S5) (S10 := S10) y1
(by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x2.toFinset ⊆ y2.toFinset⊢ y1 ∈ S5 h.left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x2.toFinset ⊆ y2.toFinseth0:{ qHd := some y1, qHu := (x2, x3, x4).1, Q5 := (x2, x3, x4).2.1, Q10 := (x2, x3, x4).2.2 } ∈
minimalSuperSet S5 S10 { qHd := none, qHu := (x2, x3, x4).1, Q5 := (x2, x3, x4).2.1, Q10 := (x2, x3, x4).2.2 }⊢ { qHd := some y1, qHu := x2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := none, qHu := x2, Q5 := x3, Q10 := x4 } simp_all All goals completed! 🐙h.left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x2.toFinset ⊆ y2.toFinseth0:{ qHd := some y1, qHu := (x2, x3, x4).1, Q5 := (x2, x3, x4).2.1, Q10 := (x2, x3, x4).2.2 } ∈
minimalSuperSet S5 S10 { qHd := none, qHu := (x2, x3, x4).1, Q5 := (x2, x3, x4).2.1, Q10 := (x2, x3, x4).2.2 }⊢ { qHd := some y1, qHu := x2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := none, qHu := x2, Q5 := x3, Q10 := x4 }) (x2 := (x2, x3, x4)))h.left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x2.toFinset ⊆ y2.toFinseth0:{ qHd := some y1, qHu := (x2, x3, x4).1, Q5 := (x2, x3, x4).2.1, Q10 := (x2, x3, x4).2.2 } ∈
minimalSuperSet S5 S10 { qHd := none, qHu := (x2, x3, x4).1, Q5 := (x2, x3, x4).2.1, Q10 := (x2, x3, x4).2.2 }⊢ { qHd := some y1, qHu := x2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := none, qHu := x2, Q5 := x3, Q10 := x4 }
simpa using h0 All goals completed! 🐙
· h.right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩y1:𝓩x2:Option 𝓩y2:Option 𝓩hxneqy:none = some y1 → ¬x2 = y2hy:(some y1).toFinset ⊆ S5 ∧ y2.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x2.toFinset ⊆ y2.toFinset⊢ { qHd := some y1, qHu := x2, Q5 := x3, Q10 := x4 } ⊆ { qHd := some y1, qHu := y2, Q5 := x3, Q10 := x4 } simp_all [subset_def] All goals completed! 🐙
| x1, y1, some x2, none => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2:Option 𝓩x1:Option 𝓩y1:Option 𝓩x2:𝓩hsubset:x1.toFinset ⊆ y1.toFinset ∧ (some x2).toFinset ⊆ none.toFinsethxneqy:x1 = y1 → ¬some x2 = nonehy:y1.toFinset ⊆ S5 ∧ none.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := some x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := none, Q5 := x3, Q10 := x4 }
simp at hsubset All goals completed! 🐙
| x1, y1, none, some y2 => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hsubset:x1.toFinset ⊆ y1.toFinset ∧ none.toFinset ⊆ (some y2).toFinsethxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := some y2, Q5 := x3, Q10 := x4 }
simp at hsubset 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x1.toFinset ⊆ y1.toFinset⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := y1, qHu := some y2, Q5 := x3, Q10 := x4 }
use ⟨x1, some y2, x3, x4⟩ h 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x1.toFinset ⊆ y1.toFinset⊢ { qHd := x1, qHu := some y2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := x3, Q10 := x4 } ∧
{ qHd := x1, qHu := some y2, Q5 := x3, Q10 := x4 } ⊆ { qHd := y1, qHu := some y2, Q5 := x3, Q10 := x4 }
constructor h.left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x1.toFinset ⊆ y1.toFinset⊢ { qHd := x1, qHu := some y2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := x3, Q10 := x4 }h.right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x1.toFinset ⊆ y1.toFinset⊢ { qHd := x1, qHu := some y2, Q5 := x3, Q10 := x4 } ⊆ { qHd := y1, qHu := some y2, Q5 := x3, Q10 := x4 }
· h.left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x1.toFinset ⊆ y1.toFinset⊢ { qHd := x1, qHu := some y2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := x3, Q10 := x4 } have h0 := (some_qHu_mem_minimalSuperSet_of_none (x1 := x1) (S5 := S5) (S10 := S10) y2
(by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x1.toFinset ⊆ y1.toFinset⊢ y2 ∈ S5 h.left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x1.toFinset ⊆ y1.toFinseth0:{ qHd := x1, qHu := some y2, Q5 := (x3, x4).1, Q10 := (x3, x4).2 } ∈
minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := (x3, x4).1, Q10 := (x3, x4).2 }⊢ { qHd := x1, qHu := some y2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := x3, Q10 := x4 } simp_all All goals completed! 🐙h.left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x1.toFinset ⊆ y1.toFinseth0:{ qHd := x1, qHu := some y2, Q5 := (x3, x4).1, Q10 := (x3, x4).2 } ∈
minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := (x3, x4).1, Q10 := (x3, x4).2 }⊢ { qHd := x1, qHu := some y2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := x3, Q10 := x4 }) (x2 := (x3, x4)))h.left 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x1.toFinset ⊆ y1.toFinseth0:{ qHd := x1, qHu := some y2, Q5 := (x3, x4).1, Q10 := (x3, x4).2 } ∈
minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := (x3, x4).1, Q10 := (x3, x4).2 }⊢ { qHd := x1, qHu := some y2, Q5 := x3, Q10 := x4 } ∈
minimalSuperSet S5 S10 { qHd := x1, qHu := none, Q5 := x3, Q10 := x4 }
simpa using h0 All goals completed! 🐙
· h.right 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:Option 𝓩y1:Option 𝓩y2:𝓩hxneqy:x1 = y1 → ¬none = some y2hy:y1.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10hsubset:x1.toFinset ⊆ y1.toFinset⊢ { qHd := x1, qHu := some y2, Q5 := x3, Q10 := x4 } ⊆ { qHd := y1, qHu := some y2, Q5 := x3, Q10 := x4 } simp_all [subset_def] All goals completed! 🐙
| none, none, none, none => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2:Option 𝓩hsubset:none.toFinset ⊆ none.toFinset ∧ none.toFinset ⊆ none.toFinsethxneqy:none = none → ¬none = nonehy:none.toFinset ⊆ S5 ∧ none.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := none, qHu := none, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := none, qHu := none, Q5 := x3, Q10 := x4 }
simp_all All goals completed! 🐙
| some x1, some y1, none, none => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2:Option 𝓩x1:𝓩y1:𝓩hsubset:(some x1).toFinset ⊆ (some y1).toFinset ∧ none.toFinset ⊆ none.toFinsethxneqy:some x1 = some y1 → ¬none = nonehy:(some y1).toFinset ⊆ S5 ∧ none.toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := some x1, qHu := none, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := some y1, qHu := none, Q5 := x3, Q10 := x4 }
simp_all All goals completed! 🐙
| none, none, some x2, some y2 => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1:Option 𝓩y2✝:Option 𝓩x2:𝓩y2:𝓩hsubset:none.toFinset ⊆ none.toFinset ∧ (some x2).toFinset ⊆ (some y2).toFinsethxneqy:none = none → ¬some x2 = some y2hy:none.toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := none, qHu := some x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := none, qHu := some y2, Q5 := x3, Q10 := x4 }
simp_all All goals completed! 🐙
| some x1, some y1, some x2, some y2 => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩x:ChargeSpectrum 𝓩y:ChargeSpectrum 𝓩x1✝:Option 𝓩x2✝:Option 𝓩x3:Finset 𝓩x4:Finset 𝓩y1✝:Option 𝓩y2✝:Option 𝓩x1:𝓩y1:𝓩x2:𝓩y2:𝓩hsubset:(some x1).toFinset ⊆ (some y1).toFinset ∧ (some x2).toFinset ⊆ (some y2).toFinsethxneqy:some x1 = some y1 → ¬some x2 = some y2hy:(some y1).toFinset ⊆ S5 ∧ (some y2).toFinset ⊆ S5 ∧ x3 ⊆ S5 ∧ x4 ⊆ S10⊢ ∃ z ∈ minimalSuperSet S5 S10 { qHd := some x1, qHu := some x2, Q5 := x3, Q10 := x4 },
z ⊆ { qHd := some y1, qHu := some y2, Q5 := x3, Q10 := x4 }
simp_all All goals completed! 🐙B. Induction properties on the minimal super set
We now prove a number of induction properties related to minimal super sets.
B.1. Lifting propositions from minimal super sets to super sets
We show that for a proposition p on charge spectra with the property that
it is true on all minimal super sets of x if it true on x itself, then it is true on all
super sets of x if it is true for x itself.
lemma minimalSuperSet_induction_on_inductive {S5 S10 : Finset 𝓩}
(p : ChargeSpectrum 𝓩 → Prop)
(hp : (x : ChargeSpectrum 𝓩) → p x → ∀ y ∈ minimalSuperSet S5 S10 x, p y)
(x : ChargeSpectrum 𝓩) (hbase : p x)
(y : ChargeSpectrum 𝓩) (hy : y ∈ ofFinset S5 S10) (hsubset : x ⊆ y) :
(n : ℕ) → (hn : n = y.card - x.card) → p y
| 0, hn => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yhn:0 = y.card - x.card⊢ p y by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yhn:0 = y.card - x.card⊢ p y
have hxy : x = y := by
refine eq_of_subset_card hsubset ?_ 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yhn:0 = y.card - x.card⊢ x.card = y.card 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yhn:0 = y.card - x.cardhxy:x = y⊢ p y
have hl : card x ≤ card y := card_mono hsubset 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yhn:0 = y.card - x.cardhl:x.card ≤ y.card⊢ x.card = y.card 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yhn:0 = y.card - x.cardhxy:x = y⊢ p y
omega 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yhn:0 = y.card - x.cardhxy:x = y⊢ p y 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yhn:0 = y.card - x.cardhxy:x = y⊢ p y
subst hxy 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xhy:x ∈ ofFinset S5 S10hsubset:x ⊆ xhn:0 = x.card - x.card⊢ p x
simp_all All goals completed! 🐙
| Nat.succ n, hn => 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.card⊢ p y by 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.card⊢ p y
have hxy : x ≠ y := by
intro h 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardh:x = y⊢ False 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ y⊢ p y
subst h 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xn:ℕhy:x ∈ ofFinset S5 S10hsubset:x ⊆ xhn:n.succ = x.card - x.card⊢ False 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ y⊢ p y
simp at hn 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ y⊢ p y 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ y⊢ p y
obtain ⟨z, hz, hsubsetz⟩ := exists_minimalSuperSet S5 S10 hy hsubset hxy 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ p y
refine minimalSuperSet_induction_on_inductive p hp z ?_ y hy ?_ n ?_ refine_1 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ p zrefine_2 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ z ⊆ yrefine_3 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ n = y.card - z.card
· refine_1 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ p z exact hp x hbase z hz All goals completed! 🐙
· refine_2 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ z ⊆ y exact hsubsetz All goals completed! 🐙
· refine_3 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ n = y.card - z.card rw [card_of_mem_minimalSuperSet z hz refine_3 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ n = y.card - (x.card + 1) refine_3 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ n = y.card - (x.card + 1)]refine_3 𝓩:Typeinst✝:DecidableEq 𝓩S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Prophp:∀ (x : ChargeSpectrum 𝓩), p x → ∀ y ∈ minimalSuperSet S5 S10 x, p yx:ChargeSpectrum 𝓩hbase:p xy:ChargeSpectrum 𝓩hy:y ∈ ofFinset S5 S10hsubset:x ⊆ yn:ℕhn:n.succ = y.card - x.cardhxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ n = y.card - (x.card + 1)
omega All goals completed! 🐙B.2. Closure of multisets based on proposition for minimal super sets
We show that for a predicate p on charge spectrum,
if a multiset T of complete charge spectra has the property that
all insertions of a q10 charge either ends in T or fails p.
all insertions of a q5 charge either ends in T or fails p.
Then if x is in T then all members of the minimal super set of x either
are in T or fail p.
lemma insert_filter_card_zero
(T : Multiset (ChargeSpectrum 𝓩)) (S5 S10 : Finset 𝓩)
(p : ChargeSpectrum 𝓩 → Prop) [DecidablePred p]
(hComplet : ∀ x ∈ T, IsComplete x)
(h10 : ∀ q10 : S10, ((T.map fun x => ⟨x.qHd, x.qHu, x.Q5, insert q10.1 x.Q10⟩).filter
fun y => (y ∉ T ∧ p y)) = ∅)
(h5 : ∀ q5 : S5, ((T.map fun x => ⟨x.qHd, x.qHu, insert q5.1 x.Q5, x.Q10⟩).filter
fun y => (y ∉ T ∧ p y)) = ∅) :
∀ x ∈ T, ∀ y ∈ minimalSuperSet S5 S10 x, y ∉ T → ¬ p y := by 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅⊢ ∀ x ∈ T, ∀ y ∈ minimalSuperSet S5 S10 x, y ∉ T → ¬p y
intro ⟨xqHd, xqHu, xQ5, xQ10⟩ x_mem_T y y_mem_minimalSuperSet y_not_in_T 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHd:Option 𝓩xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩x_mem_T:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty:ChargeSpectrum 𝓩y_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }y_not_in_T:y ∉ T⊢ ¬p y
have x_isComplete : IsComplete ⟨xqHd, xqHu, xQ5, xQ10⟩ := hComplet _ x_mem_T 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHd:Option 𝓩xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩x_mem_T:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty:ChargeSpectrum 𝓩y_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }y_not_in_T:y ∉ Tx_isComplete:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsComplete⊢ ¬p y
have xqHd_isSome : xqHd.isSome := by 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅⊢ ∀ x ∈ T, ∀ y ∈ minimalSuperSet S5 S10 x, y ∉ T → ¬p y 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHd:Option 𝓩xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩x_mem_T:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty:ChargeSpectrum 𝓩y_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }y_not_in_T:y ∉ Tx_isComplete:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHd_isSome:xqHd.isSome = true⊢ ¬p y
simp [IsComplete] at x_isComplete 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHd:Option 𝓩xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩x_mem_T:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty:ChargeSpectrum 𝓩y_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }y_not_in_T:y ∉ Tx_isComplete:xqHd.isSome = true ∧ xqHu.isSome = true ∧ ¬xQ5 = ∅ ∧ ¬xQ10 = ∅⊢ xqHd.isSome = true 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHd:Option 𝓩xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩x_mem_T:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty:ChargeSpectrum 𝓩y_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }y_not_in_T:y ∉ Tx_isComplete:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHd_isSome:xqHd.isSome = true⊢ ¬p y
exact x_isComplete.1 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHd:Option 𝓩xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩x_mem_T:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty:ChargeSpectrum 𝓩y_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }y_not_in_T:y ∉ Tx_isComplete:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHd_isSome:xqHd.isSome = true⊢ ¬p y 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHd:Option 𝓩xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩x_mem_T:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty:ChargeSpectrum 𝓩y_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }y_not_in_T:y ∉ Tx_isComplete:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHd_isSome:xqHd.isSome = true⊢ ¬p y
rw [Option.isSome_iff_exists 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHd:Option 𝓩xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩x_mem_T:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty:ChargeSpectrum 𝓩y_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }y_not_in_T:y ∉ Tx_isComplete:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHd_isSome:∃ a, xqHd = some a⊢ ¬p y 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHd:Option 𝓩xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩x_mem_T:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty:ChargeSpectrum 𝓩y_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }y_not_in_T:y ∉ Tx_isComplete:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHd_isSome:∃ a, xqHd = some a⊢ ¬p y] at xqHd_isSome 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHd:Option 𝓩xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩x_mem_T:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty:ChargeSpectrum 𝓩y_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }y_not_in_T:y ∉ Tx_isComplete:{ qHd := xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHd_isSome:∃ a, xqHd = some a⊢ ¬p y
obtain ⟨xqHd, rfl⟩ := xqHd_isSome 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩x_mem_T:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }x_isComplete:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsComplete⊢ ¬p y
have xqHu_isSome : xqHu.isSome := by 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅⊢ ∀ x ∈ T, ∀ y ∈ minimalSuperSet S5 S10 x, y ∉ T → ¬p y 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩x_mem_T:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }x_isComplete:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHu_isSome:xqHu.isSome = true⊢ ¬p y
simp [IsComplete] at x_isComplete 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩x_mem_T:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }x_isComplete:xqHu.isSome = true ∧ ¬xQ5 = ∅ ∧ ¬xQ10 = ∅⊢ xqHu.isSome = true 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩x_mem_T:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }x_isComplete:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHu_isSome:xqHu.isSome = true⊢ ¬p y
exact x_isComplete.1 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩x_mem_T:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }x_isComplete:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHu_isSome:xqHu.isSome = true⊢ ¬p y 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩x_mem_T:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }x_isComplete:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHu_isSome:xqHu.isSome = true⊢ ¬p y
rw [Option.isSome_iff_exists 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩x_mem_T:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }x_isComplete:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHu_isSome:∃ a, xqHu = some a⊢ ¬p y 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩x_mem_T:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }x_isComplete:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHu_isSome:∃ a, xqHu = some a⊢ ¬p y] at xqHu_isSome 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xqHu:Option 𝓩xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩x_mem_T:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }x_isComplete:{ qHd := some xqHd, qHu := xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletexqHu_isSome:∃ a, xqHu = some a⊢ ¬p y
obtain ⟨xqHu, rfl⟩ := xqHu_isSome 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩xqHu:𝓩x_mem_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:y ∈ minimalSuperSet S5 S10 { qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 }x_isComplete:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 }.IsComplete⊢ ¬p y
simp [minimalSuperSet] at y_mem_minimalSuperSet 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompleteh10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅xQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩y_not_in_T:y ∉ TxqHd:𝓩xqHu:𝓩x_mem_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Tx_isComplete:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 }.IsCompletey_mem_minimalSuperSet:(∃ a, (a ∈ S5 ∧ a ∉ xQ5) ∧ { qHd := some xqHd, qHu := some xqHu, Q5 := insert a xQ5, Q10 := xQ10 } = y) ∨
∃ a, (a ∈ S10 ∧ a ∉ xQ10) ∧ { qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := insert a xQ10 } = y⊢ ¬p y
simp_all 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompletexQ5:Finset 𝓩xQ10:Finset 𝓩y:ChargeSpectrum 𝓩xqHd:𝓩xqHu:𝓩h10:∀ a ∈ S10,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 }h5:∀ a ∈ S5,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 }y_not_in_T:y ∉ Tx_mem_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Ty_mem_minimalSuperSet:(∃ a, (a ∈ S5 ∧ a ∉ xQ5) ∧ { qHd := some xqHd, qHu := some xqHu, Q5 := insert a xQ5, Q10 := xQ10 } = y) ∨
∃ a, (a ∈ S10 ∧ a ∉ xQ10) ∧ { qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := insert a xQ10 } = y⊢ ¬p y
rcases y_mem_minimalSuperSet with ⟨q5, q5_mem_S5, rfl⟩ | ⟨q10, q10_mem_S10, rfl⟩ inl 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompletexQ5:Finset 𝓩xQ10:Finset 𝓩xqHd:𝓩xqHu:𝓩h10:∀ a ∈ S10,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 }h5:∀ a ∈ S5,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 }x_mem_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Tq5:𝓩q5_mem_S5:q5 ∈ S5 ∧ q5 ∉ xQ5y_not_in_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := insert q5 xQ5, Q10 := xQ10 } ∉ T⊢ ¬p { qHd := some xqHd, qHu := some xqHu, Q5 := insert q5 xQ5, Q10 := xQ10 }inr 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompletexQ5:Finset 𝓩xQ10:Finset 𝓩xqHd:𝓩xqHu:𝓩h10:∀ a ∈ S10,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 }h5:∀ a ∈ S5,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 }x_mem_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Tq10:𝓩q10_mem_S10:q10 ∈ S10 ∧ q10 ∉ xQ10y_not_in_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := insert q10 xQ10 } ∉ T⊢ ¬p { qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := insert q10 xQ10 }
· inl 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompletexQ5:Finset 𝓩xQ10:Finset 𝓩xqHd:𝓩xqHu:𝓩h10:∀ a ∈ S10,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 }h5:∀ a ∈ S5,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 }x_mem_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Tq5:𝓩q5_mem_S5:q5 ∈ S5 ∧ q5 ∉ xQ5y_not_in_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := insert q5 xQ5, Q10 := xQ10 } ∉ T⊢ ¬p { qHd := some xqHd, qHu := some xqHu, Q5 := insert q5 xQ5, Q10 := xQ10 } have h5' := h5 q5 q5_mem_S5.1 inl 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompletexQ5:Finset 𝓩xQ10:Finset 𝓩xqHd:𝓩xqHu:𝓩h10:∀ a ∈ S10,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 }h5:∀ a ∈ S5,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 }x_mem_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Tq5:𝓩q5_mem_S5:q5 ∈ S5 ∧ q5 ∉ xQ5y_not_in_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := insert q5 xQ5, Q10 := xQ10 } ∉ Th5':∀ a ∈ T,
{ qHd := a.qHd, qHu := a.qHu, Q5 := insert q5 a.Q5, Q10 := a.Q10 } ∉ T →
¬p { qHd := a.qHd, qHu := a.qHu, Q5 := insert q5 a.Q5, Q10 := a.Q10 }⊢ ¬p { qHd := some xqHd, qHu := some xqHu, Q5 := insert q5 xQ5, Q10 := xQ10 }
exact h5' ⟨some xqHd, some xqHu, xQ5, xQ10⟩ x_mem_T y_not_in_T All goals completed! 🐙
· inr 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompletexQ5:Finset 𝓩xQ10:Finset 𝓩xqHd:𝓩xqHu:𝓩h10:∀ a ∈ S10,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 }h5:∀ a ∈ S5,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 }x_mem_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Tq10:𝓩q10_mem_S10:q10 ∈ S10 ∧ q10 ∉ xQ10y_not_in_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := insert q10 xQ10 } ∉ T⊢ ¬p { qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := insert q10 xQ10 } have h10' := h10 q10 q10_mem_S10.1 inr 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phComplet:∀ x ∈ T, x.IsCompletexQ5:Finset 𝓩xQ10:Finset 𝓩xqHd:𝓩xqHu:𝓩h10:∀ a ∈ S10,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := a_1.Q5, Q10 := insert a a_1.Q10 }h5:∀ a ∈ S5,
∀ a_1 ∈ T,
{ qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 } ∉ T →
¬p { qHd := a_1.qHd, qHu := a_1.qHu, Q5 := insert a a_1.Q5, Q10 := a_1.Q10 }x_mem_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := xQ10 } ∈ Tq10:𝓩q10_mem_S10:q10 ∈ S10 ∧ q10 ∉ xQ10y_not_in_T:{ qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := insert q10 xQ10 } ∉ Th10':∀ a ∈ T,
{ qHd := a.qHd, qHu := a.qHu, Q5 := a.Q5, Q10 := insert q10 a.Q10 } ∉ T →
¬p { qHd := a.qHd, qHu := a.qHu, Q5 := a.Q5, Q10 := insert q10 a.Q10 }⊢ ¬p { qHd := some xqHd, qHu := some xqHu, Q5 := xQ5, Q10 := insert q10 xQ10 }
exact h10' ⟨some xqHd, some xqHu, xQ5, xQ10⟩ x_mem_T y_not_in_T All goals completed! 🐙B.3. Closure of multisets based on propositions
We show that for a predicate p on charge spectrum which if false on a charge spectrum
is also false on all its super sets,
if a multiset T of complete charge spectra has the property that
all insertions of a q10 charge either ends in T or fails p.
all insertions of a q5 charge either ends in T or fails p.
Then if y is not in T then it does not satisfy p.
We first prove this with an explicit induction argument, n, and then
we prove it in a more user friendly way.
lemma subset_insert_filter_card_zero_inductive
(T : Multiset (ChargeSpectrum 𝓩))
(S5 S10 : Finset 𝓩)
(p : ChargeSpectrum 𝓩 → Prop) [DecidablePred p]
(hnotSubset : ∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬ p x → ¬ p y)
(hComplet : ∀ x ∈ T, IsComplete x)
(x : ChargeSpectrum 𝓩)
(hx : x ∈ T) (y : ChargeSpectrum 𝓩) (hsubset : x ⊆ y)
(hy : y ∈ ofFinset S5 S10)
(h10 : ∀ q10 : S10, ((T.map fun x => ⟨x.qHd, x.qHu, x.Q5, insert q10.1 x.Q10⟩).filter
fun y => (y ∉ T ∧ p y)) = ∅)
(h5 : ∀ q5 : S5, ((T.map fun x => ⟨x.qHd, x.qHu, insert q5.1 x.Q5, x.Q10⟩).filter
fun y => (y ∉ T ∧ p y)) = ∅) :
(n : ℕ) → (hn : n = y.card - x.card) → y ∉ T → ¬ p y
| 0, hn, hnot_in_T => 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅hn:0 = y.card - x.cardhnot_in_T:y ∉ T⊢ ¬p y by 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅hn:0 = y.card - x.cardhnot_in_T:y ∉ T⊢ ¬p y
have hxy : x = y := by
refine eq_of_subset_card hsubset ?_ 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅hn:0 = y.card - x.cardhnot_in_T:y ∉ T⊢ x.card = y.card 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅hn:0 = y.card - x.cardhnot_in_T:y ∉ Thxy:x = y⊢ ¬p y
have hl : x.card ≤ y.card := card_mono hsubset 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅hn:0 = y.card - x.cardhnot_in_T:y ∉ Thl:x.card ≤ y.card⊢ x.card = y.card 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅hn:0 = y.card - x.cardhnot_in_T:y ∉ Thxy:x = y⊢ ¬p y
omega 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅hn:0 = y.card - x.cardhnot_in_T:y ∉ Thxy:x = y⊢ ¬p y 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅hn:0 = y.card - x.cardhnot_in_T:y ∉ Thxy:x = y⊢ ¬p y
subst hxy 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Th10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅hsubset:x ⊆ xhy:x ∈ ofFinset S5 S10hn:0 = x.card - x.cardhnot_in_T:x ∉ T⊢ ¬p x
simp_all All goals completed! 🐙
| Nat.succ n, hn, hnot_in_T => 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ T⊢ ¬p y by 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ T⊢ ¬p y
have hxy : x ≠ y := by
intro h 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Th:x = y⊢ False 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ y⊢ ¬p y
subst h 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Th10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhsubset:x ⊆ xhy:x ∈ ofFinset S5 S10hn:n.succ = x.card - x.cardhnot_in_T:x ∉ T⊢ False 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ y⊢ ¬p y
simp at hn 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ y⊢ ¬p y 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ y⊢ ¬p y
obtain ⟨z, hz, hsubsetz⟩ := exists_minimalSuperSet S5 S10 hy hsubset hxy 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ y⊢ ¬p y
have hz' := insert_filter_card_zero T S5 S10 p hComplet h10 h5 x hx z hz 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p z⊢ ¬p y
by_cases hz_not_in_T : z ∉ T pos 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:z ∉ T⊢ ¬p yneg 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ ¬p y
· pos 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:z ∉ T⊢ ¬p y apply hnotSubset pos.a 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:z ∉ T⊢ ?pos.x✝ ⊆ ypos.a 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:z ∉ T⊢ ¬p ?pos.x✝pos.x 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:z ∉ T⊢ ChargeSpectrum 𝓩
· pos.a 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:z ∉ T⊢ ?pos.x✝ ⊆ y exact hsubsetz All goals completed! 🐙
· pos.a 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:z ∉ T⊢ ¬p z exact hz' hz_not_in_T All goals completed! 🐙
apply subset_insert_filter_card_zero_inductive T S5 S10 p hnotSubset hComplet z (n := n) neg.hx 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ z ∈ Tneg.hsubset 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ z ⊆ yneg.hy 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ y ∈ ofFinset S5 S10neg.h10 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ ∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅neg.h5 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ ∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅neg.hn 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ n = y.card - z.cardneg.a 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ y ∉ T
· neg.hx 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ z ∈ T simpa using hz_not_in_T All goals completed! 🐙
· neg.hsubset 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ z ⊆ y exact hsubsetz All goals completed! 🐙
· neg.hy 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ y ∈ ofFinset S5 S10 exact hy All goals completed! 🐙
· neg.h10 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ ∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅ exact fun q10 => h10 q10 All goals completed! 🐙
· neg.h5 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ ∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅ exact fun q5 => h5 q5 All goals completed! 🐙
· neg.hn 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ n = y.card - z.card rw [card_of_mem_minimalSuperSet z hz neg.hn 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ n = y.card - (x.card + 1) neg.hn 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ n = y.card - (x.card + 1)]neg.hn 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ n = y.card - (x.card + 1)
omega All goals completed! 🐙
· neg.a 𝓩:Typeinst✝¹:DecidableEq 𝓩T:Multiset (ChargeSpectrum 𝓩)S5:Finset 𝓩S10:Finset 𝓩p:ChargeSpectrum 𝓩 → Propinst✝:DecidablePred phnotSubset:∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬p x → ¬p yhComplet:∀ x ∈ T, x.IsCompletex:ChargeSpectrum 𝓩hx:x ∈ Ty:ChargeSpectrum 𝓩hsubset:x ⊆ yhy:y ∈ ofFinset S5 S10h10:∀ (q10 : ↥S10),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := x.Q5, Q10 := insert (↑q10) x.Q10 }) T) =
∅h5:∀ (q5 : ↥S5),
Multiset.filter (fun y => y ∉ T ∧ p y)
(Multiset.map (fun x => { qHd := x.qHd, qHu := x.qHu, Q5 := insert (↑q5) x.Q5, Q10 := x.Q10 }) T) =
∅n:ℕhn:n.succ = y.card - x.cardhnot_in_T:y ∉ Thxy:x ≠ yz:ChargeSpectrum 𝓩hz:z ∈ minimalSuperSet S5 S10 xhsubsetz:z ⊆ yhz':z ∉ T → ¬p zhz_not_in_T:¬z ∉ T⊢ y ∉ T exact hnot_in_T All goals completed! 🐙
For a proposition p if (T.uniqueMap4 (insert q10.1)).toMultiset.filter p
and (T.uniqueMap3 (insert q5.1)).toMultiset.filter p for all q5 ∈ S5 and q10 ∈ S10 then
if x ∈ T and x ⊆ y if y ∉ T then ¬ p y.
This assumes that all charges in T are complete, and that p satisfies
x ⊆ y → ¬ p x → ¬ p y.
lemma subset_insert_filter_card_zero
(T : Multiset (ChargeSpectrum 𝓩))
(S5 S10 : Finset 𝓩)
(p : ChargeSpectrum 𝓩 → Prop) [DecidablePred p]
(hnotSubset : ∀ (x y : ChargeSpectrum 𝓩), x ⊆ y → ¬ p x → ¬ p y)
(hComplet : ∀ x ∈ T, IsComplete x)
(x : ChargeSpectrum 𝓩)
(hx : x ∈ T) (y : ChargeSpectrum 𝓩) (hsubset : x ⊆ y)
(hy : y ∈ ofFinset S5 S10)
(h10 : ∀ q10 : S10, ((T.map fun x => ⟨x.qHd, x.qHu, x.Q5, insert q10.1 x.Q10⟩).filter
fun y => (y ∉ T ∧ p y)) = ∅)
(h5 : ∀ q5 : S5, ((T.map fun x => ⟨x.qHd, x.qHu, insert q5.1 x.Q5, x.Q10⟩).filter
fun y => (y ∉ T ∧ p y)) = ∅) :
y ∉ T → ¬ p y :=
subset_insert_filter_card_zero_inductive T S5 S10 p hnotSubset hComplet x hx y hsubset hy h10 h5
(y.card - x.card) rfl