Skip to content

Add bundled homomorphisms #2383

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 36 commits into from
Dec 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
fe3fea0
Bundle `Algebra.Morphism`s
jamesmckinna May 7, 2024
a33cff6
more bundles!
jamesmckinna May 8, 2024
ca14ed9
`RingWithoutOne` now exports a `RawRingWithoutOne` field
jamesmckinna May 15, 2024
a5f8c0e
disambiguation error when trying to add `RingWithoutOneHomomorphism` …
jamesmckinna May 15, 2024
7d9649c
FIXED: disambiguation error when trying to add `RingWithoutOneHomomor…
jamesmckinna May 15, 2024
a4a1549
add `rawKleeneAlgebra`
jamesmckinna May 16, 2024
32682ce
add `KleeneAlgebra`, `Quasigroup`, and `Lopp` homomorphisms
jamesmckinna May 16, 2024
59474ac
add bundled `Identity` homomorphisms
jamesmckinna May 16, 2024
6c8459f
avoid name clash: remove `open`ing of sub-homomorphism bundles
jamesmckinna May 16, 2024
df9b2da
add bundled `Composition` of homomorphisms
jamesmckinna May 16, 2024
6c44f5b
more exported sub-bundles
jamesmckinna May 16, 2024
150daaa
removed redundant anonymous `module`s
jamesmckinna May 16, 2024
454d8ed
removed redundant anonymous `module`s
jamesmckinna May 16, 2024
04fa1f4
add `isNearSemiring` to `IsRingWithoutOne` plus knock-on re-exports
jamesmckinna May 17, 2024
71e8e2e
add `nearSemiring` to `RingWithoutOne` plus knock-on re-exports
jamesmckinna May 17, 2024
8e1c8a1
add `rawNearSemiring` to `RingWithoutOne` plus knock-on re-exports
jamesmckinna May 17, 2024
da9b808
lots more exported sub-structures and sub-bundles
jamesmckinna May 17, 2024
6d1c1c1
fix bug: restrict exports
jamesmckinna May 17, 2024
88aa9f6
lots more exported sub-structures and sub-bundles
jamesmckinna May 17, 2024
deff25f
Merge branch 'master' into bundled-homomorphisms
jamesmckinna May 31, 2024
6c31fde
refactor: `RawX` parameterisation
jamesmckinna Jun 12, 2024
38fb861
knock-on: `Identity` takes a full `Bundle`
jamesmckinna Jun 12, 2024
08624e5
tighten imports
jamesmckinna Jun 12, 2024
52ab68a
knock-on: `Composition` takes full `Bundle`s
jamesmckinna Jun 12, 2024
3409e84
`CHANGELOG`
jamesmckinna Jun 12, 2024
2677916
Merge branch 'master' into bundled-homomorphisms
jamesmckinna Jun 12, 2024
dfb67c9
`fix-whitespace`
jamesmckinna Jun 12, 2024
1e8c3d3
Merge branch 'master' into bundled-homomorphisms
jamesmckinna Jun 13, 2024
bd66103
fix `CHANGELOG`
jamesmckinna Jul 28, 2024
4da68d5
Merge branch 'agda:master' into bundled-homomorphisms
jamesmckinna Jul 28, 2024
8fa69d9
update `CHANGELOG`
jamesmckinna Jul 28, 2024
4c2cec5
Merge branch 'master' into bundled-homomorphisms
jamesmckinna Aug 5, 2024
b325a03
Merge branch 'master' into bundled-homomorphisms
MatthewDaggitt Aug 14, 2024
0a1cc14
Merge branch 'master' into bundled-homomorphisms
jamesmckinna Aug 14, 2024
47308cc
Merge branch 'master' into bundled-homomorphisms
jamesmckinna Sep 3, 2024
86e0e37
Merge branch 'master' into bundled-homomorphisms
jamesmckinna Sep 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@ Deprecated names
New modules
-----------

* Bundled morphisms between (raw) algebraic structures:
```
Algebra.Morphism.Bundles
```

* Properties of `IdempotentCommutativeMonoid`s refactored out from `Algebra.Solver.IdempotentCommutativeMonoid`:
```agda
Algebra.Properties.IdempotentCommutativeMonoid
Expand All @@ -101,6 +106,93 @@ New modules
Additions to existing modules
-----------------------------

* In `Algebra.Bundles.KleeneAlgebra`:
```agda
rawKleeneAlgebra : RawKleeneAlgebra _ _
```

* In `Algebra.Bundles.Raw.RawRingWithoutOne`
```agda
rawNearSemiring : RawNearSemiring c ℓ
```

