File: Mathlib/Algebra/Lie/Weights/Cartan.lean

full_name: LieAlgebra.rootSpace
code: /-- Given a nilpotent Lie subalgebra `H ⊆ L`, the root space of a map `χ : H → R` is the weight
space of `L` regarded as a module of `H` via the adjoint action. -/
abbrev rootSpace (χ : H → R) : LieSubmodule R H L 
goal: LieSubmodule R (↥H) L

full_name: LieAlgebra.zero_rootSpace_eq_top_of_nilpotent
code: theorem zero_rootSpace_eq_top_of_nilpotent [IsNilpotent R L] :
    rootSpace (⊤ : LieSubalgebra R L) 0 = ⊤ 
goal: LieAlgebra.rootSpace ⊤ 0 = ⊤

full_name: LieAlgebra.rootSpace_comap_eq_weightSpace
code: @[simp]
theorem rootSpace_comap_eq_weightSpace (χ : H → R) :
    (rootSpace H χ).comap H.incl' = weightSpace H χ 
goal: LieSubmodule.comap H.incl' (LieAlgebra.rootSpace H χ) = LieModule.weightSpace (↥H) χ

full_name: LieAlgebra.lie_mem_weightSpace_of_mem_weightSpace
code: theorem lie_mem_weightSpace_of_mem_weightSpace {χ₁ χ₂ : H → R} {x : L} {m : M}
    (hx : x ∈ rootSpace H χ₁) (hm : m ∈ weightSpace M χ₂) : ⁅x, m⁆ ∈ weightSpace M (χ₁ + χ₂) 
goal: ⁅x, m⁆ ∈ LieModule.weightSpace M (χ₁ + χ₂)

full_name: LieAlgebra.toEnd_pow_apply_mem
code: lemma toEnd_pow_apply_mem {χ₁ χ₂ : H → R} {x : L} {m : M}
    (hx : x ∈ rootSpace H χ₁) (hm : m ∈ weightSpace M χ₂) (n) :
    (toEnd R L M x ^ n : Module.End R M) m ∈ weightSpace M (n • χ₁ + χ₂) 
goal: ((LieModule.toEnd R L M) x ^ n) m ∈ LieModule.weightSpace M (n • χ₁ + χ₂)

full_name: LieAlgebra.rootSpaceWeightSpaceProductAux
code: /-- Auxiliary definition for `rootSpaceWeightSpaceProduct`,
which is close to the deterministic timeout limit.
-/
def rootSpaceWeightSpaceProductAux {χ₁ χ₂ χ₃ : H → R} (hχ : χ₁ + χ₂ = χ₃) :
    rootSpace H χ₁ →ₗ[R] weightSpace M χ₂ →ₗ[R] weightSpace M χ₃ 
goal: ↥↑(LieAlgebra.rootSpace H χ₁) →ₗ[R] ↥↑(LieModule.weightSpace M χ₂) →ₗ[R] ↥↑(LieModule.weightSpace M χ₃)

full_name: LieAlgebra.rootSpaceWeightSpaceProduct
code: /-- Given a nilpotent Lie subalgebra `H ⊆ L` together with `χ₁ χ₂ : H → R`, there is a natural
`R`-bilinear product of root vectors and weight vectors, compatible with the actions of `H`. -/
def rootSpaceWeightSpaceProduct (χ₁ χ₂ χ₃ : H → R) (hχ : χ₁ + χ₂ = χ₃) :
    rootSpace H χ₁ ⊗[R] weightSpace M χ₂ →ₗ⁅R,H⁆ weightSpace M χ₃ 
goal: TensorProduct R ↥↑(LieAlgebra.rootSpace H χ₁) ↥↑(LieModule.weightSpace M χ₂) →ₗ⁅R,↥H⁆ ↥↑(LieModule.weightSpace M χ₃)

full_name: LieAlgebra.coe_rootSpaceWeightSpaceProduct_tmul
code: @[simp]
theorem coe_rootSpaceWeightSpaceProduct_tmul (χ₁ χ₂ χ₃ : H → R) (hχ : χ₁ + χ₂ = χ₃)
    (x : rootSpace H χ₁) (m : weightSpace M χ₂) :
    (rootSpaceWeightSpaceProduct R L H M χ₁ χ₂ χ₃ hχ (x ⊗ₜ m) : M) = ⁅(x : L), (m : M)⁆ 
