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

tactic: have h :=
  calc
    Submodule.comap ((f - algebraMap _ _ μ) ^ finrank K V)
      (f.generalizedEigenspace μ (finrank K V)) =
        LinearMap.ker ((f - algebraMap _ _ μ) ^ finrank K V *
          (f - algebraMap K (End K V) μ) ^ finrank K V) := by
            rw [generalizedEigenspace, OrderHom.coe_fun_mk, ← LinearMap.ker_comp]; rfl
    _ = f.generalizedEigenspace μ (finrank K V + finrank K V) := by rw [← pow_add]; rfl
    _ = f.generalizedEigenspace μ (finrank K V) := by
      rw [generalizedEigenspace_eq_generalizedEigenspace_finrank_of_le]; linarith
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✝ : FiniteDimensional K V
f : End K V
μ : K
⊢ Disjoint (generalizedEigenrange f μ (finrank K V)) (↑(generalizedEigenspace f μ) (finrank K V))

tactic: rw [disjoint_iff_inf_le, generalizedEigenrange, LinearMap.range_eq_map,
  Submodule.map_inf_eq_map_inf_comap, top_inf_eq, 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✝ : FiniteDimensional K V
f : End K V
μ : K
h :
  Submodule.comap ((f - ↑(algebraMap K (End K V)) μ) ^ finrank K V) (↑(generalizedEigenspace f μ) (finrank K V)) =
    ↑(generalizedEigenspace f μ) (finrank K V)
⊢ Disjoint (generalizedEigenrange f μ (finrank K V)) (↑(generalizedEigenspace f μ) (finrank K V))

tactic: apply Submodule.map_comap_le
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✝ : FiniteDimensional K V
f : End K V
μ : K
h :
  Submodule.comap ((f - ↑(algebraMap K (End K V)) μ) ^ finrank K V) (↑(generalizedEigenspace f μ) (finrank K V)) =
    ↑(generalizedEigenspace f μ) (finrank K V)
⊢ Submodule.map ((f - ↑(algebraMap K (End K V)) μ) ^ finrank K V) (↑(generalizedEigenspace f μ) (finrank K V)) ≤ ⊥

tactic: rw [generalizedEigenspace, OrderHom.coe_fun_mk, ← LinearMap.ker_comp]
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✝ : FiniteDimensional K V
f : End K V
μ : K
⊢ Submodule.comap ((f - ↑(algebraMap K (End K V)) μ) ^ finrank K V) (↑(generalizedEigenspace f μ) (finrank K V)) =
    LinearMap.ker ((f - ↑(algebraMap K (End K V)) μ) ^ finrank K V * (f - ↑(algebraMap K (End K V)) μ) ^ finrank K V)

tactic: rfl
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✝ : FiniteDimensional K V
f : End K V
μ : K
⊢ LinearMap.ker
      (LinearMap.comp ((f - ↑(algebraMap K (End K V)) μ) ^ finrank K V)
        ((f - ↑(algebraMap K (End K V)) μ) ^ finrank K V)) =
    LinearMap.ker ((f - ↑(algebraMap K (End K V)) μ) ^ finrank K V * (f - ↑(algebraMap K (End K V)) μ) ^ finrank K V)

tactic: rw [← pow_add]
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✝ : FiniteDimensional K V
f : End K V
μ : K
⊢ LinearMap.ker ((f - ↑(algebraMap K (End K V)) μ) ^ finrank K V * (f - ↑(algebraMap K (End K V)) μ) ^ finrank K V) =
    ↑(generalizedEigenspace f μ) (finrank K V + finrank K V)

tactic: rfl
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✝ : FiniteDimensional K V
f : End K V
μ : K
⊢ LinearMap.ker ((f - ↑(algebraMap K (End K V)) μ) ^ (finrank K V + finrank K V)) =
    ↑(generalizedEigenspace f μ) (finrank K V + finrank K V)

tactic: rw [generalizedEigenspace_eq_generalizedEigenspace_finrank_of_le]
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✝ : FiniteDimensional K V
f : End K V
μ : K
⊢ ↑(generalizedEigenspace f μ) (finrank K V + finrank K V) = ↑(generalizedEigenspace f μ) (finrank K V)

tactic: linarith
state_before: case hk
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✝ : FiniteDimensional K V
f : End K V
μ : K
⊢ finrank K V ≤ finrank K V + finrank K V