Theorem: hasEigenvalue_toLin_diagonal_iff
File: Mathlib/LinearAlgebra/Eigenspace/Matrix.lean

tactic: have (i : n) : HasEigenvalue (toLin b b (diagonal d)) (d i) :=
  hasEigenvalue_of_hasEigenvector <| hasEigenvector_toLin_diagonal d i b
state_before: R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
⊢ HasEigenvalue ((toLin b b) (diagonal d)) μ ↔ ∃ i, d i = μ
state_after: R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
⊢ HasEigenvalue ((toLin b b) (diagonal d)) μ ↔ ∃ i, d i = μ

tactic: constructor
state_before: R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
⊢ HasEigenvalue ((toLin b b) (diagonal d)) μ ↔ ∃ i, d i = μ
state_after: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
⊢ HasEigenvalue ((toLin b b) (diagonal d)) μ → ∃ i, d i = μ

case mpr
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
⊢ (∃ i, d i = μ) → HasEigenvalue ((toLin b b) (diagonal d)) μ

tactic: contrapose!
state_before: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
⊢ HasEigenvalue ((toLin b b) (diagonal d)) μ → ∃ i, d i = μ
state_after: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
⊢ (∀ (i : n), d i ≠ μ) → ¬HasEigenvalue ((toLin b b) (diagonal d)) μ

tactic: intro hμ h_eig
state_before: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
⊢ (∀ (i : n), d i ≠ μ) → ¬HasEigenvalue ((toLin b b) (diagonal d)) μ
state_after: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
⊢ False

tactic: have h_iSup : ⨆ μ ∈ Set.range d, eigenspace (toLin b b (diagonal d)) μ = ⊤ := by
  rw [eq_top_iff, ← b.span_eq, Submodule.span_le]
  rintro - ⟨i, rfl⟩
  simp only [SetLike.mem_coe]
  apply Submodule.mem_iSup_of_mem (d i)
  apply Submodule.mem_iSup_of_mem ⟨i, rfl⟩
  rw [mem_eigenspace_iff]
  exact (hasEigenvector_toLin_diagonal d i b).apply_eq_smul
state_before: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
⊢ False
state_after: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
h_iSup : ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ = ⊤
⊢ False

tactic: have hμ_not_mem : μ ∉ Set.range d := by simpa using fun i ↦ (hμ i)
state_before: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
h_iSup : ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ = ⊤
⊢ False
state_after: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
h_iSup : ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ = ⊤
hμ_not_mem : μ ∉ Set.range d
⊢ False

tactic: have := eigenspaces_independent (toLin b b (diagonal d)) |>.disjoint_biSup hμ_not_mem
state_before: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
h_iSup : ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ = ⊤
hμ_not_mem : μ ∉ Set.range d
⊢ False
state_after: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this✝ : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
h_iSup : ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ = ⊤
hμ_not_mem : μ ∉ Set.range d
this : Disjoint (eigenspace ((toLin b b) (diagonal d)) μ) (⨆ i ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) i)
⊢ False

tactic: rw [h_iSup, disjoint_top] at this
state_before: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this✝ : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
h_iSup : ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ = ⊤
hμ_not_mem : μ ∉ Set.range d
this : Disjoint (eigenspace ((toLin b b) (diagonal d)) μ) (⨆ i ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) i)
⊢ False
state_after: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this✝ : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
h_iSup : ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ = ⊤
hμ_not_mem : μ ∉ Set.range d
this : eigenspace ((toLin b b) (diagonal d)) μ = ⊥
⊢ False

tactic: exact h_eig this
state_before: case mp
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this✝ : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
h_iSup : ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ = ⊤
hμ_not_mem : μ ∉ Set.range d
this : eigenspace ((toLin b b) (diagonal d)) μ = ⊥
⊢ False
state_after: no goals

tactic: rw [eq_top_iff, ← b.span_eq, Submodule.span_le]
state_before: R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
⊢ ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ = ⊤
state_after: R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
⊢ Set.range ⇑b ⊆ ↑(⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ)

tactic: rintro - ⟨i, rfl⟩
state_before: R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
⊢ Set.range ⇑b ⊆ ↑(⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ)
state_after: case intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
i : n
⊢ b i ∈ ↑(⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ)

tactic: simp only [SetLike.mem_coe]
state_before: case intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
i : n
⊢ b i ∈ ↑(⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ)
state_after: case intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
i : n
⊢ b i ∈ ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ

tactic: apply Submodule.mem_iSup_of_mem (d i)
state_before: case intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
i : n
⊢ b i ∈ ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ
state_after: case intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
i : n
⊢ b i ∈ ⨆ (_ : d i ∈ Set.range d), eigenspace ((toLin b b) (diagonal d)) (d i)

tactic: apply Submodule.mem_iSup_of_mem ⟨i, rfl⟩
state_before: case intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
i : n
⊢ b i ∈ ⨆ (_ : d i ∈ Set.range d), eigenspace ((toLin b b) (diagonal d)) (d i)
state_after: case intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
i : n
⊢ b i ∈ eigenspace ((toLin b b) (diagonal d)) (d i)

tactic: rw [mem_eigenspace_iff]
state_before: case intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
i : n
⊢ b i ∈ eigenspace ((toLin b b) (diagonal d)) (d i)
state_after: case intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
i : n
⊢ ((toLin b b) (diagonal d)) (b i) = d i • b i

tactic: exact (hasEigenvector_toLin_diagonal d i b).apply_eq_smul
state_before: case intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
i : n
⊢ ((toLin b b) (diagonal d)) (b i) = d i • b i
state_after: no goals

tactic: simpa using fun i ↦ (hμ i)
state_before: R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
hμ : ∀ (i : n), d i ≠ μ
h_eig : HasEigenvalue ((toLin b b) (diagonal d)) μ
h_iSup : ⨆ μ ∈ Set.range d, eigenspace ((toLin b b) (diagonal d)) μ = ⊤
⊢ μ ∉ Set.range d
state_after: no goals

tactic: rintro ⟨i, rfl⟩
state_before: case mpr
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
μ : R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
⊢ (∃ i, d i = μ) → HasEigenvalue ((toLin b b) (diagonal d)) μ
state_after: case mpr.intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
i : n
⊢ HasEigenvalue ((toLin b b) (diagonal d)) (d i)

tactic: exact this i
state_before: case mpr.intro
R : Type u_1
n : Type u_2
M : Type u_3
inst✝⁶ : DecidableEq n
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : Nontrivial R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
d : n → R
inst✝ : NoZeroSMulDivisors R M
b : Basis n R M
this : ∀ (i : n), HasEigenvalue ((toLin b b) (diagonal d)) (d i)
i : n
⊢ HasEigenvalue ((toLin b b) (diagonal d)) (d i)
state_after: no goals