Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 65fba4c

Browse files
committed
feat(algebra/lie/centralizer): define the centralizer of a Lie submodule and the upper central series (#14173)
1 parent ffad43d commit 65fba4c

File tree

6 files changed

+273
-82
lines changed

6 files changed

+273
-82
lines changed

src/algebra/lie/cartan_subalgebra.lean

Lines changed: 1 addition & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Oliver Nash
55
-/
66
import algebra.lie.nilpotent
7+
import algebra.lie.centralizer
78

89
/-!
910
# Cartan subalgebras
@@ -13,8 +14,6 @@ The standard example is the set of diagonal matrices in the Lie algebra of matri
1314
1415
## Main definitions
1516
16-
* `lie_subalgebra.normalizer`
17-
* `lie_subalgebra.le_normalizer_of_ideal`
1817
* `lie_subalgebra.is_cartan_subalgebra`
1918
2019
## Tags
@@ -29,84 +28,6 @@ variables [comm_ring R] [lie_ring L] [lie_algebra R L] (H : lie_subalgebra R L)
2928

3029
namespace lie_subalgebra
3130

32-
/-- The normalizer of a Lie subalgebra `H` is the set of elements of the Lie algebra whose bracket
33-
with any element of `H` lies in `H`. It is the Lie algebra equivalent of the group-theoretic
34-
normalizer (see `subgroup.normalizer`) and is an idealizer in the sense of abstract algebra. -/
35-
def normalizer : lie_subalgebra R L :=
36-
{ carrier := { x : L | ∀ (y : L), (y ∈ H) → ⁅x, y⁆ ∈ H },
37-
zero_mem' := λ y hy, by { rw zero_lie y, exact H.zero_mem, },
38-
add_mem' := λ z₁ z₂ h₁ h₂ y hy, by { rw add_lie, exact H.add_mem (h₁ y hy) (h₂ y hy), },
39-
smul_mem' := λ t y hy z hz, by { rw smul_lie, exact H.smul_mem t (hy z hz), },
40-
lie_mem' := λ z₁ z₂ h₁ h₂ y hy, by
41-
{ rw lie_lie, exact H.sub_mem (h₁ _ (h₂ y hy)) (h₂ _ (h₁ y hy)), }, }
42-
43-
lemma mem_normalizer_iff (x : L) : x ∈ H.normalizer ↔ ∀ (y : L), (y ∈ H) → ⁅x, y⁆ ∈ H := iff.rfl
44-
45-
lemma mem_normalizer_iff' (x : L) : x ∈ H.normalizer ↔ ∀ (y : L), (y ∈ H) → ⁅y, x⁆ ∈ H :=
46-
forall₂_congr $ λ y hy, by rw [← lie_skew, neg_mem_iff]
47-
48-
lemma le_normalizer : H ≤ H.normalizer :=
49-
λ x hx, show ∀ (y : L), y ∈ H → ⁅x,y⁆ ∈ H, from λ y, H.lie_mem hx
50-
51-
variables {H}
52-
53-
lemma lie_mem_sup_of_mem_normalizer {x y z : L} (hx : x ∈ H.normalizer)
54-
(hy : y ∈ (R ∙ x) ⊔ ↑H) (hz : z ∈ (R ∙ x) ⊔ ↑H) : ⁅y, z⁆ ∈ (R ∙ x) ⊔ ↑H :=
55-
begin
56-
rw submodule.mem_sup at hy hz,
57-
obtain ⟨u₁, hu₁, v, hv : v ∈ H, rfl⟩ := hy,
58-
obtain ⟨u₂, hu₂, w, hw : w ∈ H, rfl⟩ := hz,
59-
obtain ⟨t, rfl⟩ := submodule.mem_span_singleton.mp hu₁,
60-
obtain ⟨s, rfl⟩ := submodule.mem_span_singleton.mp hu₂,
61-
apply submodule.mem_sup_right,
62-
simp only [lie_subalgebra.mem_coe_submodule, smul_lie, add_lie, zero_add, lie_add, smul_zero,
63-
lie_smul, lie_self],
64-
refine H.add_mem (H.smul_mem s _) (H.add_mem (H.smul_mem t _) (H.lie_mem hv hw)),
65-
exacts [(H.mem_normalizer_iff' x).mp hx v hv, (H.mem_normalizer_iff x).mp hx w hw],
66-
end
67-
68-
/-- A Lie subalgebra is an ideal of its normalizer. -/
69-
lemma ideal_in_normalizer : ∀ {x y : L}, x ∈ H.normalizer → y ∈ H → ⁅x,y⁆ ∈ H :=
70-
λ x y h, h y
71-
72-
/-- A Lie subalgebra `H` is an ideal of any Lie subalgebra `K` containing `H` and contained in the
73-
normalizer of `H`. -/
74-
lemma exists_nested_lie_ideal_of_le_normalizer
75-
{K : lie_subalgebra R L} (h₁ : H ≤ K) (h₂ : K ≤ H.normalizer) :
76-
∃ (I : lie_ideal R K), (I : lie_subalgebra R K) = of_le h₁ :=
77-
begin
78-
rw exists_nested_lie_ideal_coe_eq_iff,
79-
exact λ x y hx hy, ideal_in_normalizer (h₂ hx) hy,
80-
end
81-
82-
/-- The normalizer of a Lie subalgebra `H` is the maximal Lie subalgebra in which `H` is a Lie
83-
ideal. -/
84-
lemma le_normalizer_of_ideal {N : lie_subalgebra R L}
85-
(h : ∀ (x y : L), x ∈ N → y ∈ H → ⁅x,y⁆ ∈ H) : N ≤ H.normalizer :=
86-
λ x hx y, h x y hx
87-
88-
variables (H)
89-
90-
lemma normalizer_eq_self_iff :
91-
H.normalizer = H ↔ (lie_module.max_triv_submodule R H $ L ⧸ H.to_lie_submodule) = ⊥ :=
92-
begin
93-
rw lie_submodule.eq_bot_iff,
94-
refine ⟨λ h, _, λ h, le_antisymm (λ x hx, _) H.le_normalizer⟩,
95-
{ rintros ⟨x⟩ hx,
96-
suffices : x ∈ H, by simpa,
97-
rw [← h, H.mem_normalizer_iff'],
98-
intros y hy,
99-
replace hx : ⁅_, lie_submodule.quotient.mk' _ x⁆ = 0 := hx ⟨y, hy⟩,
100-
rwa [← lie_module_hom.map_lie, lie_submodule.quotient.mk_eq_zero] at hx, },
101-
{ let y := lie_submodule.quotient.mk' H.to_lie_submodule x,
102-
have hy : y ∈ lie_module.max_triv_submodule R H (L ⧸ H.to_lie_submodule),
103-
{ rintros ⟨z, hz⟩,
104-
rw [← lie_module_hom.map_lie, lie_submodule.quotient.mk_eq_zero, coe_bracket_of_module,
105-
submodule.coe_mk, mem_to_lie_submodule],
106-
exact (H.mem_normalizer_iff' x).mp hx z hz, },
107-
simpa using h y hy, },
108-
end
109-
11031
/-- A Cartan subalgebra is a nilpotent, self-normalizing subalgebra. -/
11132
class is_cartan_subalgebra : Prop :=
11233
(nilpotent : lie_algebra.is_nilpotent R H)

src/algebra/lie/centralizer.lean

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
/-
2+
Copyright (c) 2022 Oliver Nash. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Oliver Nash
5+
-/
6+
import algebra.lie.abelian
7+
import algebra.lie.ideal_operations
8+
import algebra.lie.quotient
9+
10+
/-!
11+
# The centralizer of a Lie submodule and the normalizer of a Lie subalgebra.
12+
13+
Given a Lie module `M` over a Lie subalgebra `L`, the centralizer of a Lie submodule `N ⊆ M` is
14+
the Lie submodule with underlying set `{ m | ∀ (x : L), ⁅x, m⁆ ∈ N }`.
15+
16+
The lattice of Lie submodules thus has two natural operations, the centralizer: `N ↦ N.centralizer`
17+
and the ideal operation: `N ↦ ⁅⊤, N⁆`; these are adjoint, i.e., they form a Galois connection. This
18+
adjointness is the reason that we may define nilpotency in terms of either the upper or lower
19+
central series.
20+
21+
Given a Lie subalgebra `H ⊆ L`, we may regard `H` as a Lie submodule of `L` over `H`, and thus
22+
consider the centralizer. This turns out to be a Lie subalgebra and is known as the normalizer.
23+
24+
## Main definitions
25+
26+
* `lie_submodule.centralizer`
27+
* `lie_subalgebra.normalizer`
28+
* `lie_submodule.gc_top_lie_centralizer`
29+
30+
## Tags
31+
32+
lie algebra, centralizer, normalizer
33+
-/
34+
35+
variables {R L M M' : Type*}
36+
variables [comm_ring R] [lie_ring L] [lie_algebra R L]
37+
variables [add_comm_group M] [module R M] [lie_ring_module L M] [lie_module R L M]
38+
variables [add_comm_group M'] [module R M'] [lie_ring_module L M'] [lie_module R L M']
39+
40+
namespace lie_submodule
41+
42+
variables (N : lie_submodule R L M) {N₁ N₂ : lie_submodule R L M}
43+
44+
/-- The centralizer of a Lie submodule. -/
45+
def centralizer : lie_submodule R L M :=
46+
{ carrier := { m | ∀ (x : L), ⁅x, m⁆ ∈ N },
47+
add_mem' := λ m₁ m₂ hm₁ hm₂ x, by { rw lie_add, exact N.add_mem' (hm₁ x) (hm₂ x), },
48+
zero_mem' := λ x, by simp,
49+
smul_mem' := λ t m hm x, by { rw lie_smul, exact N.smul_mem' t (hm x), },
50+
lie_mem := λ x m hm y, by { rw leibniz_lie, exact N.add_mem' (hm ⁅y, x⁆) (N.lie_mem (hm y)), } }
51+
52+
@[simp] lemma mem_centralizer (m : M) :
53+
m ∈ N.centralizer ↔ ∀ (x : L), ⁅x, m⁆ ∈ N :=
54+
iff.rfl
55+
56+
lemma le_centralizer : N ≤ N.centralizer :=
57+
begin
58+
intros m hm,
59+
rw mem_centralizer,
60+
exact λ x, N.lie_mem hm,
61+
end
62+
63+
lemma centralizer_inf :
64+
(N₁ ⊓ N₂).centralizer = N₁.centralizer ⊓ N₂.centralizer :=
65+
by { ext, simp [← forall_and_distrib], }
66+
67+
@[mono] lemma monotone_centalizer :
68+
monotone (centralizer : lie_submodule R L M → lie_submodule R L M) :=
69+
begin
70+
intros N₁ N₂ h m hm,
71+
rw mem_centralizer at hm ⊢,
72+
exact λ x, h (hm x),
73+
end
74+
75+
@[simp] lemma comap_centralizer (f : M' →ₗ⁅R,L⁆ M) :
76+
N.centralizer.comap f = (N.comap f).centralizer :=
77+
by { ext, simp, }
78+
79+
lemma top_lie_le_iff_le_centralizer (N' : lie_submodule R L M) :
80+
⁅(⊤ : lie_ideal R L), N⁆ ≤ N' ↔ N ≤ N'.centralizer :=
81+
by { rw lie_le_iff, tauto, }
82+
83+
lemma gc_top_lie_centralizer :
84+
galois_connection (λ N : lie_submodule R L M, ⁅(⊤ : lie_ideal R L), N⁆) centralizer :=
85+
top_lie_le_iff_le_centralizer
86+
87+
variables (R L M)
88+
89+
lemma centralizer_bot_eq_max_triv_submodule :
90+
(⊥ : lie_submodule R L M).centralizer = lie_module.max_triv_submodule R L M :=
91+
rfl
92+
93+
end lie_submodule
94+
95+
namespace lie_subalgebra
96+
97+
variables (H : lie_subalgebra R L)
98+
99+
/-- Regarding a Lie subalgebra `H ⊆ L` as a module over itself, its centralizer is in fact a Lie
100+
subalgebra. This is called the normalizer of the Lie subalgebra. -/
101+
def normalizer : lie_subalgebra R L :=
102+
{ lie_mem' := λ y z hy hz x,
103+
begin
104+
rw [coe_bracket_of_module, mem_to_lie_submodule, leibniz_lie, ← lie_skew y, ← sub_eq_add_neg],
105+
exact H.sub_mem (hz ⟨_, hy x⟩) (hy ⟨_, hz x⟩),
106+
end,
107+
.. H.to_lie_submodule.centralizer }
108+
109+
lemma mem_normalizer_iff' (x : L) : x ∈ H.normalizer ↔ ∀ (y : L), (y ∈ H) → ⁅y, x⁆ ∈ H :=
110+
by { rw subtype.forall', refl, }
111+
112+
lemma mem_normalizer_iff (x : L) : x ∈ H.normalizer ↔ ∀ (y : L), (y ∈ H) → ⁅x, y⁆ ∈ H :=
113+
begin
114+
rw mem_normalizer_iff',
115+
refine forall₂_congr (λ y hy, _),
116+
rw [← lie_skew, neg_mem_iff],
117+
end
118+
119+
lemma le_normalizer : H ≤ H.normalizer := H.to_lie_submodule.le_centralizer
120+
121+
lemma coe_centralizer_eq_normalizer :
122+
(H.to_lie_submodule.centralizer : submodule R L) = H.normalizer :=
123+
rfl
124+
125+
variables {H}
126+
127+
lemma lie_mem_sup_of_mem_normalizer {x y z : L} (hx : x ∈ H.normalizer)
128+
(hy : y ∈ (R ∙ x) ⊔ ↑H) (hz : z ∈ (R ∙ x) ⊔ ↑H) : ⁅y, z⁆ ∈ (R ∙ x) ⊔ ↑H :=
129+
begin
130+
rw submodule.mem_sup at hy hz,
131+
obtain ⟨u₁, hu₁, v, hv : v ∈ H, rfl⟩ := hy,
132+
obtain ⟨u₂, hu₂, w, hw : w ∈ H, rfl⟩ := hz,
133+
obtain ⟨t, rfl⟩ := submodule.mem_span_singleton.mp hu₁,
134+
obtain ⟨s, rfl⟩ := submodule.mem_span_singleton.mp hu₂,
135+
apply submodule.mem_sup_right,
136+
simp only [lie_subalgebra.mem_coe_submodule, smul_lie, add_lie, zero_add, lie_add, smul_zero,
137+
lie_smul, lie_self],
138+
refine H.add_mem (H.smul_mem s _) (H.add_mem (H.smul_mem t _) (H.lie_mem hv hw)),
139+
exacts [(H.mem_normalizer_iff' x).mp hx v hv, (H.mem_normalizer_iff x).mp hx w hw],
140+
end
141+
142+
/-- A Lie subalgebra is an ideal of its normalizer. -/
143+
lemma ideal_in_normalizer {x y : L} (hx : x ∈ H.normalizer) (hy : y ∈ H) : ⁅x,y⁆ ∈ H :=
144+
begin
145+
rw [← lie_skew, neg_mem_iff],
146+
exact hx ⟨y, hy⟩,
147+
end
148+
149+
/-- A Lie subalgebra `H` is an ideal of any Lie subalgebra `K` containing `H` and contained in the
150+
normalizer of `H`. -/
151+
lemma exists_nested_lie_ideal_of_le_normalizer
152+
{K : lie_subalgebra R L} (h₁ : H ≤ K) (h₂ : K ≤ H.normalizer) :
153+
∃ (I : lie_ideal R K), (I : lie_subalgebra R K) = of_le h₁ :=
154+
begin
155+
rw exists_nested_lie_ideal_coe_eq_iff,
156+
exact λ x y hx hy, ideal_in_normalizer (h₂ hx) hy,
157+
end
158+
159+
variables (H)
160+
161+
lemma normalizer_eq_self_iff :
162+
H.normalizer = H ↔ (lie_module.max_triv_submodule R H $ L ⧸ H.to_lie_submodule) = ⊥ :=
163+
begin
164+
rw lie_submodule.eq_bot_iff,
165+
refine ⟨λ h, _, λ h, le_antisymm (λ x hx, _) H.le_normalizer⟩,
166+
{ rintros ⟨x⟩ hx,
167+
suffices : x ∈ H, by simpa,
168+
rw [← h, H.mem_normalizer_iff'],
169+
intros y hy,
170+
replace hx : ⁅_, lie_submodule.quotient.mk' _ x⁆ = 0 := hx ⟨y, hy⟩,
171+
rwa [← lie_module_hom.map_lie, lie_submodule.quotient.mk_eq_zero] at hx, },
172+
{ let y := lie_submodule.quotient.mk' H.to_lie_submodule x,
173+
have hy : y ∈ lie_module.max_triv_submodule R H (L ⧸ H.to_lie_submodule),
174+
{ rintros ⟨z, hz⟩,
175+
rw [← lie_module_hom.map_lie, lie_submodule.quotient.mk_eq_zero, coe_bracket_of_module,
176+
submodule.coe_mk, mem_to_lie_submodule],
177+
exact (H.mem_normalizer_iff' x).mp hx z hz, },
178+
simpa using h y hy, },
179+
end
180+
181+
end lie_subalgebra

src/algebra/lie/engel.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Oliver Nash
55
-/
66
import algebra.lie.nilpotent
7-
import algebra.lie.cartan_subalgebra
7+
import algebra.lie.centralizer
88

99
/-!
1010
# Engel's theorem

src/algebra/lie/ideal_operations.lean

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,14 @@ begin
8686
exact ⟨⟨x, hx⟩, ⟨n, hn⟩, rfl⟩, },
8787
end
8888

89+
lemma lie_le_iff : ⁅I, N⁆ ≤ N' ↔ ∀ (x ∈ I) (m ∈ N), ⁅x, m⁆ ∈ N' :=
90+
begin
91+
rw [lie_ideal_oper_eq_span, lie_submodule.lie_span_le],
92+
refine ⟨λ h x hx m hm, h ⟨⟨x, hx⟩, ⟨m, hm⟩, rfl⟩, _⟩,
93+
rintros h - ⟨⟨x, hx⟩, ⟨m, hm⟩, rfl⟩,
94+
exact h x hx m hm,
95+
end
96+
8997
lemma lie_coe_mem_lie (x : I) (m : N) : ⁅(x : L), (m : M)⁆ ∈ ⁅I, N⁆ :=
9098
by { rw lie_ideal_oper_eq_span, apply subset_lie_span, use [x, m], }
9199

0 commit comments

Comments
 (0)