@@ -16,33 +16,31 @@ import Mathlib.LinearAlgebra.Finsupp.LSum
16
16
17
17
assert_not_exists NonUnitalAlgHom AlgEquiv
18
18
19
- noncomputable section
20
-
19
+ open Function
21
20
open Finsupp hiding single mapDomain
22
21
23
- universe u₁ u₂ u₃ u₄
22
+ noncomputable section
24
23
25
- variable (k : Type u₁) (G : Type u₂) (H : Type *) {R : Type *}
24
+ variable {k R S G H M N : Type *}
26
25
27
26
/-! ### Multiplicative monoids -/
28
27
29
28
namespace MonoidAlgebra
30
29
31
- variable {k G}
30
+ section Semiring
31
+ variable [Semiring R] [Semiring S] {f : M → N} {a : M} {r : R}
32
32
33
- section
33
+ abbrev mapDomain (f : M → N) (v : MonoidAlgebra R M) : MonoidAlgebra R N := Finsupp.mapDomain f v
34
34
35
- variable [Semiring k] [NonUnitalNonAssocSemiring R]
35
+ lemma mapDomain_sum (f : M → N) (s : MonoidAlgebra S M) (v : M → S → MonoidAlgebra R M) :
36
+ mapDomain f (s.sum v) = s.sum fun a b ↦ mapDomain f (v a b) := Finsupp.mapDomain_sum
36
37
37
- abbrev mapDomain {G' : Type *} (f : G → G') (v : MonoidAlgebra k G) : MonoidAlgebra k G' :=
38
- Finsupp.mapDomain f v
38
+ lemma mapDomain_single : mapDomain f (single a r) = single (f a) r := Finsupp.mapDomain_single
39
39
40
- theorem mapDomain_sum {k' G' : Type *} [Semiring k'] {f : G → G'} {s : MonoidAlgebra k' G}
41
- {v : G → k' → MonoidAlgebra k G} :
42
- mapDomain f (s.sum v) = s.sum fun a b => mapDomain f (v a b) :=
43
- Finsupp.mapDomain_sum
40
+ lemma mapDomain_injective (hf : Injective f) : Injective (mapDomain (R := R) f) :=
41
+ Finsupp.mapDomain_injective hf
44
42
45
- end
43
+ end Semiring
46
44
47
45
48
46
section MiscTheorems
@@ -91,25 +89,20 @@ end MonoidAlgebra
91
89
92
90
namespace AddMonoidAlgebra
93
91
94
- variable {k G}
92
+ section Semiring
93
+ variable [Semiring R] [Semiring S] {f : M → N} {a : M} {r : R}
95
94
96
- section
97
-
98
- variable [Semiring k] [NonUnitalNonAssocSemiring R]
95
+ abbrev mapDomain (f : M → N) (v : R[M]) : R[N] := Finsupp.mapDomain f v
99
96
100
- abbrev mapDomain {G' : Type *} (f : G → G' ) (v : k[G ]) : k[G'] :=
101
- Finsupp. mapDomain f v
97
+ lemma mapDomain_sum (f : M → N ) (s : S[M ]) (v : M → S → R[M]) :
98
+ mapDomain f (s.sum v) = s.sum fun a b ↦ mapDomain f (v a b) := Finsupp.mapDomain_sum
102
99
103
- theorem mapDomain_sum {k' G' : Type *} [Semiring k'] {f : G → G'} {s : AddMonoidAlgebra k' G}
104
- {v : G → k' → k[G]} :
105
- mapDomain f (s.sum v) = s.sum fun a b => mapDomain f (v a b) :=
106
- Finsupp.mapDomain_sum
100
+ lemma mapDomain_single : mapDomain f (single a r) = single (f a) r := Finsupp.mapDomain_single
107
101
108
- theorem mapDomain_single {G' : Type *} {f : G → G'} {a : G} {b : k} :
109
- mapDomain f (single a b) = single (f a) b :=
110
- Finsupp.mapDomain_single
102
+ lemma mapDomain_injective (hf : Injective f) : Injective (mapDomain (R := R) f) :=
103
+ Finsupp.mapDomain_injective hf
111
104
112
- end
105
+ end Semiring
113
106
114
107
section MiscTheorems
115
108
@@ -159,7 +152,7 @@ since the changes that have made `nsmul` definitional, this would be possible,
159
152
but for now we just construct the ring isomorphisms using `RingEquiv.refl _`.
160
153
-/
161
154
162
-
155
+ variable (k G) in
163
156
/-- The equivalence between `AddMonoidAlgebra` and `MonoidAlgebra` in terms of
164
157
`Multiplicative` -/
165
158
protected def AddMonoidAlgebra.toMultiplicative [Semiring k] [Add G] :
@@ -174,6 +167,7 @@ protected def AddMonoidAlgebra.toMultiplicative [Semiring k] [Add G] :
174
167
exact MonoidAlgebra.mapDomain_mul (α := Multiplicative G) (β := k)
175
168
(MulHom.id (Multiplicative G)) x y }
176
169
170
+ variable (k G) in
177
171
/-- The equivalence between `MonoidAlgebra` and `AddMonoidAlgebra` in terms of `Additive` -/
178
172
protected def MonoidAlgebra.toAdditive [Semiring k] [Mul G] :
179
173
MonoidAlgebra k G ≃+* AddMonoidAlgebra k (Additive G) :=
0 commit comments