Skip to content

Commit e34a31f

Browse files
authored
Semiring, NearSemiring & Lattice morphisms (#1300)
1 parent b3a99a3 commit e34a31f

File tree

3 files changed

+364
-22
lines changed

3 files changed

+364
-22
lines changed

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,22 @@ Other major changes
3434

3535
Other minor additions
3636
---------------------
37+
38+
* Added new records to `Algebra.Bundles`:
39+
```agda
40+
RawNearSemiring c ℓ : Set (suc (c ⊔ ℓ))
41+
RawLattice c ℓ : Set (suc (c ⊔ ℓ))
42+
```
43+
44+
* Added new records to `Algebra.Morphism.Structures`:
45+
```agda
46+
IsNearSemiringHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
47+
IsNearSemiringMonomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
48+
IsNearSemiringIsomorphism (⟦_⟧ : A → B) : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂)
49+
IsSemiringHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
50+
IsSemiringMonomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
51+
IsSemiringIsomorphism (⟦_⟧ : A → B) : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂)
52+
IsLatticeHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
53+
IsLatticeMonomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
54+
IsLatticeIsomorphism (⟦_⟧ : A → B) : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂)
55+
```

src/Algebra/Bundles.agda

Lines changed: 104 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,22 @@ record AbelianGroup c ℓ : Set (suc (c ⊔ ℓ)) where
301301
-- Bundles with 2 binary operations
302302
------------------------------------------------------------------------
303303

304+
record RawLattice c ℓ : Set (suc (c ⊔ ℓ)) where
305+
infixr 7 _∧_
306+
infixr 6 _∨_
307+
infix 4 _≈_
308+
field
309+
Carrier : Set c
310+
_≈_ : Rel Carrier ℓ
311+
_∧_ : Op₂ Carrier
312+
_∨_ : Op₂ Carrier
313+
314+
∨-rawMagma : RawMagma c ℓ
315+
∨-rawMagma = record { _≈_ = _≈_; _∙_ = _∨_ }
316+
317+
∧-rawMagma : RawMagma c ℓ
318+
∧-rawMagma = record { _≈_ = _≈_; _∙_ = _∧_ }
319+
304320
record Lattice c ℓ : Set (suc (c ⊔ ℓ)) where
305321
infixr 7 _∧_
306322
infixr 6 _∨_
@@ -314,6 +330,15 @@ record Lattice c ℓ : Set (suc (c ⊔ ℓ)) where
314330

315331
open IsLattice isLattice public
316332

333+
rawLattice : RawLattice c ℓ
334+
rawLattice = record
335+
{ _≈_ = _≈_
336+
; _∧_ = _∧_
337+
; _∨_ = _∨_
338+
}
339+
340+
open RawLattice rawLattice using (∨-rawMagma; ∧-rawMagma)
341+
317342
setoid : Setoid _ _
318343
setoid = record { isEquivalence = isEquivalence }
319344

@@ -334,13 +359,40 @@ record DistributiveLattice c ℓ : Set (suc (c ⊔ ℓ)) where
334359
lattice : Lattice _ _
335360
lattice = record { isLattice = isLattice }
336361

337-
open Lattice lattice public using (setoid)
362+
open Lattice lattice public using (rawLattice; setoid)
338363

339364

340365
------------------------------------------------------------------------
341366
-- Bundles with 2 binary operations & 1 element
342367
------------------------------------------------------------------------
343368

369+
record RawNearSemiring c ℓ : Set (suc (c ⊔ ℓ)) where
370+
infixl 7 _*_
371+
infixl 6 _+_
372+
infix 4 _≈_
373+
field
374+
Carrier : Set c
375+
_≈_ : Rel Carrier ℓ
376+
_+_ : Op₂ Carrier
377+
_*_ : Op₂ Carrier
378+
0# : Carrier
379+
380+
+-rawMonoid : RawMonoid c ℓ
381+
+-rawMonoid = record
382+
{ _≈_ = _≈_
383+
; _∙_ = _+_
384+
; ε = 0#
385+
}
386+
387+
open RawMonoid +-rawMonoid public
388+
using () renaming (rawMagma to +-rawMagma)
389+
390+
*-rawMagma : RawMagma c ℓ
391+
*-rawMagma = record
392+
{ _≈_ = _≈_
393+
; _∙_ = _*_
394+
}
395+
344396
record NearSemiring c ℓ : Set (suc (c ⊔ ℓ)) where
345397
infixl 7 _*_
346398
infixl 6 _+_
@@ -355,6 +407,14 @@ record NearSemiring c ℓ : Set (suc (c ⊔ ℓ)) where
355407

356408
open IsNearSemiring isNearSemiring public
357409

410+
rawNearSemiring : RawNearSemiring _ _
411+
rawNearSemiring = record
412+
{ _≈_ = _≈_
413+
; _+_ = _+_
414+
; _*_ = _*_
415+
; 0# = 0#
416+
}
417+
358418
+-monoid : Monoid _ _
359419
+-monoid = record { isMonoid = +-isMonoid }
360420

@@ -398,6 +458,7 @@ record SemiringWithoutOne c ℓ : Set (suc (c ⊔ ℓ)) where
398458
( +-rawMagma; +-magma; +-semigroup
399459
; +-rawMonoid; +-monoid
400460
; *-rawMagma; *-magma; *-semigroup
461+
; rawNearSemiring
401462
)
402463

403464
+-commutativeMonoid : CommutativeMonoid _ _
@@ -432,7 +493,7 @@ record CommutativeSemiringWithoutOne c ℓ : Set (suc (c ⊔ ℓ)) where
432493
( +-rawMagma; +-magma; +-semigroup; +-commutativeSemigroup
433494
; *-rawMagma; *-magma; *-semigroup
434495
; +-rawMonoid; +-monoid; +-commutativeMonoid
435-
; nearSemiring
496+
; nearSemiring; rawNearSemiring
436497
)
437498

438499
------------------------------------------------------------------------
@@ -444,12 +505,30 @@ record RawSemiring c ℓ : Set (suc (c ⊔ ℓ)) where
444505
infixl 6 _+_
445506
infix 4 _≈_
446507
field
447-
Carrier : Set c
448-
_≈_ : Rel Carrier ℓ
449-
_+_ : Op₂ Carrier
450-
_*_ : Op₂ Carrier
451-
0# : Carrier
452-
1# : Carrier
508+
Carrier : Set c
509+
_≈_ : Rel Carrier ℓ
510+
_+_ : Op₂ Carrier
511+
_*_ : Op₂ Carrier
512+
0# : Carrier
513+
1# : Carrier
514+
515+
rawNearSemiring : RawNearSemiring c ℓ
516+
rawNearSemiring = record
517+
{ _≈_ = _≈_
518+
; _+_ = _+_
519+
; _*_ = _*_
520+
; 0# = 0#
521+
}
522+
523+
open RawNearSemiring rawNearSemiring public
524+
using (+-rawMonoid; +-rawMagma; *-rawMagma)
525+
526+
*-rawMonoid : RawMonoid c ℓ
527+
*-rawMonoid = record
528+
{ _≈_ = _≈_
529+
; _∙_ = _*_
530+
; ε = 1#
531+
}
453532

454533

455534
record SemiringWithoutAnnihilatingZero c ℓ : Set (suc (c ⊔ ℓ)) where
@@ -469,6 +548,18 @@ record SemiringWithoutAnnihilatingZero c ℓ : Set (suc (c ⊔ ℓ)) where
469548
open IsSemiringWithoutAnnihilatingZero
470549
isSemiringWithoutAnnihilatingZero public
471550

551+
rawSemiring : RawSemiring c ℓ
552+
rawSemiring = record
553+
{ _≈_ = _≈_
554+
; _+_ = _+_
555+
; _*_ = _*_
556+
; 0# = 0#
557+
; 1# = 1#
558+
}
559+
560+
open RawSemiring rawSemiring public
561+
using (rawNearSemiring)
562+
472563
+-commutativeMonoid : CommutativeMonoid _ _
473564
+-commutativeMonoid =
474565
record { isCommutativeMonoid = +-isCommutativeMonoid }
@@ -487,8 +578,7 @@ record SemiringWithoutAnnihilatingZero c ℓ : Set (suc (c ⊔ ℓ)) where
487578
*-monoid = record { isMonoid = *-isMonoid }
488579

489580
open Monoid *-monoid public
490-
using ()
491-
renaming
581+
using () renaming
492582
( rawMagma to *-rawMagma
493583
; magma to *-magma
494584
; semigroup to *-semigroup
@@ -511,15 +601,6 @@ record Semiring c ℓ : Set (suc (c ⊔ ℓ)) where
511601

512602
open IsSemiring isSemiring public
513603

514-
rawSemiring : RawSemiring _ _
515-
rawSemiring = record
516-
{ _≈_ = _≈_
517-
; _+_ = _+_
518-
; _*_ = _*_
519-
; 0# = 0#
520-
; 1# = 1#
521-
}
522-
523604
semiringWithoutAnnihilatingZero : SemiringWithoutAnnihilatingZero _ _
524605
semiringWithoutAnnihilatingZero = record
525606
{ isSemiringWithoutAnnihilatingZero =
@@ -533,6 +614,7 @@ record Semiring c ℓ : Set (suc (c ⊔ ℓ)) where
533614
; *-rawMagma; *-magma; *-semigroup
534615
; +-rawMonoid; +-monoid; +-commutativeMonoid
535616
; *-rawMonoid; *-monoid
617+
; rawNearSemiring ; rawSemiring
536618
)
537619

538620
semiringWithoutOne : SemiringWithoutOne _ _
@@ -618,9 +700,9 @@ record RawRing c ℓ : Set (suc (c ⊔ ℓ)) where
618700

619701
*-rawMonoid : RawMonoid c ℓ
620702
*-rawMonoid = record
621-
{ _≈_ = _≈_
622-
; _∙_ = _*_
623-
; ε = 1#
703+
{ _≈_ = _≈_
704+
; _∙_ = _*_
705+
; ε = 1#
624706
}
625707

626708
record Ring c ℓ : Set (suc (c ⊔ ℓ)) where

0 commit comments

Comments
 (0)