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

Commit eccd8dd

Browse files
committed
feat(algebra/lie/nilpotent): generalise lower central series to start with given Lie submodule (#11625)
The advantage of this approach is that we can regard the terms of the lower central series of a Lie submodule as Lie submodules of the enclosing Lie module. In particular, this is useful when considering the lower central series of a Lie ideal.
1 parent a631839 commit eccd8dd

File tree

3 files changed

+144
-13
lines changed

3 files changed

+144
-13
lines changed

src/algebra/lie/ideal_operations.lean

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,11 @@ universes u v w w₁ w₂
3535

3636
namespace lie_submodule
3737

38-
variables {R : Type u} {L : Type v} {M : Type w}
39-
variables [comm_ring R] [lie_ring L] [lie_algebra R L] [add_comm_group M] [module R M]
40-
variables [lie_ring_module L M] [lie_module R L M]
41-
variables (N N' : lie_submodule R L M) (I J : lie_ideal R L)
38+
variables {R : Type u} {L : Type v} {M : Type w} {M₂ : Type w₁}
39+
variables [comm_ring R] [lie_ring L] [lie_algebra R L]
40+
variables [add_comm_group M] [module R M] [lie_ring_module L M] [lie_module R L M]
41+
variables [add_comm_group M₂] [module R M₂] [lie_ring_module L M₂] [lie_module R L M₂]
42+
variables (N N' : lie_submodule R L M) (I J : lie_ideal R L) (N₂ : lie_submodule R L M₂)
4243

4344
section lie_ideal_operations
4445

@@ -158,10 +159,9 @@ by { rw le_inf_iff, split; apply mono_lie_right; [exact inf_le_left, exact inf_l
158159
@[simp] lemma inf_lie : ⁅I ⊓ J, N⁆ ≤ ⁅I, N⁆ ⊓ ⁅J, N⁆ :=
159160
by { rw le_inf_iff, split; apply mono_lie_left; [exact inf_le_left, exact inf_le_right], }
160161

161-
lemma map_bracket_eq
162-
{M₂ : Type w₁} [add_comm_group M₂] [module R M₂] [lie_ring_module L M₂] [lie_module R L M₂]
163-
(f : M →ₗ⁅R,L⁆ M₂) :
164-
map f ⁅I, N⁆ = ⁅I, map f N⁆ :=
162+
variables (f : M →ₗ⁅R,L⁆ M₂)
163+
164+
lemma map_bracket_eq : map f ⁅I, N⁆ = ⁅I, map f N⁆ :=
165165
begin
166166
rw [← coe_to_submodule_eq_iff, coe_submodule_map, lie_ideal_oper_eq_linear_span,
167167
lie_ideal_oper_eq_linear_span, submodule.map_span],
@@ -176,6 +176,37 @@ begin
176176
exact ⟨⁅x, n⁆, ⟨x, ⟨n, hn⟩, rfl⟩, by simp⟩, },
177177
end
178178

179+
lemma map_comap_le : map f (comap f N₂) ≤ N₂ :=
180+
(N₂ : set M₂).image_preimage_subset f
181+
182+
lemma map_comap_eq (hf : N₂ ≤ f.range) : map f (comap f N₂) = N₂ :=
183+
begin
184+
rw set_like.ext'_iff,
185+
exact set.image_preimage_eq_of_subset hf,
186+
end
187+
188+
lemma le_comap_map : N ≤ comap f (map f N) :=
189+
(N : set M).subset_preimage_image f
190+
191+
lemma comap_map_eq (hf : f.ker = ⊥) : comap f (map f N) = N :=
192+
begin
193+
rw set_like.ext'_iff,
194+
exact (N : set M).preimage_image_eq (f.ker_eq_bot.mp hf),
195+
end
196+
197+
lemma comap_bracket_eq (hf₁ : f.ker = ⊥) (hf₂ : N₂ ≤ f.range) :
198+
comap f ⁅I, N₂⁆ = ⁅I, comap f N₂⁆ :=
199+
begin
200+
conv_lhs { rw ← map_comap_eq N₂ f hf₂, },
201+
rw [← map_bracket_eq, comap_map_eq _ f hf₁],
202+
end
203+
204+
@[simp] lemma map_comap_incl : map N.incl (comap N.incl N') = N ⊓ N' :=
205+
begin
206+
rw ← coe_to_submodule_eq_iff,
207+
exact (N : submodule R M).map_comap_subtype N',
208+
end
209+
179210
end lie_ideal_operations
180211

181212
end lie_submodule

src/algebra/lie/nilpotent.lean

Lines changed: 75 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,88 @@ lie algebra, lower central series, nilpotent
2626

2727
universes u v w w₁ w₂
2828

29-
namespace lie_module
29+
section nilpotent_modules
3030

31-
variables (R : Type u) (L : Type v) (M : Type w)
31+
variables {R : Type u} {L : Type v} {M : Type w}
3232
variables [comm_ring R] [lie_ring L] [lie_algebra R L] [add_comm_group M] [module R M]
3333
variables [lie_ring_module L M] [lie_module R L M]
34+
variables (k : ℕ) (N : lie_submodule R L M)
35+
36+
namespace lie_submodule
37+
38+
/-- A generalisation of the lower central series. The zeroth term is a specified Lie submodule of
39+
a Lie module. In the case when we specify the top ideal `⊤` of the Lie algebra, regarded as a Lie
40+
module over itself, we get the usual lower central series of a Lie algebra.
41+
42+
It can be more convenient to work with this generalisation when considering the lower central series
43+
of a Lie submodule, regarded as a Lie module in its own right, since it provides a type-theoretic
44+
expression of the fact that the terms of the Lie submodule's lower central series are also Lie
45+
submodules of the enclosing Lie module.
46+
47+
See also `lie_module.lower_central_series_eq_lcs_comap` and
48+
`lie_module.lower_central_series_map_eq_lcs` below. -/
49+
def lcs : lie_submodule R L M → lie_submodule R L M := (λ N, ⁅(⊤ : lie_ideal R L), N⁆)^[k]
50+
51+
@[simp] lemma lcs_zero (N : lie_submodule R L M) : N.lcs 0 = N := rfl
52+
53+
@[simp] lemma lcs_succ : N.lcs (k + 1) = ⁅(⊤ : lie_ideal R L), N.lcs k⁆ :=
54+
function.iterate_succ_apply' (λ N', ⁅⊤, N'⁆) k N
55+
56+
end lie_submodule
57+
58+
namespace lie_module
59+
60+
variables (R L M)
3461

3562
/-- The lower central series of Lie submodules of a Lie module. -/
36-
def lower_central_series (k : ℕ) : lie_submodule R L M := (λ I, ⁅(⊤ : lie_ideal R L), I⁆)^[k] ⊤
63+
def lower_central_series : lie_submodule R L M := (⊤ : lie_submodule R L M).lcs k
3764

3865
@[simp] lemma lower_central_series_zero : lower_central_series R L M 0 = ⊤ := rfl
3966

40-
@[simp] lemma lower_central_series_succ (k : ℕ) :
67+
@[simp] lemma lower_central_series_succ :
4168
lower_central_series R L M (k + 1) = ⁅(⊤ : lie_ideal R L), lower_central_series R L M k⁆ :=
42-
function.iterate_succ_apply' (λ I, ⁅(⊤ : lie_ideal R L), I⁆) k ⊤
69+
(⊤ : lie_submodule R L M).lcs_succ k
70+
71+
end lie_module
72+
73+
namespace lie_submodule
74+
75+
open lie_module
76+
77+
variables {R L M}
78+
79+
lemma lcs_le_self : N.lcs k ≤ N :=
80+
begin
81+
induction k with k ih,
82+
{ simp, },
83+
{ simp only [lcs_succ],
84+
exact (lie_submodule.mono_lie_right _ _ ⊤ ih).trans (N.lie_le_right ⊤), },
85+
end
86+
87+
lemma lower_central_series_eq_lcs_comap :
88+
lower_central_series R L N k = (N.lcs k).comap N.incl :=
89+
begin
90+
induction k with k ih,
91+
{ simp, },
92+
{ simp only [lcs_succ, lower_central_series_succ] at ⊢ ih,
93+
have : N.lcs k ≤ N.incl.range,
94+
{ rw N.range_incl,
95+
apply lcs_le_self, },
96+
rw [ih, lie_submodule.comap_bracket_eq _ _ N.incl N.ker_incl this], },
97+
end
98+
99+
lemma lower_central_series_map_eq_lcs :
100+
(lower_central_series R L N k).map N.incl = N.lcs k :=
101+
begin
102+
rw [lower_central_series_eq_lcs_comap, lie_submodule.map_comap_incl, inf_eq_right],
103+
apply lcs_le_self,
104+
end
105+
106+
end lie_submodule
107+
108+
namespace lie_module
109+
110+
variables (R L M)
43111

44112
lemma antitone_lower_central_series : antitone $ lower_central_series R L M :=
45113
begin
@@ -227,6 +295,8 @@ set.nontrivial_mono
227295

228296
end lie_module
229297

298+
end nilpotent_modules
299+
230300
@[priority 100]
231301
instance lie_algebra.is_solvable_of_is_nilpotent (R : Type u) (L : Type v)
232302
[comm_ring R] [lie_ring L] [lie_algebra R L] [hL : lie_module.is_nilpotent R L L] :

src/algebra/lie/submodule.lean

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,8 @@ def incl : N →ₗ⁅R,L⁆ M :=
404404
{ map_lie' := λ x m, rfl,
405405
..submodule.subtype (N : submodule R M) }
406406

407+
@[simp] lemma incl_coe : (N.incl : N →ₗ[R] M) = (N : submodule R M).subtype := rfl
408+
407409
@[simp] lemma incl_apply (m : N) : N.incl m = m := rfl
408410

409411
lemma incl_eq_val : (N.incl : N → M) = subtype.val := rfl
@@ -525,6 +527,10 @@ def comap : lie_submodule R L M :=
525527
{ lie_mem := λ x m h, by { suffices : ⁅x, f m⁆ ∈ N', { simp [this], }, apply N'.lie_mem h, },
526528
..(N' : submodule R M').comap (f : M →ₗ[R] M') }
527529

530+
@[simp] lemma coe_submodule_comap :
531+
(N'.comap f : submodule R M) = (N' : submodule R M').comap (f : M →ₗ[R] M') :=
532+
rfl
533+
528534
variables {f N N₂ N'}
529535

530536
lemma map_le_iff_le_comap : map f N ≤ N' ↔ N ≤ comap f N' :=
@@ -866,6 +872,12 @@ variables (f : M →ₗ⁅R,L⁆ N)
866872
/-- The kernel of a morphism of Lie algebras, as an ideal in the domain. -/
867873
def ker : lie_submodule R L M := lie_submodule.comap f ⊥
868874

875+
@[simp] lemma ker_coe_submodule : (f.ker : submodule R M) = (f : M →ₗ[R] N).ker := rfl
876+
877+
lemma ker_eq_bot : f.ker = ⊥ ↔ function.injective f :=
878+
by rw [← lie_submodule.coe_to_submodule_eq_iff, ker_coe_submodule, lie_submodule.bot_coe_submodule,
879+
linear_map.ker_eq_bot, coe_to_linear_map]
880+
869881
variables {f}
870882

871883
@[simp] lemma mem_ker (m : M) : m ∈ f.ker ↔ f m = 0 := iff.rfl
@@ -898,6 +910,24 @@ by { ext, simp [lie_submodule.mem_map], }
898910

899911
end lie_module_hom
900912

913+
namespace lie_submodule
914+
915+
variables {R : Type u} {L : Type v} {M : Type w}
916+
variables [comm_ring R] [lie_ring L] [lie_algebra R L]
917+
variables [add_comm_group M] [module R M] [lie_ring_module L M] [lie_module R L M]
918+
variables (N : lie_submodule R L M)
919+
920+
@[simp] lemma ker_incl : N.incl.ker = ⊥ :=
921+
by simp [← lie_submodule.coe_to_submodule_eq_iff]
922+
923+
@[simp] lemma range_incl : N.incl.range = N :=
924+
by simp [← lie_submodule.coe_to_submodule_eq_iff]
925+
926+
@[simp] lemma comap_incl_self : comap N.incl N = ⊤ :=
927+
by simp [← lie_submodule.coe_to_submodule_eq_iff]
928+
929+
end lie_submodule
930+
901931
section top_equiv_self
902932

903933
variables {R : Type u} {L : Type v}

0 commit comments

Comments
 (0)