@@ -22,24 +22,18 @@ open Finset
22
22
23
23
open Finsupp hiding single mapDomain
24
24
25
- universe u₁ u₂ u₃ u₄
26
-
27
- variable (k : Type u₁) (G : Type u₂) (H : Type *) {R : Type *}
25
+ variable {k G H R S T A B M N : Type *}
28
26
29
27
/-! ### Multiplicative monoids -/
30
28
31
29
namespace MonoidAlgebra
32
30
33
- variable {k G}
34
-
35
31
/-! #### Non-unital, non-associative algebra structure -/
36
32
37
33
38
34
section NonUnitalNonAssocAlgebra
39
35
40
- variable (k) [Semiring k] [DistribSMul R k] [Mul G]
41
-
42
- variable {A : Type u₃} [NonUnitalNonAssocSemiring A]
36
+ variable (k) [Semiring k] [DistribSMul R k] [Mul G] [NonUnitalNonAssocSemiring A]
43
37
44
38
/-- A non_unital `k`-algebra homomorphism from `MonoidAlgebra k G` is uniquely defined by its
45
39
values on the functions `single a 1`. -/
@@ -161,15 +155,18 @@ end Algebra
161
155
162
156
section lift
163
157
164
- variable [CommSemiring k] [Monoid G] [Monoid H]
165
- variable {A : Type u₃} [Semiring A] [Algebra k A] {B : Type *} [Semiring B] [Algebra k B]
158
+ variable [CommSemiring k] [Monoid G] [Monoid H] [Semiring A] [Algebra k A] [Semiring B]
159
+ [Algebra k B]
166
160
167
161
/-- `liftNCRingHom` as an `AlgHom`, for when `f` is an `AlgHom` -/
168
162
def liftNCAlgHom (f : A →ₐ[k] B) (g : G →* B) (h_comm : ∀ x y, Commute (f x) (g y)) :
169
163
MonoidAlgebra A G →ₐ[k] B :=
170
164
{ liftNCRingHom (f : A →+* B) g h_comm with
171
165
commutes' := by simp [liftNCRingHom] }
172
166
167
+ @[simp] lemma coe_liftNCAlgHom (f : A →ₐ[k] B) (g : G →* B) (h_comm) :
168
+ ⇑(liftNCAlgHom f g h_comm) = liftNC f g := rfl
169
+
173
170
/-- A `k`-algebra homomorphism from `MonoidAlgebra k G` is uniquely defined by its
174
171
values on the functions `single a 1`. -/
175
172
@[to_additive (dont_translate := k) /--
@@ -188,8 +185,7 @@ theorem algHom_ext' ⦃φ₁ φ₂ : MonoidAlgebra k G →ₐ[k] A⦄
188
185
φ₁ = φ₂ :=
189
186
algHom_ext <| DFunLike.congr_fun h
190
187
191
- variable (k G A)
192
-
188
+ variable (k G A) in
193
189
/-- Any monoid homomorphism `G →* A` can be lifted to an algebra homomorphism
194
190
`MonoidAlgebra k G →ₐ[k] A`. -/
195
191
def lift : (G →* A) ≃ (MonoidAlgebra k G →ₐ[k] A) where
@@ -202,8 +198,6 @@ def lift : (G →* A) ≃ (MonoidAlgebra k G →ₐ[k] A) where
202
198
ext
203
199
simp [liftNCAlgHom, liftNCRingHom]
204
200
205
- variable {k G H A}
206
-
207
201
theorem lift_apply' (F : G →* A) (f : MonoidAlgebra k G) :
208
202
lift k G A F f = f.sum fun a b => algebraMap k A b * F a :=
209
203
rfl
@@ -321,27 +315,77 @@ theorem domCongr_symm (e : G ≃* H) : (domCongr k A e).symm = domCongr k A e.sy
321
315
322
316
end lift
323
317
318
+ section mapRange
319
+ variable [CommSemiring R] [CommSemiring S] [Semiring A] [Algebra R A] [Semiring B] [Algebra R B]
320
+ [Monoid M] [Monoid N]
321
+
322
+ @[to_additive (attr := simp)]
323
+ lemma mapDomainRingHom_comp_algebraMap (f : M →* N) :
324
+ (mapDomainRingHom A f).comp (algebraMap R <| MonoidAlgebra A M) =
325
+ algebraMap R (MonoidAlgebra A N) := by ext; simp
326
+
327
+ @[to_additive (attr := simp)]
328
+ lemma mapRangeRingHom_comp_algebraMap (f : R →+* S) :
329
+ (mapRangeRingHom (M := M) f).comp (algebraMap _ _) = (algebraMap _ _).comp f := by ext; simp
330
+
331
+ variable (M) in
332
+ /-- The algebra homomorphism of monoid algebras induced by a homomorphism of the base algebras. -/
333
+ @[to_additive
334
+ /-- The algebra homomorphism of additive monoid algebras induced by a homomorphism of the base
335
+ algebras. -/ ]
336
+ noncomputable def mapRangeAlgHom (f : A →ₐ[R] B) : MonoidAlgebra A M →ₐ[R] MonoidAlgebra B M where
337
+ __ := mapRangeRingHom M f
338
+ commutes' := by simp
339
+
340
+ variable (M) in
341
+ @[to_additive (attr := simp)]
342
+ lemma toRingHom_mapRangeAlgHom (f : A →ₐ[R] B) :
343
+ mapRangeAlgHom M f = mapRangeRingHom M f.toRingHom := rfl
344
+
345
+ @[to_additive (attr := simp)]
346
+ lemma mapRangeAlgHom_apply (f : A →ₐ[R] B) (x : MonoidAlgebra A M) (m : M) :
347
+ mapRangeAlgHom M f x m = f (x m) := mapRangeRingHom_apply f.toRingHom x m
348
+
349
+ @[to_additive (attr := simp)]
350
+ lemma mapRangeAlgHom_single (f : A →ₐ[R] B) (m : M) (a : A) :
351
+ mapRangeAlgHom M f (single m a) = single m (f a) := by
352
+ classical ext; simp [single_apply, apply_ite f]
353
+
354
+ variable (M) in
355
+ /-- The algebra isomorphism of monoid algebras induced by an isomorphism of the base algebras. -/
356
+ @[to_additive (attr := simps apply)
357
+ /-- The algebra isomorphism of additive monoid algebras induced by an isomorphism of the base
358
+ algebras. -/ ]
359
+ noncomputable def mapRangeAlgEquiv (f : A ≃ₐ[R] B) :
360
+ MonoidAlgebra A M ≃ₐ[R] MonoidAlgebra B M where
361
+ __ := mapRangeAlgHom M f
362
+ invFun := mapRangeAlgHom M (f.symm : B →ₐ[R] A)
363
+ left_inv _ := by aesop
364
+ right_inv _ := by aesop
365
+
366
+ end mapRange
367
+
324
368
section
325
369
326
370
variable (k)
327
371
328
372
/-- When `V` is a `k[G]`-module, multiplication by a group element `g` is a `k`-linear map. -/
329
- def GroupSMul.linearMap [Monoid G] [CommSemiring k] (V : Type u₃ ) [AddCommMonoid V] [Module k V]
373
+ def GroupSMul.linearMap [Monoid G] [CommSemiring k] (V : Type * ) [AddCommMonoid V] [Module k V]
330
374
[Module (MonoidAlgebra k G) V] [IsScalarTower k (MonoidAlgebra k G) V] (g : G) : V →ₗ[k] V where
331
375
toFun v := single g (1 : k) • v
332
376
map_add' x y := smul_add (single g (1 : k)) x y
333
377
map_smul' _c _x := smul_algebra_smul_comm _ _ _
334
378
335
379
@[simp]
336
- theorem GroupSMul.linearMap_apply [Monoid G] [CommSemiring k] (V : Type u₃ ) [AddCommMonoid V]
380
+ theorem GroupSMul.linearMap_apply [Monoid G] [CommSemiring k] (V : Type * ) [AddCommMonoid V]
337
381
[Module k V] [Module (MonoidAlgebra k G) V] [IsScalarTower k (MonoidAlgebra k G) V] (g : G)
338
382
(v : V) : (GroupSMul.linearMap k V g) v = single g (1 : k) • v :=
339
383
rfl
340
384
341
385
section
342
386
343
387
variable {k}
344
- variable [Monoid G] [CommSemiring k] {V : Type u₃} { W : Type u₄ } [AddCommMonoid V] [Module k V]
388
+ variable [Monoid G] [CommSemiring k] {V W : Type * } [AddCommMonoid V] [Module k V]
345
389
[Module (MonoidAlgebra k G) V] [IsScalarTower k (MonoidAlgebra k G) V] [AddCommMonoid W]
346
390
[Module k W] [Module (MonoidAlgebra k G) W] [IsScalarTower k (MonoidAlgebra k G) W]
347
391
(f : V →ₗ[k] W)
@@ -375,14 +419,11 @@ end MonoidAlgebra
375
419
376
420
namespace AddMonoidAlgebra
377
421
378
- variable {k G H}
379
-
380
422
/-! #### Non-unital, non-associative algebra structure -/
381
423
382
424
section NonUnitalNonAssocAlgebra
383
425
384
- variable (k) [Semiring k] [DistribSMul R k] [Add G]
385
- variable {A : Type u₃} [NonUnitalNonAssocSemiring A]
426
+ variable (k) [Semiring k] [DistribSMul R k] [Add G] [NonUnitalNonAssocSemiring A]
386
427
387
428
/-- See note [partially-applied ext lemmas]. -/
388
429
@[ext high]
@@ -408,34 +449,33 @@ end NonUnitalNonAssocAlgebra
408
449
409
450
section lift
410
451
411
- variable [CommSemiring k] [AddMonoid G]
412
- variable {A : Type u₃} [Semiring A] [Algebra k A] {B : Type *} [Semiring B] [Algebra k B]
452
+ variable [CommSemiring k] [AddMonoid G] [Semiring A] [Algebra k A] [Semiring B] [Algebra k B]
413
453
414
454
/-- `liftNCRingHom` as an `AlgHom`, for when `f` is an `AlgHom` -/
415
455
def liftNCAlgHom (f : A →ₐ[k] B) (g : Multiplicative G →* B) (h_comm : ∀ x y, Commute (f x) (g y)) :
416
456
A[G] →ₐ[k] B :=
417
457
{ liftNCRingHom (f : A →+* B) g h_comm with
418
458
commutes' := by simp [liftNCRingHom] }
419
459
460
+ @[simp] lemma coe_liftNCAlgHom (f : A →ₐ[k] B) (g : Multiplicative G →* B) (h_comm) :
461
+ ⇑(liftNCAlgHom f g h_comm) = liftNC f g := rfl
462
+
420
463
/-- See note [partially-applied ext lemmas]. -/
421
464
@[ext high]
422
465
theorem algHom_ext' ⦃φ₁ φ₂ : k[G] →ₐ[k] A⦄
423
466
(h : (φ₁ : k[G] →* A).comp (of k G) = (φ₂ : k[G] →* A).comp (of k G)) :
424
467
φ₁ = φ₂ :=
425
468
algHom_ext <| DFunLike.congr_fun h
426
469
427
- variable (k G A)
428
-
470
+ variable (k G A) in
429
471
/-- Any monoid homomorphism `G →* A` can be lifted to an algebra homomorphism
430
472
`k[G] →ₐ[k] A`. -/
431
- def lift : (Multiplicative G →* A) ≃ (k[G] →ₐ[k] A) :=
432
- { @MonoidAlgebra.lift k (Multiplicative G) _ _ A _ _ with
433
- invFun := fun f => (f : k[G] →* A).comp (of k G)
434
- toFun := fun F =>
435
- { @MonoidAlgebra.lift k (Multiplicative G) _ _ A _ _ F with
436
- toFun := liftNCAlgHom (Algebra.ofId k A) F fun _ _ => Algebra.commutes _ _ } }
437
-
438
- variable {k G A}
473
+ def lift : (Multiplicative G →* A) ≃ (k[G] →ₐ[k] A) where
474
+ __ := MonoidAlgebra.lift k (Multiplicative G) A
475
+ invFun f := (f : k[G] →* A).comp (of k G)
476
+ toFun F :=
477
+ { MonoidAlgebra.lift k (Multiplicative G) A F with
478
+ toFun := liftNCAlgHom (Algebra.ofId k A) F fun _ _ => Algebra.commutes _ _ }
439
479
440
480
theorem lift_apply' (F : Multiplicative G →* A) (f : MonoidAlgebra k G) :
441
481
lift k G A F f = f.sum fun a b => algebraMap k A b * F (Multiplicative.ofAdd a) :=
@@ -488,13 +528,15 @@ end AddMonoidAlgebra
488
528
489
529
variable [CommSemiring R]
490
530
531
+ variable (k G) in
491
532
/-- The algebra equivalence between `AddMonoidAlgebra` and `MonoidAlgebra` in terms of
492
533
`Multiplicative`. -/
493
534
def AddMonoidAlgebra.toMultiplicativeAlgEquiv [Semiring k] [Algebra R k] [AddMonoid G] :
494
535
AddMonoidAlgebra k G ≃ₐ[R] MonoidAlgebra k (Multiplicative G) :=
495
536
{ AddMonoidAlgebra.toMultiplicative k G with
496
537
commutes' := fun r => by simp [AddMonoidAlgebra.toMultiplicative] }
497
538
539
+ variable (k G) in
498
540
/-- The algebra equivalence between `MonoidAlgebra` and `AddMonoidAlgebra` in terms of
499
541
`Additive`. -/
500
542
def MonoidAlgebra.toAdditiveAlgEquiv [Semiring k] [Algebra R k] [Monoid G] :
0 commit comments