goal: ↑((LieAlgebra.rootSpaceWeightSpaceProduct R L H M χ₁ χ₂ χ₃ hχ) (x ⊗ₜ[R] m)) = ⁅↑x, ↑m⁆

full_name: LieAlgebra.mapsTo_toEnd_weightSpace_add_of_mem_rootSpace
code: theorem mapsTo_toEnd_weightSpace_add_of_mem_rootSpace (α χ : H → R)
    {x : L} (hx : x ∈ rootSpace H α) :
    MapsTo (toEnd R L M x) (weightSpace M χ) (weightSpace M (α + χ)) 
goal: Set.MapsTo ⇑((LieModule.toEnd R L M) x) ↑(LieModule.weightSpace M χ) ↑(LieModule.weightSpace M (α + χ))

full_name: LieAlgebra.rootSpaceProduct
code: /-- Given a nilpotent Lie subalgebra `H ⊆ L` together with `χ₁ χ₂ : H → R`, there is a natural
`R`-bilinear product of root vectors, compatible with the actions of `H`. -/
def rootSpaceProduct (χ₁ χ₂ χ₃ : H → R) (hχ : χ₁ + χ₂ = χ₃) :
    rootSpace H χ₁ ⊗[R] rootSpace H χ₂ →ₗ⁅R,H⁆ rootSpace H χ₃ 
goal: TensorProduct R ↥↑(LieAlgebra.rootSpace H χ₁) ↥↑(LieAlgebra.rootSpace H χ₂) →ₗ⁅R,↥H⁆ ↥↑(LieAlgebra.rootSpace H χ₃)

full_name: LieAlgebra.rootSpaceProduct_def
code: @[simp]
theorem rootSpaceProduct_def : rootSpaceProduct R L H = rootSpaceWeightSpaceProduct R L H L 
goal: LieAlgebra.rootSpaceProduct R L H = LieAlgebra.rootSpaceWeightSpaceProduct R L H L

full_name: LieAlgebra.rootSpaceProduct_tmul
code: theorem rootSpaceProduct_tmul
    (χ₁ χ₂ χ₃ : H → R) (hχ : χ₁ + χ₂ = χ₃) (x : rootSpace H χ₁) (y : rootSpace H χ₂) :
    (rootSpaceProduct R L H χ₁ χ₂ χ₃ hχ (x ⊗ₜ y) : L) = ⁅(x : L), (y : L)⁆ 
goal: ↑((LieAlgebra.rootSpaceProduct R L H χ₁ χ₂ χ₃ hχ) (x ⊗ₜ[R] y)) = ⁅↑x, ↑y⁆

full_name: LieAlgebra.zeroRootSubalgebra
code: /-- Given a nilpotent Lie subalgebra `H ⊆ L`, the root space of the zero map `0 : H → R` is a Lie
subalgebra of `L`. -/
def zeroRootSubalgebra : LieSubalgebra R L 
goal: LieSubalgebra R L

full_name: LieAlgebra.coe_zeroRootSubalgebra
code: @[simp]
theorem coe_zeroRootSubalgebra : (zeroRootSubalgebra R L H : Submodule R L) = rootSpace H 0 
goal: (LieAlgebra.zeroRootSubalgebra R L H).toSubmodule = ↑(LieAlgebra.rootSpace H 0)

full_name: LieAlgebra.mem_zeroRootSubalgebra
code: theorem mem_zeroRootSubalgebra (x : L) :
    x ∈ zeroRootSubalgebra R L H ↔ ∀ y : H, ∃ k : ℕ, (toEnd R H L y ^ k) x = 0 
goal: x ∈ LieAlgebra.zeroRootSubalgebra R L H ↔ ∀ (y : ↥H), ∃ k, ((LieModule.toEnd R (↥H) L) y ^ k) x = 0

full_name: LieAlgebra.toLieSubmodule_le_rootSpace_zero
code: theorem toLieSubmodule_le_rootSpace_zero : H.toLieSubmodule ≤ rootSpace H 0 
goal: H.toLieSubmodule ≤ LieAlgebra.rootSpace H 0

full_name: LieAlgebra.instNontrivialSubtypeMemSubmoduleWeightSpaceLieSubalgebraOfNatForall
code: /-- This enables the instance `Zero (Weight R H L)`. -/
instance [Nontrivial H] : Nontrivial (weightSpace L (0 : H → R)) 
goal: Nontrivial ↥↑(LieModule.weightSpace L 0)