* Exporting more `Raw` substructures from `Algebra.Bundles.Ring`:
```agda
rawNearSemiring : RawNearSemiring _ _
rawRingWithoutOne : RawRingWithoutOne _ _
+-rawGroup : RawGroup _ _
```

* Exporting `RawRingWithoutOne` and `(Raw)NearSemiring` subbundles from
`Algebra.Bundles.RingWithoutOne`:
```agda
nearSemiring : NearSemiring _ _
rawNearSemiring : RawNearSemiring _ _
rawRingWithoutOne : RawRingWithoutOne _ _
```

* In `Algebra.Morphism.Construct.Composition`:
```agda
magmaHomomorphism : MagmaHomomorphism M₁.rawMagma M₂.rawMagma →
MagmaHomomorphism M₂.rawMagma M₃.rawMagma →
MagmaHomomorphism M₁.rawMagma M₃.rawMagma
monoidHomomorphism : MonoidHomomorphism M₁.rawMonoid M₂.rawMonoid →
MonoidHomomorphism M₂.rawMonoid M₃.rawMonoid →
MonoidHomomorphism M₁.rawMonoid M₃.rawMonoid
groupHomomorphism : GroupHomomorphism M₁.rawGroup M₂.rawGroup →
GroupHomomorphism M₂.rawGroup M₃.rawGroup →
GroupHomomorphism M₁.rawGroup M₃.rawGroup
nearSemiringHomomorphism : NearSemiringHomomorphism M₁.rawNearSemiring M₂.rawNearSemiring →
NearSemiringHomomorphism M₂.rawNearSemiring M₃.rawNearSemiring →
NearSemiringHomomorphism M₁.rawNearSemiring M₃.rawNearSemiring
semiringHomomorphism : SemiringHomomorphism M₁.rawSemiring M₂.rawSemiring →
SemiringHomomorphism M₂.rawSemiring M₃.rawSemiring →
SemiringHomomorphism M₁.rawSemiring M₃.rawSemiring
kleeneAlgebraHomomorphism : KleeneAlgebraHomomorphism M₁.rawKleeneAlgebra M₂.rawKleeneAlgebra →
KleeneAlgebraHomomorphism M₂.rawKleeneAlgebra M₃.rawKleeneAlgebra →
KleeneAlgebraHomomorphism M₁.rawKleeneAlgebra M₃.rawKleeneAlgebra
nearSemiringHomomorphism : NearSemiringHomomorphism M₁.rawNearSemiring M₂.rawNearSemiring →
NearSemiringHomomorphism M₂.rawNearSemiring M₃.rawNearSemiring →
NearSemiringHomomorphism M₁.rawNearSemiring M₃.rawNearSemiring
ringWithoutOneHomomorphism : RingWithoutOneHomomorphism M₁.rawRingWithoutOne M₂.rawRingWithoutOne →
RingWithoutOneHomomorphism M₂.rawRingWithoutOne M₃.rawRingWithoutOne →
RingWithoutOneHomomorphism M₁.rawRingWithoutOne M₃.rawRingWithoutOne
ringHomomorphism : RingHomomorphism M₁.rawRing M₂.rawRing →
RingHomomorphism M₂.rawRing M₃.rawRing →
RingHomomorphism M₁.rawRing M₃.rawRing
quasigroupHomomorphism : QuasigroupHomomorphism M₁.rawQuasigroup M₂.rawQuasigroup →
QuasigroupHomomorphism M₂.rawQuasigroup M₃.rawQuasigroup →
QuasigroupHomomorphism M₁.rawQuasigroup M₃.rawQuasigroup
loopHomomorphism : LoopHomomorphism M₁.rawLoop M₂.rawLoop →
LoopHomomorphism M₂.rawLoop M₃.rawLoop →
LoopHomomorphism M₁.rawLoop M₃.rawLoop
```

* In `Algebra.Morphism.Construct.Identity`:
```agda
magmaHomomorphism : MagmaHomomorphism M.rawMagma M.rawMagma
monoidHomomorphism : MonoidHomomorphism M.rawMonoid M.rawMonoid
groupHomomorphism : GroupHomomorphism M.rawGroup M.rawGroup
nearSemiringHomomorphism : NearSemiringHomomorphism M.raw M.raw
semiringHomomorphism : SemiringHomomorphism M.rawNearSemiring M.rawNearSemiring
kleeneAlgebraHomomorphism : KleeneAlgebraHomomorphism M.rawKleeneAlgebra M.rawKleeneAlgebra
nearSemiringHomomorphism : NearSemiringHomomorphism M.rawNearSemiring M.rawNearSemiring
ringWithoutOneHomomorphism : RingWithoutOneHomomorphism M.rawRingWithoutOne M.rawRingWithoutOne
ringHomomorphism : RingHomomorphism M.rawRing M.rawRing
quasigroupHomomorphism : QuasigroupHomomorphism M.rawQuasigroup M.rawQuasigroup
loopHomomorphism : LoopHomomorphism M.rawLoop M.rawLoop
```

