@@ -464,6 +464,149 @@ module RingMorphisms (R₁ : RawRing a ℓ₁) (R₂ : RawRing b ℓ₂) where
464
464
using ()
465
465
renaming (isMagmaIsomorphism to *-isMagmaIsomorphisn)
466
466
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
+
467
610
------------------------------------------------------------------------
468
611
-- Re-export contents of modules publicly
469
612
@@ -473,3 +616,5 @@ open GroupMorphisms public
473
616
open NearSemiringMorphisms public
474
617
open SemiringMorphisms public
475
618
open RingMorphisms public
619
+ open QuasigroupMorphisms public
620
+ open LoopMorphisms public
0 commit comments