Skip to content

Commit 18f001c

Browse files
Add bundled homomorphisms (#2383)
* Bundle `Algebra.Morphism`s * more bundles! * `RingWithoutOne` now exports a `RawRingWithoutOne` field * disambiguation error when trying to add `RingWithoutOneHomomorphism` record * FIXED: disambiguation error when trying to add `RingWithoutOneHomomorphism` * add `rawKleeneAlgebra` * add `KleeneAlgebra`, `Quasigroup`, and `Lopp` homomorphisms * add bundled `Identity` homomorphisms * avoid name clash: remove `open`ing of sub-homomorphism bundles * add bundled `Composition` of homomorphisms * more exported sub-bundles * removed redundant anonymous `module`s * removed redundant anonymous `module`s * add `isNearSemiring` to `IsRingWithoutOne` plus knock-on re-exports * add `nearSemiring` to `RingWithoutOne` plus knock-on re-exports * add `rawNearSemiring` to `RingWithoutOne` plus knock-on re-exports * lots more exported sub-structures and sub-bundles * fix bug: restrict exports * lots more exported sub-structures and sub-bundles * refactor: `RawX` parameterisation * knock-on: `Identity` takes a full `Bundle` * tighten imports * knock-on: `Composition` takes full `Bundle`s * `CHANGELOG` * `fix-whitespace` * fix `CHANGELOG` * update `CHANGELOG` --------- Co-authored-by: MatthewDaggitt <[email protected]>
1 parent dca8857 commit 18f001c

File tree

8 files changed

+751
-39
lines changed

8 files changed

+751
-39
lines changed

CHANGELOG.md

+97
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ Deprecated names
8888
New modules
8989
-----------
9090

91+
* Bundled morphisms between (raw) algebraic structures:
92+
```
93+
Algebra.Morphism.Bundles
94+
```
95+
9196
* Properties of `IdempotentCommutativeMonoid`s refactored out from `Algebra.Solver.IdempotentCommutativeMonoid`:
9297
```agda
9398
Algebra.Properties.IdempotentCommutativeMonoid
@@ -140,6 +145,93 @@ New modules
140145
Additions to existing modules
141146
-----------------------------
142147

148+
* In `Algebra.Bundles.KleeneAlgebra`:
149+
```agda
150+
rawKleeneAlgebra : RawKleeneAlgebra _ _
151+
```
152+
153+
* In `Algebra.Bundles.Raw.RawRingWithoutOne`
154+
```agda
155+
rawNearSemiring : RawNearSemiring c ℓ
156+
```
157+
158+
* Exporting more `Raw` substructures from `Algebra.Bundles.Ring`:
159+
```agda
160+
rawNearSemiring : RawNearSemiring _ _
161+
rawRingWithoutOne : RawRingWithoutOne _ _
162+
+-rawGroup : RawGroup _ _
163+
```
164+
165+
* Exporting `RawRingWithoutOne` and `(Raw)NearSemiring` subbundles from
166+
`Algebra.Bundles.RingWithoutOne`:
167+
```agda
168+
nearSemiring : NearSemiring _ _
169+
rawNearSemiring : RawNearSemiring _ _
170+
rawRingWithoutOne : RawRingWithoutOne _ _
171+
```
172+
173+
* In `Algebra.Morphism.Construct.Composition`:
174+
```agda
175+
magmaHomomorphism : MagmaHomomorphism M₁.rawMagma M₂.rawMagma →
176+
MagmaHomomorphism M₂.rawMagma M₃.rawMagma →
177+
MagmaHomomorphism M₁.rawMagma M₃.rawMagma
178+
monoidHomomorphism : MonoidHomomorphism M₁.rawMonoid M₂.rawMonoid →
179+
MonoidHomomorphism M₂.rawMonoid M₃.rawMonoid →
180+
MonoidHomomorphism M₁.rawMonoid M₃.rawMonoid
181+
groupHomomorphism : GroupHomomorphism M₁.rawGroup M₂.rawGroup →
182+
GroupHomomorphism M₂.rawGroup M₃.rawGroup →
183+
GroupHomomorphism M₁.rawGroup M₃.rawGroup
184+
nearSemiringHomomorphism : NearSemiringHomomorphism M₁.rawNearSemiring M₂.rawNearSemiring →
185+
NearSemiringHomomorphism M₂.rawNearSemiring M₃.rawNearSemiring →
186+
NearSemiringHomomorphism M₁.rawNearSemiring M₃.rawNearSemiring
187+
semiringHomomorphism : SemiringHomomorphism M₁.rawSemiring M₂.rawSemiring →
188+
SemiringHomomorphism M₂.rawSemiring M₃.rawSemiring →
189+
SemiringHomomorphism M₁.rawSemiring M₃.rawSemiring
190+
kleeneAlgebraHomomorphism : KleeneAlgebraHomomorphism M₁.rawKleeneAlgebra M₂.rawKleeneAlgebra →
191+
KleeneAlgebraHomomorphism M₂.rawKleeneAlgebra M₃.rawKleeneAlgebra →
192+
KleeneAlgebraHomomorphism M₁.rawKleeneAlgebra M₃.rawKleeneAlgebra
193+
nearSemiringHomomorphism : NearSemiringHomomorphism M₁.rawNearSemiring M₂.rawNearSemiring →
194+
NearSemiringHomomorphism M₂.rawNearSemiring M₃.rawNearSemiring →
195+
NearSemiringHomomorphism M₁.rawNearSemiring M₃.rawNearSemiring
196+
ringWithoutOneHomomorphism : RingWithoutOneHomomorphism M₁.rawRingWithoutOne M₂.rawRingWithoutOne →
197+
RingWithoutOneHomomorphism M₂.rawRingWithoutOne M₃.rawRingWithoutOne →
198+
RingWithoutOneHomomorphism M₁.rawRingWithoutOne M₃.rawRingWithoutOne
199+
ringHomomorphism : RingHomomorphism M₁.rawRing M₂.rawRing →
200+
RingHomomorphism M₂.rawRing M₃.rawRing →
201+
RingHomomorphism M₁.rawRing M₃.rawRing
202+
quasigroupHomomorphism : QuasigroupHomomorphism M₁.rawQuasigroup M₂.rawQuasigroup →
203+
QuasigroupHomomorphism M₂.rawQuasigroup M₃.rawQuasigroup →
204+
QuasigroupHomomorphism M₁.rawQuasigroup M₃.rawQuasigroup
205+
loopHomomorphism : LoopHomomorphism M₁.rawLoop M₂.rawLoop →
206+
LoopHomomorphism M₂.rawLoop M₃.rawLoop →
207+
LoopHomomorphism M₁.rawLoop M₃.rawLoop
208+
```
209+
210+
* In `Algebra.Morphism.Construct.Identity`:
211+
```agda
212+
magmaHomomorphism : MagmaHomomorphism M.rawMagma M.rawMagma
213+
monoidHomomorphism : MonoidHomomorphism M.rawMonoid M.rawMonoid
214+
groupHomomorphism : GroupHomomorphism M.rawGroup M.rawGroup
215+
nearSemiringHomomorphism : NearSemiringHomomorphism M.raw M.raw
216+
semiringHomomorphism : SemiringHomomorphism M.rawNearSemiring M.rawNearSemiring
217+
kleeneAlgebraHomomorphism : KleeneAlgebraHomomorphism M.rawKleeneAlgebra M.rawKleeneAlgebra
218+
nearSemiringHomomorphism : NearSemiringHomomorphism M.rawNearSemiring M.rawNearSemiring
219+
ringWithoutOneHomomorphism : RingWithoutOneHomomorphism M.rawRingWithoutOne M.rawRingWithoutOne
220+
ringHomomorphism : RingHomomorphism M.rawRing M.rawRing
221+
quasigroupHomomorphism : QuasigroupHomomorphism M.rawQuasigroup M.rawQuasigroup
222+
loopHomomorphism : LoopHomomorphism M.rawLoop M.rawLoop
223+
```
224+
225+
* In `Algebra.Morphism.Structures.RingMorphisms`
226+
```agda
227+
isRingWithoutOneHomomorphism : IsRingWithoutOneHomomorphism ⟦_⟧
228+
```
229+
230+
* In `Algebra.Morphism.Structures.RingWithoutOneMorphisms`
231+
```agda
232+
isNearSemiringHomomorphism : IsNearSemiringHomomorphism ⟦_⟧
233+
```
234+
143235
* Properties of non-divisibility in `Algebra.Properties.Magma.Divisibility`:
144236
```agda
145237
∤-respˡ-≈ : _∤_ Respectsˡ _≈_
@@ -157,6 +249,11 @@ Additions to existing modules
157249
Env = Vec Carrier
158250
```
159251

252+
* In `Algebra.Structures.RingWithoutOne`:
253+
```agda
254+
isNearSemiring : IsNearSemiring _ _
255+
```
256+
160257
* In `Data.List.Membership.Setoid.Properties`:
161258
```agda
162259
∉⇒All[≉] : x ∉ xs → All (x ≉_) xs

src/Algebra/Bundles.agda

+32-9
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,16 @@ record KleeneAlgebra c ℓ : Set (suc (c ⊔ ℓ)) where
873873
; rawSemiring; semiring
874874
)
875875

