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

Proof steps:
state_before: K : Type u_1
V : Type u_2
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
R : Type u_3
M : Type u_4
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
state_after: K : Type u_1
V : Type u_2
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
R : Type u_3
M : Type u_4
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
this : Submodule.comap p.subtype p = Submodule.comap p.subtype (⨆ μ, ⨆ k, p ⊓ (f.genEigenspace μ) k)
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
tactic: have := congr_arg (Submodule.comap p.subtype) (Submodule.eq_iSup_inf_genEigenspace h h')
state_before: K : Type u_1
V : Type u_2
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
R : Type u_3
M : Type u_4
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
this : Submodule.comap p.subtype p = Submodule.comap p.subtype (⨆ μ, ⨆ k, p ⊓ (f.genEigenspace μ) k)
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
state_after: K : Type u_1
V : Type u_2
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
R : Type u_3
M : Type u_4
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
this : Submodule.comap p.subtype p = Submodule.comap p.subtype (⨆ μ, ⨆ k, p ⊓ (f.genEigenspace μ) k)
h_inj : Injective ⇑p.subtype
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
tactic: have h_inj : Function.Injective p.subtype := Subtype.coe_injective
state_before: K : Type u_1
V : Type u_2
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
R : Type u_3
M : Type u_4
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
this : Submodule.comap p.subtype p = Submodule.comap p.subtype (⨆ μ, ⨆ k, p ⊓ (f.genEigenspace μ) k)
h_inj : Injective ⇑p.subtype
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
state_after: K : Type u_1
V : Type u_2
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
R : Type u_3
M : Type u_4
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_inj : Injective ⇑p.subtype
this : ⊤ = ⨆ i, ⨆ i_1, (genEigenspace (LinearMap.restrict f h) i) i_1
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
tactic: simp_rw [Submodule.inf_genEigenspace f p h, Submodule.comap_subtype_self,
    ← Submodule.map_iSup, Submodule.comap_map_eq_of_injective h_inj] at this
state_before: K : Type u_1
V : Type u_2
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
R : Type u_3
M : Type u_4
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
p : Submodule K V
f : End K V
inst✝ : FiniteDimensional K V
h : ∀ x ∈ p, f x ∈ p
h' : ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_inj : Injective ⇑p.subtype
this : ⊤ = ⨆ i, ⨆ i_1, (genEigenspace (LinearMap.restrict f h) i) i_1
⊢ ⨆ μ, ⨆ k, (genEigenspace (LinearMap.restrict f h) μ) k = ⊤
state_after: no goals
tactic: exact this.symm