@@ -243,6 +243,30 @@ record CommutativeSemigroup c ℓ : Set (suc (c ⊔ ℓ)) where
243243 commutativeMagma : CommutativeMagma c ℓ
244244 commutativeMagma = record { isCommutativeMagma = isCommutativeMagma }
245245
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+
246270------------------------------------------------------------------------
247271-- Bundles with 1 binary operation & 1 element
248272------------------------------------------------------------------------
@@ -315,6 +339,27 @@ record CommutativeMonoid c ℓ : Set (suc (c ⊔ ℓ)) where
315339 open CommutativeSemigroup commutativeSemigroup public
316340 using (commutativeMagma)
317341
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+
318363
319364record IdempotentCommutativeMonoid c ℓ : Set (suc (c ⊔ ℓ)) where
320365 infixl 7 _∙_
@@ -331,13 +376,21 @@ record IdempotentCommutativeMonoid c ℓ : Set (suc (c ⊔ ℓ)) where
331376 commutativeMonoid : CommutativeMonoid _ _
332377 commutativeMonoid = record { isCommutativeMonoid = isCommutativeMonoid }
333378
379+ idempotentMonoid : IdempotentMonoid _ _
380+ idempotentMonoid = record { isIdempotentMonoid = isIdempotentMonoid }
381+
382+ commutativeBand : CommutativeBand _ _
383+ commutativeBand = record { isCommutativeBand = isCommutativeBand }
384+
334385 open CommutativeMonoid commutativeMonoid public
335386 using
336387 ( _≉_; rawMagma; magma; unitalMagma; commutativeMagma
337388 ; semigroup; commutativeSemigroup
338389 ; rawMonoid; monoid
339390 )
340391
392+ open CommutativeBand commutativeBand public
393+ using (band)
341394
342395-- Idempotent commutative monoids are also known as bounded lattices.
343396-- Note that the BoundedLattice necessarily uses the notation inherited
@@ -778,6 +831,16 @@ record IdempotentSemiring c ℓ : Set (suc (c ⊔ ℓ)) where
778831 ; rawSemiring
779832 )
780833
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+
781844record KleeneAlgebra c ℓ : Set (suc (c ⊔ ℓ)) where
782845 infix 8 _⋆
783846 infixl 7 _*_
0 commit comments