summaryrefslogtreecommitdiff
path: root/src/Helium/Algebra/Ordered/StrictTotal/Morphism/Structures.agda
diff options
context:
space:
mode:
authorGreg Brown <greg.brown@cl.cam.ac.uk>2022-04-02 11:41:51 +0100
committerGreg Brown <greg.brown@cl.cam.ac.uk>2022-04-02 11:59:21 +0100
commit2167866c53aa7f9cbb52e776bfb64f53acf3fa2c (patch)
treed9422bd08ee318b3fad90d03210f6a02a4c30783 /src/Helium/Algebra/Ordered/StrictTotal/Morphism/Structures.agda
parent23e8afe152a84551491594aea133488523525410 (diff)
Add more properties for ordered structures.
Diffstat (limited to 'src/Helium/Algebra/Ordered/StrictTotal/Morphism/Structures.agda')
-rw-r--r--src/Helium/Algebra/Ordered/StrictTotal/Morphism/Structures.agda98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/Helium/Algebra/Ordered/StrictTotal/Morphism/Structures.agda b/src/Helium/Algebra/Ordered/StrictTotal/Morphism/Structures.agda
new file mode 100644
index 0000000..dbce970
--- /dev/null
+++ b/src/Helium/Algebra/Ordered/StrictTotal/Morphism/Structures.agda
@@ -0,0 +1,98 @@
+------------------------------------------------------------------------
+-- Agda Helium
+--
+-- Morphisms for ordered algebraic structures.
+------------------------------------------------------------------------
+
+{-# OPTIONS --safe --without-K #-}
+
+module Helium.Algebra.Ordered.StrictTotal.Morphism.Structures where
+
+import Algebra.Morphism.Definitions as MorphismDefinitions
+open import Helium.Algebra.Ordered.StrictTotal.Bundles
+open import Level using (Level; _⊔_)
+open import Relation.Binary.Morphism.Structures
+
+private
+ variable
+ a b ℓ₁ ℓ₂ ℓ₃ ℓ₄ : Level
+
+module MagmaMorphisms (M₁ : RawMagma a ℓ₁ ℓ₂) (M₂ : RawMagma b ℓ₃ ℓ₄) where
+ private
+ module M₁ = RawMagma M₁
+ module M₂ = RawMagma M₂
+
+ open M₁ using () renaming (Carrier to A)
+ open M₂ using () renaming (Carrier to B)
+ open MorphismDefinitions A B M₂._≈_
+
+ record IsMagmaHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂ ⊔ ℓ₃ ⊔ ℓ₄) where
+ field
+ isOrderHomomorphism : IsOrderHomomorphism M₁._≈_ M₂._≈_ M₁._<_ M₂._<_ ⟦_⟧
+ homo : Homomorphic₂ ⟦_⟧ M₁._∙_ M₂._∙_
+
+ open IsOrderHomomorphism isOrderHomomorphism public
+
+module MonoidMorphisms (M₁ : RawMonoid a ℓ₁ ℓ₂) (M₂ : RawMonoid b ℓ₃ ℓ₄) where
+ private
+ module M₁ = RawMonoid M₁
+ module M₂ = RawMonoid M₂
+
+ open M₁ using () renaming (Carrier to A)
+ open M₂ using () renaming (Carrier to B)
+ open MorphismDefinitions A B M₂._≈_
+ open MagmaMorphisms M₁.rawMagma M₂.rawMagma
+
+ record IsMonoidHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂ ⊔ ℓ₃ ⊔ ℓ₄) where
+ field
+ isMagmaHomomorphism : IsMagmaHomomorphism ⟦_⟧
+ ε-homo : Homomorphic₀ ⟦_⟧ M₁.ε M₂.ε
+
+ open IsMagmaHomomorphism isMagmaHomomorphism public
+
+module GroupMorphisms (G₁ : RawGroup a ℓ₁ ℓ₂) (G₂ : RawGroup b ℓ₃ ℓ₄) where
+ private
+ module G₁ = RawGroup G₁
+ module G₂ = RawGroup G₂
+
+ open G₁ using () renaming (Carrier to A)
+ open G₂ using () renaming (Carrier to B)
+ open MorphismDefinitions A B G₂._≈_
+ open MonoidMorphisms G₁.rawMonoid G₂.rawMonoid
+
+ record IsGroupHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂ ⊔ ℓ₃ ⊔ ℓ₄) where
+ field
+ isMonoidHomomorphism : IsMonoidHomomorphism ⟦_⟧
+ ⁻¹-homo : Homomorphic₁ ⟦_⟧ G₁._⁻¹ G₂._⁻¹
+
+ open IsMonoidHomomorphism isMonoidHomomorphism public
+
+module RingMorphisms (R₁ : RawRing a ℓ₁ ℓ₂) (R₂ : RawRing b ℓ₃ ℓ₄) where
+ private
+ module R₁ = RawRing R₁
+ module R₂ = RawRing R₂
+
+ open R₁ using () renaming (Carrier to A)
+ open R₂ using () renaming (Carrier to B)
+ open MorphismDefinitions A B R₂._≈_
+ open GroupMorphisms R₁.+-rawGroup R₂.+-rawGroup
+
+ record IsRingHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂ ⊔ ℓ₃ ⊔ ℓ₄) where
+ field
+ +-isGroupHomomorphism : IsGroupHomomorphism ⟦_⟧
+ *-homo : Homomorphic₂ ⟦_⟧ R₁._*_ R₂._*_
+ 1#-homo : Homomorphic₀ ⟦_⟧ R₁.1# R₂.1#
+
+ open IsGroupHomomorphism +-isGroupHomomorphism public
+ renaming
+ ( homo to +-homo
+ ; ε-homo to 0#-homo
+ ; ⁻¹-homo to -‿homo
+ ; isMagmaHomomorphism to +-isMagmaHomomorphism
+ ; isMonoidHomomorphism to +-isMonoidHomomorphism
+ )
+
+open MagmaMorphisms public
+open MonoidMorphisms public
+open GroupMorphisms public
+open RingMorphisms public