full_name: LieAlgebra.le_zeroRootSubalgebra
code: theorem le_zeroRootSubalgebra : H ≤ zeroRootSubalgebra R L H 
goal: H ≤ LieAlgebra.zeroRootSubalgebra R L H

full_name: LieAlgebra.zeroRootSubalgebra_normalizer_eq_self
code: @[simp]
theorem zeroRootSubalgebra_normalizer_eq_self :
    (zeroRootSubalgebra R L H).normalizer = zeroRootSubalgebra R L H 
goal: (LieAlgebra.zeroRootSubalgebra R L H).normalizer = LieAlgebra.zeroRootSubalgebra R L H

full_name: LieAlgebra.is_cartan_of_zeroRootSubalgebra_eq
code: /-- If the zero root subalgebra of a nilpotent Lie subalgebra `H` is just `H` then `H` is a Cartan
subalgebra.

When `L` is Noetherian, it follows from Engel's theorem that the converse holds. See
`LieAlgebra.zeroRootSubalgebra_eq_iff_is_cartan` -/
theorem is_cartan_of_zeroRootSubalgebra_eq (h : zeroRootSubalgebra R L H = H) :
    H.IsCartanSubalgebra 
goal: H.IsCartanSubalgebra

full_name: LieAlgebra.zeroRootSubalgebra_eq_of_is_cartan
code: @[simp]
theorem zeroRootSubalgebra_eq_of_is_cartan (H : LieSubalgebra R L) [H.IsCartanSubalgebra]
    [IsNoetherian R L] : zeroRootSubalgebra R L H = H 
goal: LieAlgebra.zeroRootSubalgebra R L H = H

full_name: LieAlgebra.zeroRootSubalgebra_eq_iff_is_cartan
code: theorem zeroRootSubalgebra_eq_iff_is_cartan [IsNoetherian R L] :
    zeroRootSubalgebra R L H = H ↔ H.IsCartanSubalgebra 
goal: LieAlgebra.zeroRootSubalgebra R L H = H ↔ H.IsCartanSubalgebra

full_name: LieAlgebra.rootSpace_zero_eq
code: @[simp]
theorem rootSpace_zero_eq (H : LieSubalgebra R L) [H.IsCartanSubalgebra] [IsNoetherian R L] :
    rootSpace H 0 = H.toLieSubmodule 
goal: LieAlgebra.rootSpace H 0 = H.toLieSubmodule

full_name: LieAlgebra.corootSpace
code: /-- Given a root `α` relative to a Cartan subalgebra `H`, this is the span of all products of
an element of the `α` root space and an element of the `-α` root space. Informally it is often
denoted `⁅H(α), H(-α)⁆`.

If the Killing form is non-degenerate and the coefficients are a perfect field, this space is
one-dimensional. See `LieAlgebra.IsKilling.coe_corootSpace_eq_span_singleton` and
`LieAlgebra.IsKilling.coe_corootSpace_eq_span_singleton'`.

Note that the name "coroot space" is not standard as this space does not seem to have a name in the
informal literature. -/
def corootSpace : LieIdeal R H 
goal: LieIdeal R ↥H

full_name: LieAlgebra.mem_corootSpace
code: lemma mem_corootSpace {x : H} :
    x ∈ corootSpace α ↔
    (x : L) ∈ Submodule.span R {⁅y, z⁆ | (y ∈ rootSpace H α) (z ∈ rootSpace H (-α))} 
goal: x ∈ LieAlgebra.corootSpace α ↔
  ↑x ∈ Submodule.span R {x | ∃ y ∈ LieAlgebra.rootSpace H α, ∃ z ∈ LieAlgebra.rootSpace H (-α), ⁅y, z⁆ = x}

full_name: LieAlgebra.mem_corootSpace'
code: lemma mem_corootSpace' {x : H} :
    x ∈ corootSpace α ↔
    x ∈ Submodule.span R ({⁅y, z⁆ | (y ∈ rootSpace H α) (z ∈ rootSpace H (-α))} : Set H) 
goal: x ∈ LieAlgebra.corootSpace α ↔
  x ∈ Submodule.span R {x | ∃ y ∈ LieAlgebra.rootSpace H α, ∃ z ∈ LieAlgebra.rootSpace H (-α), ⁅y, z⁆ = ↑x}