Theorem: LieAlgebra.IsKilling.ker_restrict_eq_bot_of_isCartanSubalgebra
File: Mathlib/Algebra/Lie/Weights/Killing.lean

tactic: have h : Codisjoint (rootSpace H 0) (LieModule.posFittingComp R H L) :=
  (LieModule.isCompl_weightSpace_zero_posFittingComp R H L).codisjoint
state_before: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
⊢ LinearMap.ker ((killingForm R L).restrict H.toSubmodule) = ⊥
state_after: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
h : Codisjoint (rootSpace H 0) (LieModule.posFittingComp R (↥H) L)
⊢ LinearMap.ker ((killingForm R L).restrict H.toSubmodule) = ⊥

tactic: replace h : Codisjoint (H : Submodule R L) (LieModule.posFittingComp R H L : Submodule R L) := by
  rwa [codisjoint_iff, ← LieSubmodule.coe_toSubmodule_eq_iff, LieSubmodule.sup_coe_toSubmodule,
    LieSubmodule.top_coeSubmodule, rootSpace_zero_eq R L H, LieSubalgebra.coe_toLieSubmodule,
    ← codisjoint_iff] at h
state_before: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
h : Codisjoint (rootSpace H 0) (LieModule.posFittingComp R (↥H) L)
⊢ LinearMap.ker ((killingForm R L).restrict H.toSubmodule) = ⊥
state_after: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
h : Codisjoint H.toSubmodule ↑(LieModule.posFittingComp R (↥H) L)
⊢ LinearMap.ker ((killingForm R L).restrict H.toSubmodule) = ⊥

tactic: suffices this : ∀ m₀ ∈ H, ∀ m₁ ∈ LieModule.posFittingComp R H L, killingForm R L m₀ m₁ = 0 by
  simp [LinearMap.BilinForm.ker_restrict_eq_of_codisjoint h this]
state_before: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
h : Codisjoint H.toSubmodule ↑(LieModule.posFittingComp R (↥H) L)
⊢ LinearMap.ker ((killingForm R L).restrict H.toSubmodule) = ⊥
state_after: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
h : Codisjoint H.toSubmodule ↑(LieModule.posFittingComp R (↥H) L)
⊢ ∀ m₀ ∈ H, ∀ m₁ ∈ LieModule.posFittingComp R (↥H) L, ((killingForm R L) m₀) m₁ = 0

tactic: intro m₀ h₀ m₁ h₁
state_before: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
h : Codisjoint H.toSubmodule ↑(LieModule.posFittingComp R (↥H) L)
⊢ ∀ m₀ ∈ H, ∀ m₁ ∈ LieModule.posFittingComp R (↥H) L, ((killingForm R L) m₀) m₁ = 0
state_after: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
h : Codisjoint H.toSubmodule ↑(LieModule.posFittingComp R (↥H) L)
m₀ : L
h₀ : m₀ ∈ H
m₁ : L
h₁ : m₁ ∈ LieModule.posFittingComp R (↥H) L
⊢ ((killingForm R L) m₀) m₁ = 0

tactic: exact killingForm_eq_zero_of_mem_zeroRoot_mem_posFitting R L H (le_zeroRootSubalgebra R L H h₀) h₁
state_before: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
h : Codisjoint H.toSubmodule ↑(LieModule.posFittingComp R (↥H) L)
m₀ : L
h₀ : m₀ ∈ H
m₁ : L
h₁ : m₁ ∈ LieModule.posFittingComp R (↥H) L
⊢ ((killingForm R L) m₀) m₁ = 0
state_after: no goals

tactic: rwa [codisjoint_iff, ← LieSubmodule.coe_toSubmodule_eq_iff, LieSubmodule.sup_coe_toSubmodule,
  LieSubmodule.top_coeSubmodule, rootSpace_zero_eq R L H, LieSubalgebra.coe_toLieSubmodule,
  ← codisjoint_iff] at h
state_before: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
h : Codisjoint (rootSpace H 0) (LieModule.posFittingComp R (↥H) L)
⊢ Codisjoint H.toSubmodule ↑(LieModule.posFittingComp R (↥H) L)
state_after: no goals

tactic: simp [LinearMap.BilinForm.ker_restrict_eq_of_codisjoint h this]
state_before: R : Type u_1
K : Type u_2
L : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : Field K
inst✝⁶ : LieAlgebra K L
inst✝⁵ : IsKilling R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : IsNoetherian R L
inst✝¹ : IsArtinian R L
H : LieSubalgebra R L
inst✝ : H.IsCartanSubalgebra
h : Codisjoint H.toSubmodule ↑(LieModule.posFittingComp R (↥H) L)
this : ∀ m₀ ∈ H, ∀ m₁ ∈ LieModule.posFittingComp R (↥H) L, ((killingForm R L) m₀) m₁ = 0
⊢ LinearMap.ker ((killingForm R L).restrict H.toSubmodule) = ⊥
state_after: no goals