Theorem: LieSubalgebra.normalizer_eq_self_iff
File: Mathlib/Algebra/Lie/Normalizer.lean

tactic: rw [LieSubmodule.eq_bot_iff]
state_before: R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
⊢ normalizer H = H ↔ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H) = ⊥

tactic: refine' ⟨fun h => _, fun h => le_antisymm _ H.le_normalizer⟩
state_before: R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
⊢ normalizer H = H ↔
    ∀ (m : L ⧸ toLieSubmodule H), m ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H) → m = 0

tactic: rintro ⟨x⟩ hx
state_before: case refine'_1
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : normalizer H = H
⊢ ∀ (m : L ⧸ toLieSubmodule H), m ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H) → m = 0

tactic: suffices x ∈ H by rwa [Submodule.Quotient.quot_mk_eq_mk, Submodule.Quotient.mk_eq_zero,
  coe_toLieSubmodule, mem_coe_submodule]
state_before: case refine'_1.mk
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : normalizer H = H
m✝ : L ⧸ toLieSubmodule H
x : L
hx : Quot.mk Setoid.r x ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H)
⊢ Quot.mk Setoid.r x = 0

tactic: rw [← h, H.mem_normalizer_iff']
state_before: case refine'_1.mk
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : normalizer H = H
m✝ : L ⧸ toLieSubmodule H
x : L
hx : Quot.mk Setoid.r x ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H)
⊢ x ∈ H

tactic: intro y hy
state_before: case refine'_1.mk
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : normalizer H = H
m✝ : L ⧸ toLieSubmodule H
x : L
hx : Quot.mk Setoid.r x ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H)
⊢ ∀ (y : L), y ∈ H → ⁅y, x⁆ ∈ H

tactic: replace hx : ⁅_, LieSubmodule.Quotient.mk' _ x⁆ = 0 := hx ⟨y, hy⟩
state_before: case refine'_1.mk
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : normalizer H = H
m✝ : L ⧸ toLieSubmodule H
x : L
hx : Quot.mk Setoid.r x ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H)
y : L
hy : y ∈ H
⊢ ⁅y, x⁆ ∈ H

tactic: rwa [← LieModuleHom.map_lie, LieSubmodule.Quotient.mk_eq_zero] at hx
state_before: case refine'_1.mk
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : normalizer H = H
m✝ : L ⧸ toLieSubmodule H
x y : L
hy : y ∈ H
hx : ⁅{ val := y, property := hy }, ↑(LieSubmodule.Quotient.mk' (toLieSubmodule H)) x⁆ = 0
⊢ ⁅y, x⁆ ∈ H

tactic: rwa [Submodule.Quotient.quot_mk_eq_mk, Submodule.Quotient.mk_eq_zero,
coe_toLieSubmodule, mem_coe_submodule]
state_before: R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : normalizer H = H
m✝ : L ⧸ toLieSubmodule H
x : L
hx : Quot.mk Setoid.r x ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H)
this : x ∈ H
⊢ Quot.mk Setoid.r x = 0

tactic: intro x hx
state_before: case refine'_2
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : ∀ (m : L ⧸ toLieSubmodule H), m ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H) → m = 0
⊢ normalizer H ≤ H

tactic: let y := LieSubmodule.Quotient.mk' H.toLieSubmodule x
state_before: case refine'_2
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : ∀ (m : L ⧸ toLieSubmodule H), m ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H) → m = 0
x : L
hx : x ∈ normalizer H
⊢ x ∈ H

tactic: have hy : y ∈ LieModule.maxTrivSubmodule R H (L ⧸ H.toLieSubmodule) := by
  rintro ⟨z, hz⟩
  rw [← LieModuleHom.map_lie, LieSubmodule.Quotient.mk_eq_zero, coe_bracket_of_module,
    Submodule.coe_mk, mem_toLieSubmodule]
  exact (H.mem_normalizer_iff' x).mp hx z hz
state_before: case refine'_2
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : ∀ (m : L ⧸ toLieSubmodule H), m ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H) → m = 0
x : L
hx : x ∈ normalizer H
y : (fun x => L ⧸ toLieSubmodule H) x := ↑(LieSubmodule.Quotient.mk' (toLieSubmodule H)) x
⊢ x ∈ H

tactic: simpa using h y hy
state_before: case refine'_2
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : ∀ (m : L ⧸ toLieSubmodule H), m ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H) → m = 0
x : L
hx : x ∈ normalizer H
y : (fun x => L ⧸ toLieSubmodule H) x := ↑(LieSubmodule.Quotient.mk' (toLieSubmodule H)) x
hy : y ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H)
⊢ x ∈ H

tactic: rintro ⟨z, hz⟩
state_before: R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : ∀ (m : L ⧸ toLieSubmodule H), m ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H) → m = 0
x : L
hx : x ∈ normalizer H
y : (fun x => L ⧸ toLieSubmodule H) x := ↑(LieSubmodule.Quotient.mk' (toLieSubmodule H)) x
⊢ y ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H)

tactic: rw [← LieModuleHom.map_lie, LieSubmodule.Quotient.mk_eq_zero, coe_bracket_of_module,
  Submodule.coe_mk, mem_toLieSubmodule]
state_before: case mk
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : ∀ (m : L ⧸ toLieSubmodule H), m ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H) → m = 0
x : L
hx : x ∈ normalizer H
y : (fun x => L ⧸ toLieSubmodule H) x := ↑(LieSubmodule.Quotient.mk' (toLieSubmodule H)) x
z : L
hz : z ∈ H
⊢ ⁅{ val := z, property := hz }, y⁆ = 0

tactic: exact (H.mem_normalizer_iff' x).mp hx z hz
state_before: case mk
R : Type u_2
L : Type u_1
M : Type ?u.62528
M' : Type ?u.62531
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
H : LieSubalgebra R L
h : ∀ (m : L ⧸ toLieSubmodule H), m ∈ LieModule.maxTrivSubmodule R { x // x ∈ H } (L ⧸ toLieSubmodule H) → m = 0
x : L
hx : x ∈ normalizer H
y : (fun x => L ⧸ toLieSubmodule H) x := ↑(LieSubmodule.Quotient.mk' (toLieSubmodule H)) x
z : L
hz : z ∈ H
⊢ ⁅z, x⁆ ∈ H