Theorem: LieModule.trace_toEnd_weightSpaceChain_eq_zero
File: Mathlib/Algebra/Lie/Weights/Chain.lean

tactic: rw [LieAlgebra.mem_corootSpace'] at hx
state_before: R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x : ↥H
hx : x ∈ corootSpace α
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) x) = 0
state_after: R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x : ↥H
hx : x ∈ Submodule.span R {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) x) = 0

tactic: induction hx using Submodule.span_induction'
state_before: R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x : ↥H
hx : x ∈ Submodule.span R {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) x) = 0
state_after: case mem
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x x✝ : ↥H
h✝ : x✝ ∈ {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) x✝) = 0

case zero
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x : ↥H
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) 0) = 0

case add
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x x✝ : ↥H
hx✝ : x✝ ∈ Submodule.span R {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
y✝ : ↥H
hy✝ : y✝ ∈ Submodule.span R {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
a✝¹ : (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) x✝) = 0
a✝ : (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) y✝) = 0
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) (x✝ + y✝)) = 0

case smul
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x : ↥H
a✝¹ : R
x✝ : ↥H
hx✝ : x✝ ∈ Submodule.span R {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
a✝ : (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) x✝) = 0
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) (a✝¹ • x✝)) = 0

tactic: next u hu =>
obtain ⟨y, hy, z, hz, hyz⟩ := hu
let f : Module.End R (weightSpaceChain M α χ p q) :=
  { toFun := fun ⟨m, hm⟩ ↦ ⟨⁅(y : L), m⁆,
      lie_mem_weightSpaceChain_of_weightSpace_eq_bot_right M α χ p q hq hy hm⟩
    map_add' := fun _ _ ↦ by simp
    map_smul' := fun t m ↦ by simp }
let g : Module.End R (weightSpaceChain M α χ p q) :=
  { toFun := fun ⟨m, hm⟩ ↦ ⟨⁅(z : L), m⁆,
      lie_mem_weightSpaceChain_of_weightSpace_eq_bot_left M α χ p q hp hz hm⟩
    map_add' := fun _ _ ↦ by simp
    map_smul' := fun t m ↦ by simp }
have hfg : toEnd R H _ u = ⁅f, g⁆ := by ext; simp [f, g, ← hyz]
simp [hfg]
state_before: case mem
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x x✝ : ↥H
h✝ : x✝ ∈ {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) x✝) = 0
state_after: no goals

tactic: obtain ⟨y, hy, z, hz, hyz⟩ := hu
state_before: R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
hu : u ∈ {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) = 0
state_after: case intro.intro.intro.intro
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) = 0

tactic: let f : Module.End R (weightSpaceChain M α χ p q) :=
  { toFun := fun ⟨m, hm⟩ ↦ ⟨⁅(y : L), m⁆,
      lie_mem_weightSpaceChain_of_weightSpace_eq_bot_right M α χ p q hq hy hm⟩
    map_add' := fun _ _ ↦ by simp
    map_smul' := fun t m ↦ by simp }
state_before: case intro.intro.intro.intro
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) = 0
state_after: case intro.intro.intro.intro
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) = 0

tactic: let g : Module.End R (weightSpaceChain M α χ p q) :=
  { toFun := fun ⟨m, hm⟩ ↦ ⟨⁅(z : L), m⁆,
      lie_mem_weightSpaceChain_of_weightSpace_eq_bot_left M α χ p q hp hz hm⟩
    map_add' := fun _ _ ↦ by simp
    map_smul' := fun t m ↦ by simp }
state_before: case intro.intro.intro.intro
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) = 0
state_after: case intro.intro.intro.intro
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
g : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) = 0

tactic: have hfg : toEnd R H _ u = ⁅f, g⁆ := by ext; simp [f, g, ← hyz]
state_before: case intro.intro.intro.intro
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
g : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) = 0
state_after: case intro.intro.intro.intro
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
g : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
hfg : (toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u = ⁅f, g⁆
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) = 0

tactic: simp [hfg]
state_before: case intro.intro.intro.intro
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
g : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
hfg : (toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u = ⁅f, g⁆
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) = 0
state_after: no goals

