Theorem: LieModule.traceForm_eq_sum_weightSpaceOf
File: Mathlib/Algebra/Lie/TraceForm.lean

tactic: ext x y
state_before: R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z : L
⊢ traceForm R L M = ∑ χ ∈ ⋯.toFinset, traceForm R L ↥↑(weightSpaceOf M χ z)
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
⊢ ((traceForm R L M) x) y = ((∑ χ ∈ ⋯.toFinset, traceForm R L ↥↑(weightSpaceOf M χ z)) x) y

tactic: have hxy : ∀ χ : R, MapsTo ((toEnd R L M x).comp (toEnd R L M y))
    (weightSpaceOf M χ z) (weightSpaceOf M χ z) :=
  fun χ m hm ↦ LieSubmodule.lie_mem _ <| LieSubmodule.lie_mem _ hm
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
⊢ ((traceForm R L M) x) y = ((∑ χ ∈ ⋯.toFinset, traceForm R L ↥↑(weightSpaceOf M χ z)) x) y
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
⊢ ((traceForm R L M) x) y = ((∑ χ ∈ ⋯.toFinset, traceForm R L ↥↑(weightSpaceOf M χ z)) x) y

tactic: have hfin : {χ : R | (weightSpaceOf M χ z : Submodule R M) ≠ ⊥}.Finite := by
  convert finite_weightSpaceOf_ne_bot R L M z
  exact LieSubmodule.coeSubmodule_eq_bot_iff (weightSpaceOf M _ _)
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
⊢ ((traceForm R L M) x) y = ((∑ χ ∈ ⋯.toFinset, traceForm R L ↥↑(weightSpaceOf M χ z)) x) y
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
hfin : {χ | ↑(weightSpaceOf M χ z) ≠ ⊥}.Finite
⊢ ((traceForm R L M) x) y = ((∑ χ ∈ ⋯.toFinset, traceForm R L ↥↑(weightSpaceOf M χ z)) x) y

tactic: classical
have hds := DirectSum.isInternal_submodule_of_independent_of_iSup_eq_top
  (LieSubmodule.independent_iff_coe_toSubmodule.mp <| independent_weightSpaceOf R L M z)
  (IsTriangularizable.iSup_eq_top z)
simp only [LinearMap.coeFn_sum, Finset.sum_apply, traceForm_apply_apply,
  LinearMap.trace_eq_sum_trace_restrict' hds hfin hxy]
exact Finset.sum_congr (by simp) (fun χ _ ↦ rfl)
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
hfin : {χ | ↑(weightSpaceOf M χ z) ≠ ⊥}.Finite
⊢ ((traceForm R L M) x) y = ((∑ χ ∈ ⋯.toFinset, traceForm R L ↥↑(weightSpaceOf M χ z)) x) y
state_after: no goals

tactic: convert finite_weightSpaceOf_ne_bot R L M z
state_before: R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
⊢ {χ | ↑(weightSpaceOf M χ z) ≠ ⊥}.Finite
state_after: case h.e'_2.h.e'_2.h.h.a
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
x✝ : R
⊢ ↑(weightSpaceOf M x✝ z) = ⊥ ↔ weightSpaceOf M x✝ z = ⊥

tactic: exact LieSubmodule.coeSubmodule_eq_bot_iff (weightSpaceOf M _ _)
state_before: case h.e'_2.h.e'_2.h.h.a
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
x✝ : R
⊢ ↑(weightSpaceOf M x✝ z) = ⊥ ↔ weightSpaceOf M x✝ z = ⊥
state_after: no goals

tactic: have hds := DirectSum.isInternal_submodule_of_independent_of_iSup_eq_top
  (LieSubmodule.independent_iff_coe_toSubmodule.mp <| independent_weightSpaceOf R L M z)
  (IsTriangularizable.iSup_eq_top z)
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
hfin : {χ | ↑(weightSpaceOf M χ z) ≠ ⊥}.Finite
⊢ ((traceForm R L M) x) y = ((∑ χ ∈ ⋯.toFinset, traceForm R L ↥↑(weightSpaceOf M χ z)) x) y
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
hfin : {χ | ↑(weightSpaceOf M χ z) ≠ ⊥}.Finite
hds : DirectSum.IsInternal fun i => ↑(weightSpaceOf M i z)
⊢ ((traceForm R L M) x) y = ((∑ χ ∈ ⋯.toFinset, traceForm R L ↥↑(weightSpaceOf M χ z)) x) y

tactic: simp only [LinearMap.coeFn_sum, Finset.sum_apply, traceForm_apply_apply,
  LinearMap.trace_eq_sum_trace_restrict' hds hfin hxy]
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
hfin : {χ | ↑(weightSpaceOf M χ z) ≠ ⊥}.Finite
hds : DirectSum.IsInternal fun i => ↑(weightSpaceOf M i z)
⊢ ((traceForm R L M) x) y = ((∑ χ ∈ ⋯.toFinset, traceForm R L ↥↑(weightSpaceOf M χ z)) x) y
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
hfin : {χ | ↑(weightSpaceOf M χ z) ≠ ⊥}.Finite
hds : DirectSum.IsInternal fun i => ↑(weightSpaceOf M i z)
⊢ ∑ i ∈ hfin.toFinset, (trace R ↥↑(weightSpaceOf M i z)) ((φ x ∘ₗ φ y).restrict ⋯) =
    ∑ x_1 ∈ ⋯.toFinset,
      (trace R ↥↑(weightSpaceOf M x_1 z))
        ((toEnd R L ↥↑(weightSpaceOf M x_1 z)) x ∘ₗ (toEnd R L ↥↑(weightSpaceOf M x_1 z)) y)

tactic: exact Finset.sum_congr (by simp) (fun χ _ ↦ rfl)
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
hfin : {χ | ↑(weightSpaceOf M χ z) ≠ ⊥}.Finite
hds : DirectSum.IsInternal fun i => ↑(weightSpaceOf M i z)
⊢ ∑ i ∈ hfin.toFinset, (trace R ↥↑(weightSpaceOf M i z)) ((φ x ∘ₗ φ y).restrict ⋯) =
    ∑ x_1 ∈ ⋯.toFinset,
      (trace R ↥↑(weightSpaceOf M x_1 z))
        ((toEnd R L ↥↑(weightSpaceOf M x_1 z)) x ∘ₗ (toEnd R L ↥↑(weightSpaceOf M x_1 z)) y)
state_after: no goals

tactic: simp
state_before: R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
inst✝⁷ : LieRingModule L M
inst✝⁶ : LieModule R L M
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : IsTriangularizable R L M
z x y : L
hxy : ∀ (χ : R), MapsTo ⇑(φ x ∘ₗ φ y) ↑(weightSpaceOf M χ z) ↑(weightSpaceOf M χ z)
hfin : {χ | ↑(weightSpaceOf M χ z) ≠ ⊥}.Finite
hds : DirectSum.IsInternal fun i => ↑(weightSpaceOf M i z)
⊢ hfin.toFinset = ⋯.toFinset
state_after: no goals