Skip to content

Commit 1a91258

Browse files
Add Quasigroup and Loop morphisms (#1647)
1 parent e84b83c commit 1a91258

File tree

3 files changed

+162
-7
lines changed

3 files changed

+162
-7
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,16 @@ Other minor changes
652652
```
653653
and their corresponding algebraic substructures.
654654

655+
* Added new records to `Algebra.Morphism.Structures`:
656+
```agda
657+
record IsQuasigroupHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
658+
record IsQuasigroupMonomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
659+
record IsQuasigroupIsomorphism (⟦_⟧ : A → B) : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂)
660+
record IsLoopHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
661+
record IsLoopMonomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
662+
record IsLoopIsomorphism (⟦_⟧ : A → B) : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂)
663+
```
664+
655665
* Added new functions in `Data.Fin.Base`:
656666
```
657667
finToFun : Fin (n ^ m) → (Fin m → Fin n)

src/Algebra/Bundles.agda

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -886,7 +886,7 @@ record CommutativeRing c ℓ : Set (suc (c ⊔ ℓ)) where
886886
-- Bundles with 3 binary operations
887887
------------------------------------------------------------------------
888888

889-
record RawQuasiGroup c ℓ : Set (suc (c ⊔ ℓ)) where
889+
record RawQuasigroup c ℓ : Set (suc (c ⊔ ℓ)) where
890890
infixl 7 _∙_
891891
infixl 7 _\\_
892892
infixl 7 _//_
@@ -934,15 +934,15 @@ record Quasigroup c ℓ : Set (suc (c ⊔ ℓ)) where
934934

935935
open IsQuasigroup isQuasigroup public
936936

937-
rawQuasiGroup : RawQuasiGroup c ℓ
938-
rawQuasiGroup = record
937+
rawQuasigroup : RawQuasigroup c ℓ
938+
rawQuasigroup = record
939939
{ _≈_ = _≈_
940940
; _∙_ = _∙_
941941
; _\\_ = _\\_
942942
; _//_ = _//_
943943
}
944944

