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.genEigenspace μ (finrank K V)) =
        LinearMap.ker ((f - algebraMap _ _ μ) ^ finrank K V *
          (f - algebraMap K (End K V) μ) ^ finrank K V) := by
            rw [genEigenspace, OrderHom.coe_mk, ← LinearMap.ker_comp]; rfl
    _ = f.genEigenspace μ (finrank K V + finrank K V) := by rw [← pow_add]; rfl
    _ = f.genEigenspace μ (finrank K V) := by
      rw [genEigenspace_eq_genEigenspace_finrank_of_le]; omega
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 (f.genEigenrange μ (finrank K V)) ((f.genEigenspace μ) (finrank K V))
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✝ : FiniteDimensional K V
f : End K V
μ : K
h :
  Submodule.comap ((f - (algebraMap K (End K V)) μ) ^ finrank K V) ((f.genEigenspace μ) (finrank K V)) =
    (f.genEigenspace μ) (finrank K V)
⊢ Disjoint (f.genEigenrange μ (finrank K V)) ((f.genEigenspace μ) (finrank K V))

tactic: rw [disjoint_iff_inf_le, genEigenrange, 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) ((f.genEigenspace μ) (finrank K V)) =
    (f.genEigenspace μ) (finrank K V)
⊢ Disjoint (f.genEigenrange μ (finrank K V)) ((f.genEigenspace μ) (finrank K V))
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✝ : FiniteDimensional K V
f : End K V
μ : K
h :
  Submodule.comap ((f - (algebraMap K (End K V)) μ) ^ finrank K V) ((f.genEigenspace μ) (finrank K V)) =
    (f.genEigenspace μ) (finrank K V)
⊢ Submodule.map ((f - (algebraMap K (End K V)) μ) ^ finrank K V) ((f.genEigenspace μ) (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) ((f.genEigenspace μ) (finrank K V)) =
    (f.genEigenspace μ) (finrank K V)
⊢ Submodule.map ((f - (algebraMap K (End K V)) μ) ^ finrank K V) ((f.genEigenspace μ) (finrank K V)) ≤ ⊥
state_after: no goals

tactic: rw [genEigenspace, OrderHom.coe_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) ((f.genEigenspace μ) (finrank K V)) =
    LinearMap.ker ((f - (algebraMap K (End K V)) μ) ^ finrank K V * (f - (algebraMap K (End K V)) μ) ^ finrank K V)
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✝ : 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) =
    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 (((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)
state_after: no goals

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) =
    (f.genEigenspace μ) (finrank K V + finrank K V)
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✝ : FiniteDimensional K V
f : End K V
μ : K
⊢ LinearMap.ker ((f - (algebraMap K (End K V)) μ) ^ (finrank K V + finrank K V)) =
    (f.genEigenspace μ) (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)) =
    (f.genEigenspace μ) (finrank K V + finrank K V)
state_after: no goals

tactic: rw [genEigenspace_eq_genEigenspace_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
⊢ (f.genEigenspace μ) (finrank K V + finrank K V) = (f.genEigenspace μ) (finrank K V)
state_after: 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

tactic: omega
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
state_after: no goals