Theorem: Module.End.independent_genEigenspace
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

tactic: suffices ∀ μ (s : Finset R), μ ∉ s → Disjoint (⨆ k, f.genEigenspace μ k)
    (s.sup fun μ ↦ ⨆ k, f.genEigenspace μ k) by
  simp_rw [CompleteLattice.independent_iff_supIndep_of_injOn f.injOn_genEigenspace,
    Finset.supIndep_iff_disjoint_erase]
  exact fun s μ _ ↦ this _ _ (s.not_mem_erase μ)
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
⊢ CompleteLattice.Independent fun μ => ⨆ k, (f.genEigenspace μ) k
state_after: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
⊢ ∀ (μ : R) (s : Finset R), μ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)

tactic: intro μ₁ s
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
⊢ ∀ (μ : R) (s : Finset R), μ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
state_after: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ : R
s : Finset R
⊢ μ₁ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)

tactic: induction' s using Finset.induction_on with μ₂ s _ ih
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ : R
s : Finset R
⊢ μ₁ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
state_after: case empty
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ : R
⊢ μ₁ ∉ ∅ → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (∅.sup fun μ => ⨆ k, (f.genEigenspace μ) k)

case insert
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
ih : μ₁ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ μ₁ ∉ insert μ₂ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) ((insert μ₂ s).sup fun μ => ⨆ k, (f.genEigenspace μ) k)

tactic: intro hμ₁₂
state_before: case insert
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
ih : μ₁ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ μ₁ ∉ insert μ₂ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) ((insert μ₂ s).sup fun μ => ⨆ k, (f.genEigenspace μ) k)
state_after: case insert
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
ih : μ₁ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
hμ₁₂ : μ₁ ∉ insert μ₂ s
⊢ Disjoint (⨆ k, (f.genEigenspace μ₁) k) ((insert μ₂ s).sup fun μ => ⨆ k, (f.genEigenspace μ) k)

tactic: obtain ⟨hμ₁₂ : μ₁ ≠ μ₂, hμ₁ : μ₁ ∉ s⟩ := by rwa [Finset.mem_insert, not_or] at hμ₁₂
state_before: case insert
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
ih : μ₁ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
hμ₁₂ : μ₁ ∉ insert μ₂ s
⊢ Disjoint (⨆ k, (f.genEigenspace μ₁) k) ((insert μ₂ s).sup fun μ => ⨆ k, (f.genEigenspace μ) k)
state_after: case insert.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
ih : μ₁ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
⊢ Disjoint (⨆ k, (f.genEigenspace μ₁) k) ((insert μ₂ s).sup fun μ => ⨆ k, (f.genEigenspace μ) k)

tactic: specialize ih hμ₁
state_before: case insert.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
ih : μ₁ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
⊢ Disjoint (⨆ k, (f.genEigenspace μ₁) k) ((insert μ₂ s).sup fun μ => ⨆ k, (f.genEigenspace μ) k)
state_after: case insert.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ Disjoint (⨆ k, (f.genEigenspace μ₁) k) ((insert μ₂ s).sup fun μ => ⨆ k, (f.genEigenspace μ) k)