tactic: simp
state_before: R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
x✝¹ x✝ : ↥↑(weightSpaceChain M α χ p q)
⊢ (fun x =>
        match x with
        | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩)
      (x✝¹ + x✝) =
    (fun x =>
          match x with
          | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩)
        x✝¹ +
      (fun x =>
          match x with
          | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩)
        x✝
state_after: no goals

tactic: simp
state_before: R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
t : R
m : ↥↑(weightSpaceChain M α χ p q)
⊢ {
          toFun := fun x =>
            match x with
            | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
          map_add' := ⋯ }.toFun
      (t • m) =
    (RingHom.id R) t •
      {
            toFun := fun x =>
              match x with
              | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
            map_add' := ⋯ }.toFun
        m
state_after: no goals

tactic: simp
state_before: R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
x✝¹ x✝ : ↥↑(weightSpaceChain M α χ p q)
⊢ (fun x =>
        match x with
        | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩)
      (x✝¹ + x✝) =
    (fun x =>
          match x with
          | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩)
        x✝¹ +
      (fun x =>
          match x with
          | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩)
        x✝
state_after: no goals

tactic: simp
state_before: R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
t : R
m : ↥↑(weightSpaceChain M α χ p q)
⊢ {
          toFun := fun x =>
            match x with
            | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩,
          map_add' := ⋯ }.toFun
      (t • m) =
    (RingHom.id R) t •
      {
            toFun := fun x =>
              match x with
              | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩,
            map_add' := ⋯ }.toFun
        m
state_after: no goals

tactic: ext
state_before: R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
g : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
⊢ (toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u = ⁅f, g⁆
state_after: case h.a
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
g : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
x✝ : ↥↑(weightSpaceChain M α χ p q)
⊢ ↑(((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) x✝) = ↑(⁅f, g⁆ x✝)

tactic: simp [f, g, ← hyz]
state_before: case h.a
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x u : ↥H
y : L
hy : y ∈ rootSpace H α
z : L
hz : z ∈ rootSpace H (-α)
hyz : ⁅y, z⁆ = ↑u
f : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅y, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
g : Module.End R ↥↑(weightSpaceChain M α χ p q) :=
  {
    toFun := fun x =>
      match x with
      | ⟨m, hm⟩ => ⟨⁅z, m⁆, ⋯⟩,
    map_add' := ⋯, map_smul' := ⋯ }
x✝ : ↥↑(weightSpaceChain M α χ p q)
⊢ ↑(((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) u) x✝) = ↑(⁅f, g⁆ x✝)
state_after: no goals

tactic: simp
state_before: case zero
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x : ↥H
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) 0) = 0
state_after: no goals

tactic: simp_all
state_before: case add
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x x✝ : ↥H
hx✝ : x✝ ∈ Submodule.span R {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
y✝ : ↥H
hy✝ : y✝ ∈ Submodule.span R {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
a✝¹ : (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) x✝) = 0
a✝ : (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) y✝) = 0
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) (x✝ + y✝)) = 0
state_after: no goals

tactic: simp_all
state_before: case smul
R : Type u_1
L : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
M : Type u_3
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : LieRingModule L M
inst✝² : LieModule R L M
H : LieSubalgebra R L
α χ : ↥H → R
p q : ℤ
inst✝¹ : H.IsCartanSubalgebra
inst✝ : IsNoetherian R L
hp : weightSpace M (p • α + χ) = ⊥
hq : weightSpace M (q • α + χ) = ⊥
x : ↥H
a✝¹ : R
x✝ : ↥H
hx✝ : x✝ ∈ Submodule.span R {x | ∃ y ∈ rootSpace H α, ∃ z ∈ rootSpace H (-α), ⁅y, z⁆ = ↑x}
a✝ : (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) x✝) = 0
⊢ (LinearMap.trace R ↥↑(weightSpaceChain M α χ p q)) ((toEnd R ↥H ↥↑(weightSpaceChain M α χ p q)) (a✝¹ • x✝)) = 0
state_after: no goals