876+
rawKleeneAlgebra : RawKleeneAlgebra _ _
877+
rawKleeneAlgebra = record
878+
{ _≈_ = _≈_
879+
; _+_ = _+_
880+
; _*_ = _*_
881+
; _⋆ = _⋆
882+
; 0# = 0#
883+
; 1# = 1#
884+
}
885+
876886
record Quasiring c ℓ : Set (suc (c ⊔ ℓ)) where
877887
infixl 7 _*_
878888
infixl 6 _+_
@@ -931,20 +941,33 @@ record RingWithoutOne c ℓ : Set (suc (c ⊔ ℓ)) where
931941

932942
open IsRingWithoutOne isRingWithoutOne public
933943

944+
nearSemiring : NearSemiring _ _
945+
nearSemiring = record { isNearSemiring = isNearSemiring }
946+
947+
open NearSemiring nearSemiring public
948+
using (*-semigroup; *-magma)
949+
934950
+-abelianGroup : AbelianGroup _ _
935951
+-abelianGroup = record { isAbelianGroup = +-isAbelianGroup }
936952

937-
*-semigroup : Semigroup _ _
938-
*-semigroup = record { isSemigroup = *-isSemigroup }
939-
940953
open AbelianGroup +-abelianGroup public
941-
using () renaming (group to +-group; invertibleMagma to +-invertibleMagma; invertibleUnitalMagma to +-invertibleUnitalMagma)
954+
using ()
955+
renaming (group to +-group;
956+
invertibleMagma to +-invertibleMagma;
957+
invertibleUnitalMagma to +-invertibleUnitalMagma)
958+
959+
rawRingWithoutOne : RawRingWithoutOne _ _
960+
rawRingWithoutOne = record
961+
{ _≈_ = _≈_
962+
; _+_ = _+_
963+
; _*_ = _*_
964+
; -_ = -_
965+
; 0# = 0#
966+
}
967+
968+
open RawRingWithoutOne rawRingWithoutOne public
969+
using (+-rawGroup; *-rawMagma; rawNearSemiring)
942970

