Theorem: Module.End.iSup_genEigenspace_eq_top
File: Mathlib/LinearAlgebra/Eigenspace/Triangularizable.lean

tactic: induction' h_dim : finrank K V using Nat.strong_induction_on with n ih generalizing V
state_before: K : Type u_1
V : Type u_2
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : IsAlgClosed K
inst✝ : FiniteDimensional K V
f : End K V
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
n : ℕ
ih :
  ∀ m < n,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
h_dim : finrank K V = n
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: cases' n with n
state_before: case h
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
n : ℕ
ih :
  ∀ m < n,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
h_dim : finrank K V = n
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.zero
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
ih :
  ∀ m < 0,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = 0
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

case h.succ
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: rw [← top_le_iff]
state_before: case h.zero
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
ih :
  ∀ m < 0,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = 0
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.zero
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
ih :
  ∀ m < 0,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = 0
⊢ ⊤ ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k

tactic: simp only [Submodule.finrank_eq_zero.1 (Eq.trans (finrank_top _ _) h_dim), bot_le]
state_before: case h.zero
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
ih :
  ∀ m < 0,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = 0
⊢ ⊤ ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
state_after: no goals

tactic: haveI : Nontrivial V := finrank_pos_iff.1 (by rw [h_dim]; apply Nat.zero_lt_succ)
state_before: case h.succ
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: obtain ⟨μ₀, hμ₀⟩ : ∃ μ₀, f.HasEigenvalue μ₀ := exists_eigenvalue f
state_before: case h.succ
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: let ES := f.genEigenspace μ₀ (finrank K V)
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: let ER := f.genEigenrange μ₀ (finrank K V)
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: have h_f_ER : ∀ x : V, x ∈ ER → f x ∈ ER := fun x hx =>
  map_genEigenrange_le (Submodule.mem_map_of_mem hx)
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: let f' : End K ER := f.restrict h_f_ER
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: have h_dim_ES_pos : 0 < finrank K ES := by
  dsimp only [ES]
  rw [h_dim]
  apply pos_finrank_genEigenspace_of_hasEigenvalue hμ₀ (Nat.zero_lt_succ n)
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: have h_dim_add : finrank K ER + finrank K ES = finrank K V := by
  apply LinearMap.finrank_range_add_finrank_ker
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: have h_dim_ER : finrank K ER < n.succ := by linarith
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: have ih_ER : ⨆ (μ : K) (k : ℕ), f'.genEigenspace μ k = ⊤ :=
  ih (finrank K ER) h_dim_ER f' rfl
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: have ih_ER' : ⨆ (μ : K) (k : ℕ), (f'.genEigenspace μ k).map ER.subtype = ER := by
  simp only [(Submodule.map_iSup _ _).symm, ih_ER, Submodule.map_subtype_top ER]
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: have hff' :
  ∀ μ k, (f'.genEigenspace μ k).map ER.subtype ≤ f.genEigenspace μ k := by
  intros
  rw [genEigenspace_restrict]
  apply Submodule.map_comap_le
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: have hER : ER ≤ ⨆ (μ : K) (k : ℕ), f.genEigenspace μ k := by
  rw [← ih_ER']
  exact iSup₂_mono hff'
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
hER : ER ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: have hES : ES ≤ ⨆ (μ : K) (k : ℕ), f.genEigenspace μ k :=
  le_trans (le_iSup (fun k => f.genEigenspace μ₀ k) (finrank K V))
    (le_iSup (fun μ : K => ⨆ k : ℕ, f.genEigenspace μ k) μ₀)
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
hER : ER ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
hER : ER ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
hES : ES ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: have h_disjoint : Disjoint ER ES := generalized_eigenvec_disjoint_range_ker f μ₀
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
hER : ER ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
hES : ES ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
hER : ER ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
hES : ES ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
h_disjoint : Disjoint ER ES
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

tactic: rw [← top_le_iff, ← Submodule.eq_top_of_disjoint ER ES h_dim_add h_disjoint]
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
hER : ER ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
hES : ES ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
h_disjoint : Disjoint ER ES
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
hER : ER ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
hES : ES ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
h_disjoint : Disjoint ER ES
⊢ ER ⊔ ES ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k

tactic: apply sup_le hER hES
state_before: case h.succ.intro
K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
hER : ER ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
hES : ES ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
h_disjoint : Disjoint ER ES
⊢ ER ⊔ ES ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
state_after: no goals

tactic: rw [h_dim]
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
⊢ 0 < finrank ?m.11867 V
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
⊢ 0 < n + 1

tactic: apply Nat.zero_lt_succ
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
⊢ 0 < n + 1
state_after: no goals

tactic: dsimp only [ES]
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
⊢ 0 < finrank K ↥ES
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
⊢ 0 < finrank K ↥((f.genEigenspace μ₀) (finrank K V))

tactic: rw [h_dim]
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
⊢ 0 < finrank K ↥((f.genEigenspace μ₀) (finrank K V))
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
⊢ 0 < finrank K ↥((f.genEigenspace μ₀) (n + 1))

tactic: apply pos_finrank_genEigenspace_of_hasEigenvalue hμ₀ (Nat.zero_lt_succ n)
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
⊢ 0 < finrank K ↥((f.genEigenspace μ₀) (n + 1))
state_after: no goals

tactic: apply LinearMap.finrank_range_add_finrank_ker
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
⊢ finrank K ↥ER + finrank K ↥ES = finrank K V
state_after: no goals

tactic: linarith
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
⊢ finrank K ↥ER < n.succ
state_after: no goals

tactic: simp only [(Submodule.map_iSup _ _).symm, ih_ER, Submodule.map_subtype_top ER]
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
⊢ ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
state_after: no goals

tactic: intros
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
⊢ ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
μ✝ : K
k✝ : ℕ
⊢ Submodule.map ER.subtype ((f'.genEigenspace μ✝) k✝) ≤ (f.genEigenspace μ✝) k✝

tactic: rw [genEigenspace_restrict]
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
μ✝ : K
k✝ : ℕ
⊢ Submodule.map ER.subtype ((f'.genEigenspace μ✝) k✝) ≤ (f.genEigenspace μ✝) k✝
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
μ✝ : K
k✝ : ℕ
⊢ Submodule.map ER.subtype (Submodule.comap ER.subtype ((f.genEigenspace μ✝) k✝)) ≤ (f.genEigenspace μ✝) k✝

tactic: apply Submodule.map_comap_le
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
μ✝ : K
k✝ : ℕ
⊢ Submodule.map ER.subtype (Submodule.comap ER.subtype ((f.genEigenspace μ✝) k✝)) ≤ (f.genEigenspace μ✝) k✝
state_after: no goals

tactic: rw [← ih_ER']
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
⊢ ER ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
state_after: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
⊢ ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k

tactic: exact iSup₂_mono hff'
state_before: K : Type u_1
inst✝⁴ : Field K
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
this : Nontrivial V
μ₀ : K
hμ₀ : f.HasEigenvalue μ₀
ES : Submodule K V := (f.genEigenspace μ₀) (finrank K V)
ER : Submodule K V := f.genEigenrange μ₀ (finrank K V)
h_f_ER : ∀ x ∈ ER, f x ∈ ER
f' : End K ↥ER := LinearMap.restrict f h_f_ER
h_dim_ES_pos : 0 < finrank K ↥ES
h_dim_add : finrank K ↥ER + finrank K ↥ES = finrank K V
h_dim_ER : finrank K ↥ER < n.succ
ih_ER : ⨆ μ, ⨆ k, (f'.genEigenspace μ) k = ⊤
ih_ER' : ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) = ER
hff' : ∀ (μ : K) (k : ℕ), Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ (f.genEigenspace μ) k
⊢ ⨆ μ, ⨆ k, Submodule.map ER.subtype ((f'.genEigenspace μ) k) ≤ ⨆ μ, ⨆ k, (f.genEigenspace μ) k
state_after: no goals