* In `Algebra.Morphism.Structures.RingMorphisms`
```agda
isRingWithoutOneHomomorphism : IsRingWithoutOneHomomorphism ⟦_⟧
```

* In `Algebra.Morphism.Structures.RingWithoutOneMorphisms`
```agda
isNearSemiringHomomorphism : IsNearSemiringHomomorphism ⟦_⟧
```

* Properties of non-divisibility in `Algebra.Properties.Magma.Divisibility`:
```agda
∤-respˡ-≈ : _∤_ Respectsˡ _≈_
Expand All @@ -118,6 +210,11 @@ Additions to existing modules
Env = Vec Carrier
```

* In `Algebra.Structures.RingWithoutOne`:
```agda
isNearSemiring : IsNearSemiring _ _
```

* In `Data.List.Membership.Setoid.Properties`:
```agda
Any-∈-swap : Any (_∈ ys) xs → Any (_∈ xs) ys
Expand Down
41 changes: 32 additions & 9 deletions src/Algebra/Bundles.agda
Original file line number Diff line number Diff line change
Expand Up @@ -873,6 +873,16 @@ record KleeneAlgebra c ℓ : Set (suc (c ⊔ ℓ)) where
; rawSemiring; semiring
)

rawKleeneAlgebra : RawKleeneAlgebra _ _
rawKleeneAlgebra = record
{ _≈_ = _≈_
; _+_ = _+_
; _*_ = _*_
; _⋆ = _⋆
; 0# = 0#
; 1# = 1#
}

record Quasiring c ℓ : Set (suc (c ⊔ ℓ)) where
infixl 7 _*_
infixl 6 _+_
Expand Down Expand Up @@ -931,20 +941,33 @@ record RingWithoutOne c ℓ : Set (suc (c ⊔ ℓ)) where

open IsRingWithoutOne isRingWithoutOne public

nearSemiring : NearSemiring _ _
nearSemiring = record { isNearSemiring = isNearSemiring }

open NearSemiring nearSemiring public
using (*-semigroup; *-magma)

+-abelianGroup : AbelianGroup _ _
+-abelianGroup = record { isAbelianGroup = +-isAbelianGroup }

*-semigroup : Semigroup _ _
*-semigroup = record { isSemigroup = *-isSemigroup }

open AbelianGroup +-abelianGroup public
using () renaming (group to +-group; invertibleMagma to +-invertibleMagma; invertibleUnitalMagma to +-invertibleUnitalMagma)
using ()
renaming (group to +-group;
invertibleMagma to +-invertibleMagma;
invertibleUnitalMagma to +-invertibleUnitalMagma)

rawRingWithoutOne : RawRingWithoutOne _ _
rawRingWithoutOne = record
{ _≈_ = _≈_
; _+_ = _+_
; _*_ = _*_
; -_ = -_
; 0# = 0#
}

open RawRingWithoutOne rawRingWithoutOne public
using (+-rawGroup; *-rawMagma; rawNearSemiring)

open Semigroup *-semigroup public
using () renaming
( rawMagma to *-rawMagma
; magma to *-magma
)

------------------------------------------------------------------------
-- Bundles with 2 binary operations, 1 unary operation & 2 elements
Expand Down
20 changes: 11 additions & 9 deletions src/Algebra/Bundles/Raw.agda
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,17 @@ record RawRingWithoutOne c ℓ : Set (suc (c ⊔ ℓ)) where
-_ : Op₁ Carrier
0# : Carrier

rawNearSemiring : RawNearSemiring c ℓ
rawNearSemiring = record
{ _≈_ = _≈_
; _+_ = _+_
; _*_ = _*_
; 0# = 0#
}

open RawNearSemiring rawNearSemiring public
using (_≉_; *-rawMagma; +-rawMagma; +-rawMonoid)

+-rawGroup : RawGroup c ℓ
+-rawGroup = record
{ _≈_ = _≈_
Expand All @@ -182,15 +193,6 @@ record RawRingWithoutOne c ℓ : Set (suc (c ⊔ ℓ)) where
; _⁻¹ = -_
}

open RawGroup +-rawGroup public
using (_≉_) renaming (rawMagma to +-rawMagma; rawMonoid to +-rawMonoid)

*-rawMagma : RawMagma c ℓ
*-rawMagma = record
{ _≈_ = _≈_
; _∙_ = _*_
}

------------------------------------------------------------------------
-- Raw bundles with 2 binary operations, 1 unary operation & 2 elements
------------------------------------------------------------------------
Expand Down
Loading