@@ -28,6 +28,7 @@ module Algebra.Module.Bundles where
28
28
open import Algebra.Bundles
29
29
open import Algebra.Core
30
30
open import Algebra.Definitions using (Involutive)
31
+ import Algebra.Module.Bundles.Raw as Raw
31
32
open import Algebra.Module.Core
32
33
open import Algebra.Module.Structures
33
34
open import Algebra.Module.Definitions
@@ -42,6 +43,16 @@ private
42
43
variable
43
44
r ℓr s ℓs : Level
44
45
46
+ ------------------------------------------------------------------------
47
+ -- Re-export definitions of 'raw' bundles
48
+
49
+ open Raw public
50
+ using ( RawLeftSemimodule; RawLeftModule
51
+ ; RawRightSemimodule; RawRightModule
52
+ ; RawBisemimodule; RawBimodule
53
+ ; RawSemimodule; RawModule
54
+ )
55
+
45
56
------------------------------------------------------------------------
46
57
-- Left modules
47
58
------------------------------------------------------------------------
@@ -62,10 +73,6 @@ record LeftSemimodule (semiring : Semiring r ℓr) m ℓm
62
73
0ᴹ : Carrierᴹ
63
74
isLeftSemimodule : IsLeftSemimodule semiring _≈ᴹ_ _+ᴹ_ 0ᴹ _*ₗ_
64
75
65
- infix 4 _≉ᴹ_
66
- _≉ᴹ_ : Rel Carrierᴹ _
67
- a ≉ᴹ b = ¬ (a ≈ᴹ b)
68
-
69
76
open IsLeftSemimodule isLeftSemimodule public
70
77
71
78
+ᴹ-commutativeMonoid : CommutativeMonoid m ℓm
@@ -80,8 +87,17 @@ record LeftSemimodule (semiring : Semiring r ℓr) m ℓm
80
87
; magma to +ᴹ-magma
81
88
; rawMagma to +ᴹ-rawMagma
82
89
; rawMonoid to +ᴹ-rawMonoid
90
+ ; _≉_ to _≉ᴹ_
83
91
)
84
92
93
+ rawLeftSemimodule : RawLeftSemimodule Carrier m ℓm
94
+ rawLeftSemimodule = record
95
+ { _≈ᴹ_ = _≈ᴹ_
96
+ ; _+ᴹ_ = _+ᴹ_
97
+ ; _*ₗ_ = _*ₗ_
98
+ ; 0ᴹ = 0ᴹ
99
+ }
100
+
85
101
record LeftModule (ring : Ring r ℓr) m ℓm : Set (r ⊔ ℓr ⊔ suc (m ⊔ ℓm)) where
86
102
open Ring ring
87
103
@@ -106,14 +122,23 @@ record LeftModule (ring : Ring r ℓr) m ℓm : Set (r ⊔ ℓr ⊔ suc (m ⊔
106
122
107
123
open LeftSemimodule leftSemimodule public
108
124
using ( +ᴹ-commutativeMonoid; +ᴹ-monoid; +ᴹ-semigroup; +ᴹ-magma
109
- ; +ᴹ-rawMagma; +ᴹ-rawMonoid; _≉ᴹ_)
125
+ ; +ᴹ-rawMagma; +ᴹ-rawMonoid; rawLeftSemimodule; _≉ᴹ_)
110
126
111
127
+ᴹ-abelianGroup : AbelianGroup m ℓm
112
128
+ᴹ-abelianGroup = record { isAbelianGroup = +ᴹ-isAbelianGroup }
113
129
114
130
open AbelianGroup +ᴹ-abelianGroup public
115
131
using () renaming (group to +ᴹ-group; rawGroup to +ᴹ-rawGroup)
116
132
133
+ rawLeftModule : RawLeftModule Carrier m ℓm
134
+ rawLeftModule = record
135
+ { _≈ᴹ_ = _≈ᴹ_
136
+ ; _+ᴹ_ = _+ᴹ_
137
+ ; _*ₗ_ = _*ₗ_
138
+ ; 0ᴹ = 0ᴹ
139
+ ; -ᴹ_ = -ᴹ_
140
+ }
141
+
117
142
------------------------------------------------------------------------
118
143
-- Right modules
119
144
------------------------------------------------------------------------
@@ -134,10 +159,6 @@ record RightSemimodule (semiring : Semiring r ℓr) m ℓm
134
159
0ᴹ : Carrierᴹ
135
160
isRightSemimodule : IsRightSemimodule semiring _≈ᴹ_ _+ᴹ_ 0ᴹ _*ᵣ_
136
161
137
- infix 4 _≉ᴹ_
138
- _≉ᴹ_ : Rel Carrierᴹ _
139
- a ≉ᴹ b = ¬ (a ≈ᴹ b)
140
-
141
162
open IsRightSemimodule isRightSemimodule public
142
163
143
164
+ᴹ-commutativeMonoid : CommutativeMonoid m ℓm
@@ -152,8 +173,17 @@ record RightSemimodule (semiring : Semiring r ℓr) m ℓm
152
173
; magma to +ᴹ-magma
153
174
; rawMagma to +ᴹ-rawMagma
154
175
; rawMonoid to +ᴹ-rawMonoid
176
+ ; _≉_ to _≉ᴹ_
155
177
)
156
178
179
+ rawRightSemimodule : RawRightSemimodule Carrier m ℓm
180
+ rawRightSemimodule = record
181
+ { _≈ᴹ_ = _≈ᴹ_
182
+ ; _+ᴹ_ = _+ᴹ_
183
+ ; _*ᵣ_ = _*ᵣ_
184
+ ; 0ᴹ = 0ᴹ
185
+ }
186
+
157
187
record RightModule (ring : Ring r ℓr) m ℓm : Set (r ⊔ ℓr ⊔ suc (m ⊔ ℓm)) where
158
188
open Ring ring
159
189
@@ -178,14 +208,23 @@ record RightModule (ring : Ring r ℓr) m ℓm : Set (r ⊔ ℓr ⊔ suc (m ⊔
178
208
179
209
open RightSemimodule rightSemimodule public
180
210
using ( +ᴹ-commutativeMonoid; +ᴹ-monoid; +ᴹ-semigroup; +ᴹ-magma
181
- ; +ᴹ-rawMagma; +ᴹ-rawMonoid; _≉ᴹ_)
211
+ ; +ᴹ-rawMagma; +ᴹ-rawMonoid; rawRightSemimodule; _≉ᴹ_)
182
212
183
213
+ᴹ-abelianGroup : AbelianGroup m ℓm
184
214
+ᴹ-abelianGroup = record { isAbelianGroup = +ᴹ-isAbelianGroup }
185
215
186
216
open AbelianGroup +ᴹ-abelianGroup public
187
217
using () renaming (group to +ᴹ-group; rawGroup to +ᴹ-rawGroup)
188
218
219
+ rawRightModule : RawRightModule Carrier m ℓm
220
+ rawRightModule = record
221
+ { _≈ᴹ_ = _≈ᴹ_
222
+ ; _+ᴹ_ = _+ᴹ_
223
+ ; _*ᵣ_ = _*ᵣ_
224
+ ; 0ᴹ = 0ᴹ
225
+ ; -ᴹ_ = -ᴹ_
226
+ }
227
+
189
228
------------------------------------------------------------------------
190
229
-- Bimodules
191
230
------------------------------------------------------------------------
@@ -220,7 +259,19 @@ record Bisemimodule (R-semiring : Semiring r ℓr) (S-semiring : Semiring s ℓs
220
259
221
260
open LeftSemimodule leftSemimodule public
222
261
using ( +ᴹ-commutativeMonoid; +ᴹ-monoid; +ᴹ-semigroup; +ᴹ-magma; +ᴹ-rawMagma
223
- ; +ᴹ-rawMonoid; _≉ᴹ_)
262
+ ; +ᴹ-rawMonoid; rawLeftSemimodule; _≉ᴹ_)
263
+
264
+ open RightSemimodule rightSemimodule public
265
+ using ( rawRightSemimodule )
266
+
267
+ rawBisemimodule : RawBisemimodule R.Carrier S.Carrier m ℓm
268
+ rawBisemimodule = record
269
+ { _≈ᴹ_ = _≈ᴹ_
270
+ ; _+ᴹ_ = _+ᴹ_
271
+ ; _*ₗ_ = _*ₗ_
272
+ ; _*ᵣ_ = _*ᵣ_
273
+ ; 0ᴹ = 0ᴹ
274
+ }
224
275
225
276
record Bimodule (R-ring : Ring r ℓr) (S-ring : Ring s ℓs) m ℓm
226
277
: Set (r ⊔ s ⊔ ℓr ⊔ ℓs ⊔ suc (m ⊔ ℓm)) where
@@ -254,13 +305,26 @@ record Bimodule (R-ring : Ring r ℓr) (S-ring : Ring s ℓs) m ℓm
254
305
open LeftModule leftModule public
255
306
using ( +ᴹ-abelianGroup; +ᴹ-commutativeMonoid; +ᴹ-group; +ᴹ-monoid
256
307
; +ᴹ-semigroup; +ᴹ-magma; +ᴹ-rawMagma; +ᴹ-rawMonoid; +ᴹ-rawGroup
257
- ; _≉ᴹ_)
308
+ ; rawLeftSemimodule; rawLeftModule; _≉ᴹ_)
309
+
310
+ open RightModule rightModule public
311
+ using ( rawRightSemimodule; rawRightModule )
258
312
259
313
bisemimodule : Bisemimodule R.semiring S.semiring m ℓm
260
314
bisemimodule = record { isBisemimodule = isBisemimodule }
261
315
262
316
open Bisemimodule bisemimodule public
263
- using (leftSemimodule; rightSemimodule)
317
+ using (leftSemimodule; rightSemimodule; rawBisemimodule)
318
+
319
+ rawBimodule : RawBimodule R.Carrier S.Carrier m ℓm
320
+ rawBimodule = record
321
+ { _≈ᴹ_ = _≈ᴹ_
322
+ ; _+ᴹ_ = _+ᴹ_
323
+ ; _*ₗ_ = _*ₗ_
324
+ ; _*ᵣ_ = _*ᵣ_
325
+ ; 0ᴹ = 0ᴹ
326
+ ; -ᴹ_ = -ᴹ_
327
+ }
264
328
265
329
------------------------------------------------------------------------
266
330
-- Modules over commutative structures
@@ -296,7 +360,9 @@ record Semimodule (commutativeSemiring : CommutativeSemiring r ℓr) m ℓm
296
360
open Bisemimodule bisemimodule public
297
361
using ( leftSemimodule; rightSemimodule
298
362
; +ᴹ-commutativeMonoid; +ᴹ-monoid; +ᴹ-semigroup; +ᴹ-magma
299
- ; +ᴹ-rawMagma; +ᴹ-rawMonoid; _≉ᴹ_)
363
+ ; +ᴹ-rawMagma; +ᴹ-rawMonoid; rawLeftSemimodule; rawRightSemimodule
364
+ ; rawBisemimodule; _≉ᴹ_
365
+ )
300
366
301
367
open SetR ≈ᴹ-setoid
302
368
@@ -314,6 +380,9 @@ record Semimodule (commutativeSemiring : CommutativeSemiring r ℓr) m ℓm
314
380
m *ᵣ (y * x) ≈⟨ ≈ᴹ-sym (*ᵣ-assoc m y x) ⟩
315
381
m *ᵣ y *ᵣ x ∎
316
382
383
+ rawSemimodule : RawSemimodule Carrier m ℓm
384
+ rawSemimodule = rawBisemimodule
385
+
317
386
record Module (commutativeRing : CommutativeRing r ℓr) m ℓm
318
387
: Set (r ⊔ ℓr ⊔ suc (m ⊔ ℓm)) where
319
388
open CommutativeRing commutativeRing
@@ -343,9 +412,13 @@ record Module (commutativeRing : CommutativeRing r ℓr) m ℓm
343
412
using ( leftModule; rightModule; leftSemimodule; rightSemimodule
344
413
; +ᴹ-abelianGroup; +ᴹ-group; +ᴹ-commutativeMonoid; +ᴹ-monoid
345
414
; +ᴹ-semigroup; +ᴹ-magma ; +ᴹ-rawMonoid; +ᴹ-rawMagma
346
- ; +ᴹ-rawGroup; _≉ᴹ_)
415
+ ; +ᴹ-rawGroup; rawLeftSemimodule; rawLeftModule; rawRightSemimodule
416
+ ; rawRightModule; rawBisemimodule; rawBimodule; _≉ᴹ_)
347
417
348
418
semimodule : Semimodule commutativeSemiring m ℓm
349
419
semimodule = record { isSemimodule = isSemimodule }
350
420
351
- open Semimodule semimodule public using (*ₗ-comm; *ᵣ-comm)
421
+ open Semimodule semimodule public using (*ₗ-comm; *ᵣ-comm; rawSemimodule)
422
+
423
+ rawModule : RawModule Carrier m ℓm
424
+ rawModule = rawBimodule
0 commit comments