tactic: rw [Finset.sup_insert, disjoint_iff, Submodule.eq_bot_iff]
state_before: case insert.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ Disjoint (⨆ k, (f.genEigenspace μ₁) k) ((insert μ₂ s).sup fun μ => ⨆ k, (f.genEigenspace μ) k)
state_after: case insert.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ ∀ x ∈ (⨆ k, (f.genEigenspace μ₁) k) ⊓ ((⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k),
    x = 0

tactic: rintro x ⟨hx, hx'⟩
state_before: case insert.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ ∀ x ∈ (⨆ k, (f.genEigenspace μ₁) k) ⊓ ((⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k),
    x = 0
state_after: case insert.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
x : M
hx : x ∈ ↑(⨆ k, (f.genEigenspace μ₁) k)
hx' : x ∈ ↑((⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ x = 0

tactic: simp only [SetLike.mem_coe] at hx hx'
state_before: case insert.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
x : M
hx : x ∈ ↑(⨆ k, (f.genEigenspace μ₁) k)
hx' : x ∈ ↑((⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ x = 0
state_after: case insert.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
x : M
hx : x ∈ ⨆ k, (f.genEigenspace μ₁) k
hx' : x ∈ (⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
⊢ x = 0

tactic: suffices x ∈ ⨆ k, genEigenspace f μ₂ k by
  rw [← Submodule.mem_bot (R := R), ← (f.disjoint_iSup_genEigenspace hμ₁₂).eq_bot]
  exact ⟨hx, this⟩
state_before: case insert.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
x : M
hx : x ∈ ⨆ k, (f.genEigenspace μ₁) k
hx' : x ∈ (⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
⊢ x = 0
state_after: case insert.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
x : M
hx : x ∈ ⨆ k, (f.genEigenspace μ₁) k
hx' : x ∈ (⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
⊢ x ∈ ⨆ k, (f.genEigenspace μ₂) k

tactic: obtain ⟨y, hy, z, hz, rfl⟩ := Submodule.mem_sup.mp hx'
state_before: case insert.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
x : M
hx : x ∈ ⨆ k, (f.genEigenspace μ₁) k
hx' : x ∈ (⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
⊢ x ∈ ⨆ k, (f.genEigenspace μ₂) k
state_after: case insert.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
hx' : y + z ∈ (⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
⊢ y + z ∈ ⨆ k, (f.genEigenspace μ₂) k

tactic: clear hx'
state_before: case insert.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
hx' : y + z ∈ (⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
⊢ y + z ∈ ⨆ k, (f.genEigenspace μ₂) k
state_after: case insert.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
⊢ y + z ∈ ⨆ k, (f.genEigenspace μ₂) k

tactic: let g := f - algebraMap R (End R M) μ₂
state_before: case insert.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
⊢ y + z ∈ ⨆ k, (f.genEigenspace μ₂) k
state_after: case insert.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
⊢ y + z ∈ ⨆ k, (f.genEigenspace μ₂) k

tactic: obtain ⟨k : ℕ, hk : (g ^ k) y = 0⟩ := by simpa using hy
state_before: case insert.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
⊢ y + z ∈ ⨆ k, (f.genEigenspace μ₂) k
state_after: case insert.intro.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ y + z ∈ ⨆ k, (f.genEigenspace μ₂) k

tactic: rw [ih.eq_bot, Submodule.mem_bot] at hyz
state_before: case insert.intro.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
hyz : (g ^ k) (y + z) ∈ (⨆ k, (f.genEigenspace μ₁) k) ⊓ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
⊢ y + z ∈ ⨆ k, (f.genEigenspace μ₂) k
state_after: case insert.intro.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
hyz : (g ^ k) (y + z) = 0
⊢ y + z ∈ ⨆ k, (f.genEigenspace μ₂) k

tactic: simp_rw [Submodule.mem_iSup_of_chain, mem_genEigenspace]
state_before: case insert.intro.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
hyz : (g ^ k) (y + z) = 0
⊢ y + z ∈ ⨆ k, (f.genEigenspace μ₂) k
state_after: case insert.intro.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
hyz : (g ^ k) (y + z) = 0
⊢ ∃ k, ((f - μ₂ • 1) ^ k) (y + z) = 0

tactic: exact ⟨k, hyz⟩
state_before: case insert.intro.intro.intro.intro.intro.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
hyz : (g ^ k) (y + z) = 0
⊢ ∃ k, ((f - μ₂ • 1) ^ k) (y + z) = 0
state_after: no goals

tactic: simp_rw [CompleteLattice.independent_iff_supIndep_of_injOn f.injOn_genEigenspace,
  Finset.supIndep_iff_disjoint_erase]
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
this :
  ∀ (μ : R) (s : Finset R), μ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ CompleteLattice.Independent fun μ => ⨆ k, (f.genEigenspace μ) k
state_after: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
this :
  ∀ (μ : R) (s : Finset R), μ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ ∀ (s : Finset R), ∀ i ∈ s, Disjoint (⨆ k, (f.genEigenspace i) k) ((s.erase i).sup fun μ => ⨆ k, (f.genEigenspace μ) k)

tactic: exact fun s μ _ ↦ this _ _ (s.not_mem_erase μ)
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
this :
  ∀ (μ : R) (s : Finset R), μ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
⊢ ∀ (s : Finset R), ∀ i ∈ s, Disjoint (⨆ k, (f.genEigenspace i) k) ((s.erase i).sup fun μ => ⨆ k, (f.genEigenspace μ) k)
state_after: no goals

tactic: simp
state_before: case empty
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ : R
⊢ μ₁ ∉ ∅ → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (∅.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
state_after: no goals

tactic: rwa [Finset.mem_insert, not_or] at hμ₁₂
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
ih : μ₁ ∉ s → Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
hμ₁₂ : μ₁ ∉ insert μ₂ s
⊢ ?m.448787
state_after: no goals

tactic: rw [← Submodule.mem_bot (R := R), ← (f.disjoint_iSup_genEigenspace hμ₁₂).eq_bot]
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
x : M
hx : x ∈ ⨆ k, (f.genEigenspace μ₁) k
hx' : x ∈ (⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
this : x ∈ ⨆ k, (f.genEigenspace μ₂) k
⊢ x = 0
state_after: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
x : M
hx : x ∈ ⨆ k, (f.genEigenspace μ₁) k
hx' : x ∈ (⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
this : x ∈ ⨆ k, (f.genEigenspace μ₂) k
⊢ x ∈ (⨆ k, (f.genEigenspace μ₁) k) ⊓ ⨆ k, (f.genEigenspace μ₂) k

tactic: exact ⟨hx, this⟩
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
x : M
hx : x ∈ ⨆ k, (f.genEigenspace μ₁) k
hx' : x ∈ (⨆ k, (f.genEigenspace μ₂) k) ⊔ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
this : x ∈ ⨆ k, (f.genEigenspace μ₂) k
⊢ x ∈ (⨆ k, (f.genEigenspace μ₁) k) ⊓ ⨆ k, (f.genEigenspace μ₂) k
state_after: no goals

tactic: simpa using hy
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
⊢ ?m.454817
state_after: no goals

tactic: refine ⟨f.mapsTo_iSup_genEigenspace_of_comm ?_ μ₁ hx, ?_⟩
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ (g ^ k) (y + z) ∈ (⨆ k, (f.genEigenspace μ₁) k) ⊓ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
state_after: case refine_1
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ Commute f (g ^ k)

case refine_2
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ (g ^ k) (y + z) ∈ ↑(s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)

tactic: exact Algebra.mul_sub_algebraMap_pow_commutes f μ₂ k
state_before: case refine_1
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ Commute f (g ^ k)
state_after: no goals

tactic: rw [SetLike.mem_coe, map_add, hk, zero_add]
state_before: case refine_2
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ (g ^ k) (y + z) ∈ ↑(s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
state_after: case refine_2
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ (g ^ k) z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k

tactic: suffices (s.sup fun μ ↦ ⨆ k, f.genEigenspace μ k).map (g ^ k) ≤
    s.sup fun μ ↦ ⨆ k, f.genEigenspace μ k by exact this (Submodule.mem_map_of_mem hz)
state_before: case refine_2
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ (g ^ k) z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
state_after: case refine_2
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ Submodule.map (g ^ k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k) ≤ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k

tactic: simp_rw [Finset.sup_eq_iSup, Submodule.map_iSup (ι := R), Submodule.map_iSup (ι := _ ∈ s)]
state_before: case refine_2
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ Submodule.map (g ^ k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k) ≤ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
state_after: case refine_2
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ ⨆ i ∈ s, Submodule.map (g ^ k) (⨆ k, (f.genEigenspace i) k) ≤ ⨆ a ∈ s, ⨆ k, (f.genEigenspace a) k

tactic: refine iSup₂_mono fun μ _ ↦ ?_
state_before: case refine_2
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
⊢ ⨆ i ∈ s, Submodule.map (g ^ k) (⨆ k, (f.genEigenspace i) k) ≤ ⨆ a ∈ s, ⨆ k, (f.genEigenspace a) k
state_after: case refine_2
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
μ : R
x✝ : μ ∈ s
⊢ Submodule.map (g ^ k) (⨆ k, (f.genEigenspace μ) k) ≤ ⨆ k, (f.genEigenspace μ) k

tactic: rintro - ⟨u, hu, rfl⟩
state_before: case refine_2
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
μ : R
x✝ : μ ∈ s
⊢ Submodule.map (g ^ k) (⨆ k, (f.genEigenspace μ) k) ≤ ⨆ k, (f.genEigenspace μ) k
state_after: case refine_2.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
μ : R
x✝ : μ ∈ s
u : M
hu : u ∈ ↑(⨆ k, (f.genEigenspace μ) k)
⊢ (g ^ k) u ∈ ⨆ k, (f.genEigenspace μ) k

tactic: refine f.mapsTo_iSup_genEigenspace_of_comm ?_ μ hu
state_before: case refine_2.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
μ : R
x✝ : μ ∈ s
u : M
hu : u ∈ ↑(⨆ k, (f.genEigenspace μ) k)
⊢ (g ^ k) u ∈ ⨆ k, (f.genEigenspace μ) k
state_after: case refine_2.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
μ : R
x✝ : μ ∈ s
u : M
hu : u ∈ ↑(⨆ k, (f.genEigenspace μ) k)
⊢ Commute f (g ^ k)

tactic: exact Algebra.mul_sub_algebraMap_pow_commutes f μ₂ k
state_before: case refine_2.intro.intro
K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
μ : R
x✝ : μ ∈ s
u : M
hu : u ∈ ↑(⨆ k, (f.genEigenspace μ) k)
⊢ Commute f (g ^ k)
state_after: no goals

tactic: exact this (Submodule.mem_map_of_mem hz)
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : NoZeroSMulDivisors R M
f : End R M
μ₁ μ₂ : R
s : Finset R
a✝ : μ₂ ∉ s
hμ₁₂✝ : μ₁ ∉ insert μ₂ s
hμ₁₂ : μ₁ ≠ μ₂
hμ₁ : μ₁ ∉ s
ih : Disjoint (⨆ k, (f.genEigenspace μ₁) k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k)
y : M
hy : y ∈ ⨆ k, (f.genEigenspace μ₂) k
z : M
hz : z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
hx : y + z ∈ ⨆ k, (f.genEigenspace μ₁) k
g : End R M := f - (algebraMap R (End R M)) μ₂
k : ℕ
hk : (g ^ k) y = 0
this : Submodule.map (g ^ k) (s.sup fun μ => ⨆ k, (f.genEigenspace μ) k) ≤ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
⊢ (g ^ k) z ∈ s.sup fun μ => ⨆ k, (f.genEigenspace μ) k
state_after: no goals