File: Mathlib/Algebra/Lie/Engel.lean

full_name: LieSubmodule.exists_smul_add_of_span_sup_eq_top
code: theorem exists_smul_add_of_span_sup_eq_top (y : L) : ∃ t : R, ∃ z ∈ I, y = t • x + z 
goal: ∃ t, ∃ z ∈ I, y = t • x + z

full_name: LieSubmodule.lie_top_eq_of_span_sup_eq_top
code: theorem lie_top_eq_of_span_sup_eq_top (N : LieSubmodule R L M) :
    (↑⁅(⊤ : LieIdeal R L), N⁆ : Submodule R M) =
      (N : Submodule R M).map (toEnd R L M x) ⊔ (↑⁅I, N⁆ : Submodule R M) 
goal: ↑⁅⊤, N⁆ = Submodule.map ((LieModule.toEnd R L M) x) ↑N ⊔ ↑⁅I, N⁆

full_name: LieSubmodule.lcs_le_lcs_of_is_nilpotent_span_sup_eq_top
code: theorem lcs_le_lcs_of_is_nilpotent_span_sup_eq_top {n i j : ℕ}
    (hxn : toEnd R L M x ^ n = 0) (hIM : lowerCentralSeries R L M i ≤ I.lcs M j) :
    lowerCentralSeries R L M (i + n) ≤ I.lcs M (j + 1) 
goal: LieModule.lowerCentralSeries R L M (i + n) ≤ I.lcs M (j + 1)

full_name: LieSubmodule.isNilpotentOfIsNilpotentSpanSupEqTop
code: theorem isNilpotentOfIsNilpotentSpanSupEqTop (hnp : IsNilpotent <| toEnd R L M x)
    (hIM : IsNilpotent R I M) : IsNilpotent R L M 
goal: LieModule.IsNilpotent R L M

full_name: LieAlgebra.IsEngelian
code: /-- A Lie algebra `L` is said to be Engelian if a sufficient condition for any `L`-Lie module `M` to
be nilpotent is that the image of the map `L → End(M)` consists of nilpotent elements.

Engel's theorem `LieAlgebra.isEngelian_of_isNoetherian` states that any Noetherian Lie algebra is
Engelian. -/
def LieAlgebra.IsEngelian : Prop 
goal: Prop

full_name: LieAlgebra.isEngelian_of_subsingleton
code: theorem LieAlgebra.isEngelian_of_subsingleton [Subsingleton L] : LieAlgebra.IsEngelian R L 
goal: LieAlgebra.IsEngelian R L

full_name: Function.Surjective.isEngelian
code: theorem Function.Surjective.isEngelian {f : L →ₗ⁅R⁆ L₂} (hf : Function.Surjective f)
    (h : LieAlgebra.IsEngelian.{u₁, u₂, u₄} R L) : LieAlgebra.IsEngelian.{u₁, u₃, u₄} R L₂ 
goal: LieAlgebra.IsEngelian R L₂

full_name: LieEquiv.isEngelian_iff
code: theorem LieEquiv.isEngelian_iff (e : L ≃ₗ⁅R⁆ L₂) :
    LieAlgebra.IsEngelian.{u₁, u₂, u₄} R L ↔ LieAlgebra.IsEngelian.{u₁, u₃, u₄} R L₂ 
goal: LieAlgebra.IsEngelian R L ↔ LieAlgebra.IsEngelian R L₂

full_name: LieAlgebra.exists_engelian_lieSubalgebra_of_lt_normalizer
code: theorem LieAlgebra.exists_engelian_lieSubalgebra_of_lt_normalizer {K : LieSubalgebra R L}
    (hK₁ : LieAlgebra.IsEngelian.{u₁, u₂, u₄} R K) (hK₂ : K < K.normalizer) :
    ∃ (K' : LieSubalgebra R L), LieAlgebra.IsEngelian.{u₁, u₂, u₄} R K' ∧ K < K' 
goal: ∃ K', LieAlgebra.IsEngelian R ↥K' ∧ K < K'

full_name: LieAlgebra.isEngelian_of_isNoetherian
code: /-- *Engel's theorem*.

Note that this implies all traditional forms of Engel's theorem via
`LieModule.nontrivial_max_triv_of_isNilpotent`, `LieModule.isNilpotent_iff_forall`,
`LieAlgebra.isNilpotent_iff_forall`. -/
theorem LieAlgebra.isEngelian_of_isNoetherian [IsNoetherian R L] : LieAlgebra.IsEngelian R L 
goal: LieAlgebra.IsEngelian R L

full_name: LieModule.isNilpotent_iff_forall
code: /-- Engel's theorem.

See also `LieModule.isNilpotent_iff_forall'` which assumes that `M` is Noetherian instead of `L`. -/
theorem LieModule.isNilpotent_iff_forall [IsNoetherian R L] :
    LieModule.IsNilpotent R L M ↔ ∀ x, _root_.IsNilpotent <| toEnd R L M x 
goal: LieModule.IsNilpotent R L M ↔ ∀ (x : L), IsNilpotent ((LieModule.toEnd R L M) x)

full_name: LieModule.isNilpotent_iff_forall'
code: /-- Engel's theorem. -/
theorem LieModule.isNilpotent_iff_forall' [IsNoetherian R M] :
    LieModule.IsNilpotent R L M ↔ ∀ x, _root_.IsNilpotent <| toEnd R L M x 
goal: LieModule.IsNilpotent R L M ↔ ∀ (x : L), IsNilpotent ((LieModule.toEnd R L M) x)

full_name: LieAlgebra.isNilpotent_iff_forall
code: /-- Engel's theorem. -/
theorem LieAlgebra.isNilpotent_iff_forall [IsNoetherian R L] :
    LieAlgebra.IsNilpotent R L ↔ ∀ x, _root_.IsNilpotent <| LieAlgebra.ad R L x 
goal: LieAlgebra.IsNilpotent R L ↔ ∀ (x : L), IsNilpotent ((LieAlgebra.ad R L) x)