@@ -243,6 +243,30 @@ record CommutativeSemigroup c ℓ : Set (suc (c ⊔ ℓ)) where
243
243
commutativeMagma : CommutativeMagma c ℓ
244
244
commutativeMagma = record { isCommutativeMagma = isCommutativeMagma }
245
245
246
+ record CommutativeBand c ℓ : Set (suc (c ⊔ ℓ)) where
247
+ infixl 7 _∙_
248
+ infix 4 _≈_
249
+ field
250
+ Carrier : Set c
251
+ _≈_ : Rel Carrier ℓ
252
+ _∙_ : Op₂ Carrier
253
+ isCommutativeBand : IsCommutativeBand _≈_ _∙_
254
+
255
+ open IsCommutativeBand isCommutativeBand public
256
+
257
+ band : Band _ _
258
+ band = record { isBand = isBand }
259
+
260
+ open Band band public
261
+ using (_≉_; magma; rawMagma; semigroup)
262
+
263
+ commutativeSemigroup : CommutativeSemigroup c ℓ
264
+ commutativeSemigroup = record { isCommutativeSemigroup = isCommutativeSemigroup }
265
+
266
+ open CommutativeSemigroup commutativeSemigroup public
267
+ using (commutativeMagma)
268
+
269
+
246
270
------------------------------------------------------------------------
247
271
-- Bundles with 1 binary operation & 1 element
248
272
------------------------------------------------------------------------
@@ -315,6 +339,27 @@ record CommutativeMonoid c ℓ : Set (suc (c ⊔ ℓ)) where
315
339
open CommutativeSemigroup commutativeSemigroup public
316
340
using (commutativeMagma)
317
341
342
+ record IdempotentMonoid c ℓ : Set (suc (c ⊔ ℓ)) where
343
+ infixl 7 _∙_
344
+ infix 4 _≈_
345
+ field
346
+ Carrier : Set c
347
+ _≈_ : Rel Carrier ℓ
348
+ _∙_ : Op₂ Carrier
349
+ ε : Carrier
350
+ isIdempotentMonoid : IsIdempotentMonoid _≈_ _∙_ ε
351
+
352
+ open IsIdempotentMonoid isIdempotentMonoid public
353
+
354
+ monoid : Monoid _ _
355
+ monoid = record { isMonoid = isMonoid }
356
+
357
+ open Monoid monoid public
358
+ using (_≉_; rawMagma; magma; semigroup; unitalMagma; rawMonoid)
359
+
360
+ band : Band _ _
361
+ band = record { isBand = isBand }
362
+
318
363
319
364
record IdempotentCommutativeMonoid c ℓ : Set (suc (c ⊔ ℓ)) where
320
365
infixl 7 _∙_
@@ -331,13 +376,21 @@ record IdempotentCommutativeMonoid c ℓ : Set (suc (c ⊔ ℓ)) where
331
376
commutativeMonoid : CommutativeMonoid _ _
332
377
commutativeMonoid = record { isCommutativeMonoid = isCommutativeMonoid }
333
378
379
+ idempotentMonoid : IdempotentMonoid _ _
380
+ idempotentMonoid = record { isIdempotentMonoid = isIdempotentMonoid }
381
+
382
+ commutativeBand : CommutativeBand _ _
383
+ commutativeBand = record { isCommutativeBand = isCommutativeBand }
384
+
334
385
open CommutativeMonoid commutativeMonoid public
335
386
using
336
387
( _≉_; rawMagma; magma; unitalMagma; commutativeMagma
337
388
; semigroup; commutativeSemigroup
338
389
; rawMonoid; monoid
339
390
)
340
391
392
+ open CommutativeBand commutativeBand public
393
+ using (band)
341
394
342
395
-- Idempotent commutative monoids are also known as bounded lattices.
343
396
-- Note that the BoundedLattice necessarily uses the notation inherited
@@ -778,6 +831,16 @@ record IdempotentSemiring c ℓ : Set (suc (c ⊔ ℓ)) where
778
831
; rawSemiring
779
832
)
780
833
834
+ +-idempotentCommutativeMonoid : IdempotentCommutativeMonoid _ _
835
+ +-idempotentCommutativeMonoid = record { isIdempotentCommutativeMonoid = +-isIdempotentCommutativeMonoid }
836
+
837
+ open IdempotentCommutativeMonoid +-idempotentCommutativeMonoid public
838
+ using ()
839
+ renaming ( band to +-band
840
+ ; commutativeBand to +-commutativeBand
841
+ ; idempotentMonoid to +-idempotentMonoid
842
+ )
843
+
781
844
record KleeneAlgebra c ℓ : Set (suc (c ⊔ ℓ)) where
782
845
infix 8 _⋆
783
846
infixl 7 _*_
0 commit comments