945-
open RawQuasiGroup rawQuasiGroup public
945+
open RawQuasigroup rawQuasigroup public
946946
using (_≈_; //-rawMagma; \\-rawMagma; ∙-rawMagma)
947947

948948
setoid : Setoid _ _
@@ -964,15 +964,15 @@ record RawLoop c ℓ : Set (suc (c ⊔ ℓ)) where
964964
_//_ : Op₂ Carrier
965965
ε : Carrier
966966

967-
rawQuasiGroup : RawQuasiGroup c ℓ
968-
rawQuasiGroup = record
967+
rawQuasigroup : RawQuasigroup c ℓ
968+
rawQuasigroup = record
969969
{ _≈_ = _≈_
970970
; _∙_ = _∙_
971971
; _\\_ = _\\_
972972
; _//_ = _//_
973973
}
974974

975-
open RawQuasiGroup rawQuasiGroup public
975+
open RawQuasigroup rawQuasigroup public
976976
using (_≉_ ; ∙-rawMagma; \\-rawMagma; //-rawMagma)
977977

978978
record Loop c ℓ : Set (suc (c ⊔ ℓ)) where

src/Algebra/Morphism/Structures.agda

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,149 @@ module RingMorphisms (R₁ : RawRing a ℓ₁) (R₂ : RawRing b ℓ₂) where
464464
using ()
465465
renaming (isMagmaIsomorphism to *-isMagmaIsomorphisn)
466466

467+
------------------------------------------------------------------------
468+
-- Morphisms over quasigroup-like structures
469+
------------------------------------------------------------------------
470+
module QuasigroupMorphisms (Q₁ : RawQuasigroup a ℓ₁) (Q₂ : RawQuasigroup b ℓ₂) where
471+
472+
open RawQuasigroup Q₁ renaming (Carrier to A; ∙-rawMagma to ∙-rawMagma₁;
473+
\\-rawMagma to \\-rawMagma₁; //-rawMagma to //-rawMagma₁;
474+
_≈_ to _≈₁_; _∙_ to _∙₁_; _\\_ to _\\₁_; _//_ to _//₁_)
475+
open RawQuasigroup Q₂ renaming (Carrier to B; ∙-rawMagma to ∙-rawMagma₂;
476+
\\-rawMagma to \\-rawMagma₂; //-rawMagma to //-rawMagma₂;
477+
_≈_ to _≈₂_; _∙_ to _∙₂_; _\\_ to _\\₂_; _//_ to _//₂_)
478+
479+
module = MagmaMorphisms ∙-rawMagma₁ ∙-rawMagma₂
480+
module \\ = MagmaMorphisms \\-rawMagma₁ \\-rawMagma₂
481+
module // = MagmaMorphisms //-rawMagma₁ //-rawMagma₂
482+
483+
open MorphismDefinitions A B _≈₂_
484+
open FunctionDefinitions _≈₁_ _≈₂_
485+
486+
record IsQuasigroupHomomorphism (⟦_⟧ : A B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂) where
487+
field
488+
isRelHomomorphism : IsRelHomomorphism _≈₁_ _≈₂_ ⟦_⟧
489+
∙-homo : Homomorphic₂ ⟦_⟧ _∙₁_ _∙₂_
490+
\\-homo : Homomorphic₂ ⟦_⟧ _\\₁_ _\\₂_
491+
//-homo : Homomorphic₂ ⟦_⟧ _//₁_ _//₂_
492+
493+
open IsRelHomomorphism isRelHomomorphism public
494+
renaming (cong to ⟦⟧-cong)
495+
496+
∙-isMagmaHomomorphism : ∙.IsMagmaHomomorphism ⟦_⟧
497+
∙-isMagmaHomomorphism = record
498+
{ isRelHomomorphism = isRelHomomorphism
499+
; homo = ∙-homo
500+
}
501+
502+
\\-isMagmaHomomorphism : \\.IsMagmaHomomorphism ⟦_⟧
503+
\\-isMagmaHomomorphism = record
504+
{ isRelHomomorphism = isRelHomomorphism
505+
; homo = \\-homo
506+
}
507+
508+
//-isMagmaHomomorphism : //.IsMagmaHomomorphism ⟦_⟧
509+
//-isMagmaHomomorphism = record
510+
{ isRelHomomorphism = isRelHomomorphism
511+
; homo = //-homo
512+
}
513+
514+
record IsQuasigroupMonomorphism (⟦_⟧ : A B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂) where
515+
field
516+
isQuasigroupHomomorphism : IsQuasigroupHomomorphism ⟦_⟧
517+
injective : Injective ⟦_⟧
518+
519+
open IsQuasigroupHomomorphism isQuasigroupHomomorphism public
520+
521+
522+
∙-isMagmaMonomorphism : ∙.IsMagmaMonomorphism ⟦_⟧
523+
∙-isMagmaMonomorphism = record
524+
{ isMagmaHomomorphism = ∙-isMagmaHomomorphism
525+
; injective = injective
526+
}
527+
528+
\\-isMagmaMonomorphism : \\.IsMagmaMonomorphism ⟦_⟧
529+
\\-isMagmaMonomorphism = record
530+
{ isMagmaHomomorphism = \\-isMagmaHomomorphism
531+
; injective = injective
532+
}
533+
534+
//-isMagmaMonomorphism : //.IsMagmaMonomorphism ⟦_⟧
535+
//-isMagmaMonomorphism = record
536+
{ isMagmaHomomorphism = //-isMagmaHomomorphism
537+
; injective = injective
538+
}
539+
540+
open //.IsMagmaMonomorphism //-isMagmaMonomorphism public
541+
using (isRelMonomorphism)
542+
543+
544+
record IsQuasigroupIsomorphism (⟦_⟧ : A B) : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂) where
545+
field
546+
isQuasigroupMonomorphism : IsQuasigroupMonomorphism ⟦_⟧
547+
surjective : Surjective ⟦_⟧
548+
549+
open IsQuasigroupMonomorphism isQuasigroupMonomorphism public
550+
551+
∙-isMagmaIsomorphism : ∙.IsMagmaIsomorphism ⟦_⟧
552+
∙-isMagmaIsomorphism = record
553+
{ isMagmaMonomorphism = ∙-isMagmaMonomorphism
554+
; surjective = surjective
555+
}
556+
557+
\\-isMagmaIsomorphism : \\.IsMagmaIsomorphism ⟦_⟧
558+
\\-isMagmaIsomorphism = record
559+
{ isMagmaMonomorphism = \\-isMagmaMonomorphism
560+
; surjective = surjective
561+
}
562+
563+
//-isMagmaIsomorphism : //.IsMagmaIsomorphism ⟦_⟧
564+
//-isMagmaIsomorphism = record
565+
{ isMagmaMonomorphism = //-isMagmaMonomorphism
566+
; surjective = surjective
567+
}
568+
569+
open //.IsMagmaIsomorphism //-isMagmaIsomorphism public
570+
using (isRelIsomorphism)
571+
572+
------------------------------------------------------------------------
573+
-- Morphisms over loop-like structures
574+
------------------------------------------------------------------------
575+
576+
module LoopMorphisms (L₁ : RawLoop a ℓ₁) (L₂ : RawLoop b ℓ₂) where
577+
578+
open RawLoop L₁ renaming (Carrier to A; ∙-rawMagma to ∙-rawMagma₁;
579+
\\-rawMagma to \\-rawMagma₁; //-rawMagma to //-rawMagma₁;
580+
_≈_ to _≈₁_; _∙_ to _∙₁_; _\\_ to _\\₁_; _//_ to _//₁_; ε to ε₁)
581+
open RawLoop L₂ renaming (Carrier to B; ∙-rawMagma to ∙-rawMagma₂;
582+
\\-rawMagma to \\-rawMagma₂; //-rawMagma to //-rawMagma₂;
583+
_≈_ to _≈₂_; _∙_ to _∙₂_; _\\_ to _\\₂_; _//_ to _//₂_ ; ε to ε₂)
584+
open MorphismDefinitions A B _≈₂_
585+
open FunctionDefinitions _≈₁_ _≈₂_
586+
587+
open QuasigroupMorphisms (RawLoop.rawQuasigroup L₁) (RawLoop.rawQuasigroup L₂)
588+
589+
record IsLoopHomomorphism (⟦_⟧ : A B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂) where
590+
field
591+
isQuasigroupHomomorphism : IsQuasigroupHomomorphism ⟦_⟧
592+
ε-homo : Homomorphic₀ ⟦_⟧ ε₁ ε₂
593+
594+
open IsQuasigroupHomomorphism isQuasigroupHomomorphism public
595+
596+
record IsLoopMonomorphism (⟦_⟧ : A B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂) where
597+
field
598+
isLoopHomomorphism : IsLoopHomomorphism ⟦_⟧
599+
injective : Injective ⟦_⟧
600+
601+
open IsLoopHomomorphism isLoopHomomorphism public
602+
603+
record IsLoopIsomorphism (⟦_⟧ : A B) : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂) where
604+
field
605+
isLoopMonomorphism : IsLoopMonomorphism ⟦_⟧
606+
surjective : Surjective ⟦_⟧
607+
608+
open IsLoopMonomorphism isLoopMonomorphism public
609+
467610
------------------------------------------------------------------------
468611
-- Re-export contents of modules publicly
469612

@@ -473,3 +616,5 @@ open GroupMorphisms public
473616
open NearSemiringMorphisms public
474617
open SemiringMorphisms public
475618
open RingMorphisms public
619+
open QuasigroupMorphisms public
620+
open LoopMorphisms public

0 commit comments

Comments
 (0)