943-
open Semigroup *-semigroup public
944-
using () renaming
945-
( rawMagma to *-rawMagma
946-
; magma to *-magma
947-
)
948971

949972
------------------------------------------------------------------------
950973
-- Bundles with 2 binary operations, 1 unary operation & 2 elements

src/Algebra/Bundles/Raw.agda

+11-9
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,17 @@ record RawRingWithoutOne c ℓ : Set (suc (c ⊔ ℓ)) where
174174
-_ : Op₁ Carrier
175175
0# : Carrier
176176

177+
rawNearSemiring : RawNearSemiring c ℓ
178+
rawNearSemiring = record
179+
{ _≈_ = _≈_
180+
; _+_ = _+_
181+
; _*_ = _*_
182+
; 0# = 0#
183+
}
184+
185+
open RawNearSemiring rawNearSemiring public
186+
using (_≉_; *-rawMagma; +-rawMagma; +-rawMonoid)
187+
177188
+-rawGroup : RawGroup c ℓ
178189
+-rawGroup = record
179190
{ _≈_ = _≈_
@@ -182,15 +193,6 @@ record RawRingWithoutOne c ℓ : Set (suc (c ⊔ ℓ)) where
182193
; _⁻¹ = -_
183194
}
184195

185-
open RawGroup +-rawGroup public
186-
using (_≉_) renaming (rawMagma to +-rawMagma; rawMonoid to +-rawMonoid)
187-
188-
*-rawMagma : RawMagma c ℓ
189-
*-rawMagma = record
190-
{ _≈_ = _≈_
191-
; _∙_ = _*_
192-
}
193-
194196
------------------------------------------------------------------------
195197
-- Raw bundles with 2 binary operations, 1 unary operation & 2 elements
196198
------------------------------------------------------------------------

0 commit comments

Comments
 (0)