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

Commit 043d046

Browse files
committed
feat(algebra/lie/basic): define the module and lie_module structures on morphisms of Lie modules (#7225)
Also sundry `simp` lemmas
1 parent aa44de5 commit 043d046

File tree

1 file changed

+133
-9
lines changed

1 file changed

+133
-9
lines changed

src/algebra/lie/basic.lean

Lines changed: 133 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,10 @@ algebra on this module, such that the Lie bracket acts as the commutator of endo
8080

8181
section basic_properties
8282

83-
variables {R : Type u} {L : Type v} {M : Type w}
84-
variables [comm_ring R] [lie_ring L] [lie_algebra R L] [add_comm_group M] [module R M]
85-
variables [lie_ring_module L M] [lie_module R L M]
83+
variables {R : Type u} {L : Type v} {M : Type w} {N : Type w₁}
84+
variables [comm_ring R] [lie_ring L] [lie_algebra R L]
85+
variables [add_comm_group M] [module R M] [lie_ring_module L M] [lie_module R L M]
86+
variables [add_comm_group N] [module R N] [lie_ring_module L N] [lie_module R L N]
8687
variables (t : R) (x y z : L) (m n : M)
8788

8889
@[simp] lemma add_lie : ⁅x + y, m⁆ = ⁅x, m⁆ + ⁅y, m⁆ := lie_ring_module.add_lie x y m
@@ -119,6 +120,18 @@ by { rw [←sub_eq_zero, sub_neg_eq_add, ←add_lie], simp, }
119120
@[simp] lemma lie_neg : ⁅x, -m⁆ = -⁅x, m⁆ :=
120121
by { rw [←sub_eq_zero, sub_neg_eq_add, ←lie_add], simp, }
121122

123+
@[simp] lemma sub_lie : ⁅x - y, m⁆ = ⁅x, m⁆ - ⁅y, m⁆ :=
124+
by simp [sub_eq_add_neg]
125+
126+
@[simp] lemma lie_sub : ⁅x, m - n⁆ = ⁅x, m⁆ - ⁅x, n⁆ :=
127+
by simp [sub_eq_add_neg]
128+
129+
@[simp] lemma nsmul_lie (n : ℕ) : ⁅n • x, m⁆ = n • ⁅x, m⁆ :=
130+
add_monoid_hom.map_nsmul ⟨λ (x : L), ⁅x, m⁆, zero_lie m, λ _ _, add_lie _ _ _⟩ _ _
131+
132+
@[simp] lemma lie_nsmul (n : ℕ) : ⁅x, n • m⁆ = n • ⁅x, m⁆ :=
133+
add_monoid_hom.map_nsmul ⟨λ (m : M), ⁅x, m⁆, lie_zero x, λ _ _, lie_add _ _ _⟩ _ _
134+
122135
@[simp] lemma gsmul_lie (a : ℤ) : ⁅a • x, m⁆ = a • ⁅x, m⁆ :=
123136
add_monoid_hom.map_gsmul ⟨λ (x : L), ⁅x, m⁆, zero_lie m, λ _ _, add_lie _ _ _⟩ _ _
124137

@@ -131,6 +144,30 @@ by rw [leibniz_lie, add_sub_cancel]
131144
lemma lie_jacobi : ⁅x, ⁅y, z⁆⁆ + ⁅y, ⁅z, x⁆⁆ + ⁅z, ⁅x, y⁆⁆ = 0 :=
132145
by { rw [← neg_neg ⁅x, y⁆, lie_neg z, lie_skew y x, ← lie_skew, lie_lie], abel, }
133146

147+
instance : lie_ring_module L (M →ₗ[R] N) :=
148+
{ bracket := λ x f,
149+
{ to_fun := λ m, ⁅x, f m⁆ - f ⁅x, m⁆,
150+
map_add' := λ m n, by { simp only [lie_add, linear_map.map_add], abel, },
151+
map_smul' := λ t m, by simp only [smul_sub, linear_map.map_smul, lie_smul], },
152+
add_lie := λ x y f, by
153+
{ ext n, simp only [add_lie, linear_map.coe_mk, linear_map.add_apply, linear_map.map_add],
154+
abel, },
155+
lie_add := λ x f g, by
156+
{ ext n, simp only [linear_map.coe_mk, lie_add, linear_map.add_apply], abel, },
157+
leibniz_lie := λ x y f, by
158+
{ ext n,
159+
simp only [lie_lie, linear_map.coe_mk, linear_map.map_sub, linear_map.add_apply, lie_sub],
160+
abel, }, }
161+
162+
@[simp] lemma bracket_apply (f : M →ₗ[R] N) (x : L) (m : M) : ⁅x, f⁆ m = ⁅x, f m⁆ - f ⁅x, m⁆ := rfl
163+
164+
instance : lie_module R L (M →ₗ[R] N) :=
165+
{ smul_lie := λ t x f, by
166+
{ ext n,
167+
simp only [smul_sub, smul_lie, linear_map.smul_apply, bracket_apply, linear_map.map_smul], },
168+
lie_smul := λ t x f, by
169+
{ ext n, simp only [smul_sub, linear_map.smul_apply, bracket_apply, lie_smul], }, }
170+
134171
end basic_properties
135172

136173
set_option old_structure_cmd true
@@ -157,9 +194,6 @@ instance : has_coe_to_fun (L₁ →ₗ⁅R⁆ L₂) := ⟨_, lie_hom.to_fun⟩
157194

158195
initialize_simps_projections lie_hom (to_fun → apply)
159196

160-
@[simp] lemma coe_mk (f : L₁ → L₂) (h₁ h₂ h₃) :
161-
((⟨f, h₁, h₂, h₃⟩ : L₁ →ₗ⁅R⁆ L₂) : L₁ → L₂) = f := rfl
162-
163197
@[simp, norm_cast] lemma coe_to_linear_map (f : L₁ →ₗ⁅R⁆ L₂) : ((f : L₁ →ₗ[R] L₂) : L₁ → L₂) = f :=
164198
rfl
165199

@@ -169,13 +203,23 @@ linear_map.map_smul (f : L₁ →ₗ[R] L₂) c x
169203
@[simp] lemma map_add (f : L₁ →ₗ⁅R⁆ L₂) (x y : L₁) : f (x + y) = (f x) + (f y) :=
170204
linear_map.map_add (f : L₁ →ₗ[R] L₂) x y
171205

206+
@[simp] lemma map_sub (f : L₁ →ₗ⁅R⁆ L₂) (x y : L₁) : f (x - y) = (f x) - (f y) :=
207+
linear_map.map_sub (f : L₁ →ₗ[R] L₂) x y
208+
209+
@[simp] lemma map_neg (f : L₁ →ₗ⁅R⁆ L₂) (x : L₁) : f (-x) = -(f x) :=
210+
linear_map.map_neg (f : L₁ →ₗ[R] L₂) x
211+
172212
@[simp] lemma map_lie (f : L₁ →ₗ⁅R⁆ L₂) (x y : L₁) : f ⁅x, y⁆ = ⁅f x, f y⁆ := lie_hom.map_lie' f
173213

174214
@[simp] lemma map_zero (f : L₁ →ₗ⁅R⁆ L₂) : f 0 = 0 := (f : L₁ →ₗ[R] L₂).map_zero
175215

176216
/-- The constant 0 map is a Lie algebra morphism. -/
177217
instance : has_zero (L₁ →ₗ⁅R⁆ L₂) := ⟨{ map_lie' := by simp, ..(0 : L₁ →ₗ[R] L₂)}⟩
178218

219+
@[norm_cast, simp] lemma coe_zero : ((0 : L₁ →ₗ⁅R⁆ L₂) : L₁ → L₂) = 0 := rfl
220+
221+
lemma zero_apply (x : L₁) : (0 : L₁ →ₗ⁅R⁆ L₂) x = 0 := rfl
222+
179223
/-- The identity map is a Lie algebra morphism. -/
180224
instance : has_one (L₁ →ₗ⁅R⁆ L₁) := ⟨{ map_lie' := by simp, ..(1 : L₁ →ₗ[R] L₁)}⟩
181225

@@ -190,6 +234,17 @@ coe_injective $ funext h
190234
lemma ext_iff {f g : L₁ →ₗ⁅R⁆ L₂} : f = g ↔ ∀ x, f x = g x :=
191235
by { rintro rfl x, refl }, ext⟩
192236

237+
@[simp] lemma mk_coe (f : L₁ →ₗ⁅R⁆ L₂) (h₁ h₂ h₃) :
238+
(⟨f, h₁, h₂, h₃⟩ : L₁ →ₗ⁅R⁆ L₂) = f :=
239+
by { ext, refl, }
240+
241+
@[simp] lemma coe_mk (f : L₁ → L₂) (h₁ h₂ h₃) :
242+
((⟨f, h₁, h₂, h₃⟩ : L₁ →ₗ⁅R⁆ L₂) : L₁ → L₂) = f := rfl
243+
244+
@[norm_cast, simp] lemma coe_linear_mk (f : L₁ →ₗ[R] L₂) (h₁ h₂ h₃) :
245+
((⟨f, h₁, h₂, h₃⟩ : L₁ →ₗ⁅R⁆ L₂) : L₁ →ₗ[R] L₂) = ⟨f, h₁, h₂⟩ :=
246+
by { ext, refl, }
247+
193248
/-- The composition of morphisms is a morphism. -/
194249
def comp (f : L₂ →ₗ⁅R⁆ L₃) (g : L₁ →ₗ⁅R⁆ L₂) : L₁ →ₗ⁅R⁆ L₃ :=
195250
{ map_lie' := λ x y, by { change f (g ⁅x, y⁆) = ⁅f (g x), f (g y)⁆, rw [map_lie, map_lie], },
@@ -325,18 +380,34 @@ instance : has_coe (M →ₗ⁅R,L⁆ N) (M →ₗ[R] N) := ⟨lie_module_hom.to
325380
/-- see Note [function coercion] -/
326381
instance : has_coe_to_fun (M →ₗ⁅R,L⁆ N) := ⟨_, lie_module_hom.to_fun⟩
327382

328-
@[simp] lemma coe_mk (f : M → N) (h₁ h₂ h₃) :
329-
((⟨f, h₁, h₂, h₃⟩ : M →ₗ⁅R,L⁆ N) : M → N) = f := rfl
330-
331383
@[simp, norm_cast] lemma coe_to_linear_map (f : M →ₗ⁅R,L⁆ N) : ((f : M →ₗ[R] N) : M → N) = f :=
332384
rfl
333385

386+
@[simp] lemma map_smul (f : M →ₗ⁅R,L⁆ N) (c : R) (x : M) : f (c • x) = c • f x :=
387+
linear_map.map_smul (f : M →ₗ[R] N) c x
388+
389+
@[simp] lemma map_add (f : M →ₗ⁅R,L⁆ N) (x y : M) : f (x + y) = (f x) + (f y) :=
390+
linear_map.map_add (f : M →ₗ[R] N) x y
391+
392+
@[simp] lemma map_sub (f : M →ₗ⁅R,L⁆ N) (x y : M) : f (x - y) = (f x) - (f y) :=
393+
linear_map.map_sub (f : M →ₗ[R] N) x y
394+
395+
@[simp] lemma map_neg (f : M →ₗ⁅R,L⁆ N) (x : M) : f (-x) = -(f x) :=
396+
linear_map.map_neg (f : M →ₗ[R] N) x
397+
334398
@[simp] lemma map_lie (f : M →ₗ⁅R,L⁆ N) (x : L) (m : M) : f ⁅x, m⁆ = ⁅x, f m⁆ :=
335399
lie_module_hom.map_lie' f
336400

401+
@[simp] lemma map_zero (f : M →ₗ⁅R,L⁆ N) : f 0 = 0 :=
402+
linear_map.map_zero (f : M →ₗ[R] N)
403+
337404
/-- The constant 0 map is a Lie module morphism. -/
338405
instance : has_zero (M →ₗ⁅R,L⁆ N) := ⟨{ map_lie' := by simp, ..(0 : M →ₗ[R] N) }⟩
339406

407+
@[norm_cast, simp] lemma coe_zero : ((0 : M →ₗ⁅R,L⁆ N) : M → N) = 0 := rfl
408+
409+
lemma zero_apply (m : M) : (0 : M →ₗ⁅R,L⁆ N) m = 0 := rfl
410+
340411
/-- The identity map is a Lie module morphism. -/
341412
instance : has_one (M →ₗ⁅R,L⁆ M) := ⟨{ map_lie' := by simp, ..(1 : M →ₗ[R] M) }⟩
342413

@@ -351,6 +422,17 @@ coe_injective $ funext h
351422
lemma ext_iff {f g : M →ₗ⁅R,L⁆ N} : f = g ↔ ∀ m, f m = g m :=
352423
by { rintro rfl m, refl, }, ext⟩
353424

425+
@[simp] lemma mk_coe (f : M →ₗ⁅R,L⁆ N) (h₁ h₂ h₃) :
426+
(⟨f, h₁, h₂, h₃⟩ : M →ₗ⁅R,L⁆ N) = f :=
427+
by { ext, refl, }
428+
429+
@[simp] lemma coe_mk (f : M → N) (h₁ h₂ h₃) :
430+
((⟨f, h₁, h₂, h₃⟩ : M →ₗ⁅R,L⁆ N) : M → N) = f := rfl
431+
432+
@[norm_cast, simp] lemma coe_linear_mk (f : M →ₗ[R] N) (h₁ h₂ h₃) :
433+
((⟨f, h₁, h₂, h₃⟩ : M →ₗ⁅R,L⁆ N) : M →ₗ[R] N) = ⟨f, h₁, h₂⟩ :=
434+
by { ext, refl, }
435+
354436
/-- The composition of Lie module morphisms is a morphism. -/
355437
def comp (f : N →ₗ⁅R,L⁆ P) (g : M →ₗ⁅R,L⁆ N) : M →ₗ⁅R,L⁆ P :=
356438
{ map_lie' := λ x m, by { change f (g ⁅x, m⁆) = ⁅x, f (g m)⁆, rw [map_lie, map_lie], },
@@ -371,6 +453,48 @@ def inverse (f : M →ₗ⁅R,L⁆ N) (g : N → M)
371453
... = ⁅x, g n⁆ : (h₁ _),
372454
..linear_map.inverse f.to_linear_map g h₁ h₂ }
373455

456+
instance : has_add (M →ₗ⁅R,L⁆ N) :=
457+
{ add := λ f g, { map_lie' := by simp, ..((f : M →ₗ[R] N) + (g : M →ₗ[R] N)) }, }
458+
459+
instance : has_sub (M →ₗ⁅R,L⁆ N) :=
460+
{ sub := λ f g, { map_lie' := by simp, ..((f : M →ₗ[R] N) - (g : M →ₗ[R] N)) }, }
461+
462+
instance : has_neg (M →ₗ⁅R,L⁆ N) :=
463+
{ neg := λ f, { map_lie' := by simp, ..(-(f : (M →ₗ[R] N))) }, }
464+
465+
@[norm_cast, simp] lemma coe_add (f g : M →ₗ⁅R,L⁆ N) : ⇑(f + g) = f + g := rfl
466+
467+
lemma add_apply (f g : M →ₗ⁅R,L⁆ N) (m : M) : (f + g) m = f m + g m := rfl
468+
469+
@[norm_cast, simp] lemma coe_sub (f g : M →ₗ⁅R,L⁆ N) : ⇑(f - g) = f - g := rfl
470+
471+
lemma sub_apply (f g : M →ₗ⁅R,L⁆ N) (m : M) : (f - g) m = f m - g m := rfl
472+
473+
@[norm_cast, simp] lemma coe_neg (f : M →ₗ⁅R,L⁆ N) : ⇑(-f) = -f := rfl
474+
475+
lemma neg_apply (f : M →ₗ⁅R,L⁆ N) (m : M) : (-f) m = -(f m) := rfl
476+
477+
instance : add_comm_group (M →ₗ⁅R,L⁆ N) :=
478+
{ zero := 0,
479+
add := (+),
480+
neg := has_neg.neg,
481+
sub := has_sub.sub,
482+
nsmul := λ n f, { map_lie' := λ x m, by simp, ..(n • (f : M →ₗ[R] N)) },
483+
nsmul_zero' := λ f, by { ext, simp, },
484+
nsmul_succ' := λ n f, by { ext, simp [nat.succ_eq_one_add, add_nsmul], },
485+
..(coe_injective.add_comm_group _ coe_zero coe_add coe_neg coe_sub :
486+
add_comm_group (M →ₗ⁅R,L⁆ N)) }
487+
488+
instance : has_scalar R (M →ₗ⁅R,L⁆ N) :=
489+
{ smul := λ t f, { map_lie' := by simp, ..(t • (f : M →ₗ[R] N)) }, }
490+
491+
@[norm_cast, simp] lemma coe_smul (t : R) (f : M →ₗ⁅R,L⁆ N) : ⇑(t • f) = t • f := rfl
492+
493+
lemma smul_apply (t : R) (f : M →ₗ⁅R,L⁆ N) (m : M) : (t • f) m = t • (f m) := rfl
494+
495+
instance : module R (M →ₗ⁅R,L⁆ N) :=
496+
function.injective.semimodule R ⟨to_fun, rfl, coe_add⟩ coe_injective coe_smul
497+
374498
end lie_module_hom
375499

376500
/-- An equivalence of Lie algebra modules is a linear equivalence which is also a morphism of

0 commit comments

Comments
 (0)