-- Mathlib/Algebra/Lie/EngelSubalgebra.lean
/-- Engel subalgebras are self-normalizing.
See `LieSubalgebra.normalizer_eq_self_of_engel_le` for a proof that Lie-subalgebras
containing an Engel subalgebra are also self-normalizing,
provided that the ambient Lie algebra is artinina. -/
@[simp]
lemma normalizer_engel (x : L) : normalizer (engel R x) = engel R x

Proof state:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
hy : y ∈ (engel R x).normalizer
⊢ y ∈ engel R x

Tactic:
rw [mem_normalizer_iff] at hy

Result:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
hy : ∀ y_1 ∈ engel R x, ⁅y, y_1⁆ ∈ engel R x
⊢ y ∈ engel R x

Proof state:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x : L
⊢ (engel R x).normalizer ≤ engel R x

Tactic:
intro y hy

Result:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
hy : y ∈ (engel R x).normalizer
⊢ y ∈ engel R x

Proof state:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
hy : ∀ y_1 ∈ engel R x, ⁅y, y_1⁆ ∈ engel R x
⊢ y ∈ engel R x

Tactic:
specialize hy x (self_mem_engel R x)

Result:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
hy : ⁅y, x⁆ ∈ engel R x
⊢ y ∈ engel R x

Proof state:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
hy : ⁅y, x⁆ ∈ engel R x
⊢ y ∈ engel R x

Tactic:
rw [← lie_skew, neg_mem_iff (G := L), mem_engel_iff] at hy

Result:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
hy : ∃ n, ((ad R L) x ^ n) ⁅x, y⁆ = 0
⊢ y ∈ engel R x

Proof state:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x : L
⊢ (engel R x).normalizer = engel R x

Tactic:
apply le_antisymm _ (le_normalizer _)

Result:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x : L
⊢ (engel R x).normalizer ≤ engel R x

Proof state:
case h
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
n : ℕ
hn : ((ad R L) x ^ n) ⁅x, y⁆ = 0
⊢ ((ad R L) x ^ n) (((ad R L) x) y) = 0

Tactic:
exact hn

Result:
no goals

Proof state:
case intro
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
n : ℕ
hn : ((ad R L) x ^ n) ⁅x, y⁆ = 0
⊢ ∃ n, ((ad R L) x ^ n) y = 0

Tactic:
use n+1

Result:
case h
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
n : ℕ
hn : ((ad R L) x ^ n) ⁅x, y⁆ = 0
⊢ ((ad R L) x ^ (n + 1)) y = 0

Proof state:
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
hy : ∃ n, ((ad R L) x ^ n) ⁅x, y⁆ = 0
⊢ y ∈ engel R x

Tactic:
rcases hy with ⟨n, hn⟩

Result:
case intro
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
n : ℕ
hn : ((ad R L) x ^ n) ⁅x, y⁆ = 0
⊢ y ∈ engel R x

Proof state:
case intro
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
n : ℕ
hn : ((ad R L) x ^ n) ⁅x, y⁆ = 0
⊢ y ∈ engel R x

Tactic:
rw [mem_engel_iff]

Result:
case intro
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
n : ℕ
hn : ((ad R L) x ^ n) ⁅x, y⁆ = 0
⊢ ∃ n, ((ad R L) x ^ n) y = 0

Proof state:
case h
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
n : ℕ
hn : ((ad R L) x ^ n) ⁅x, y⁆ = 0
⊢ ((ad R L) x ^ (n + 1)) y = 0

Tactic:
rw [pow_succ, LinearMap.mul_apply]

Result:
case h
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
x y : L
n : ℕ
hn : ((ad R L) x ^ n) ⁅x, y⁆ = 0
⊢ ((ad R L) x ^ n) (((ad R L) x) y) = 0