Skip to content

Commit f46a71f

Browse files
committed
add: `Algebra.Morphism.Construct.On
1 parent fafc400 commit f46a71f

File tree

1 file changed

+106
-0
lines changed
  • src/Algebra/Morphism/Construct

1 file changed

+106
-0
lines changed
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
------------------------------------------------------------------------
2+
-- The Agda standard library
3+
--
4+
-- Construct IsXHomomorphisms from a function which is homomorphic
5+
------------------------------------------------------------------------
6+
7+
{-# OPTIONS --cubical-compatible --safe #-}
8+
9+
module Algebra.Morphism.Construct.On
10+
where
11+
12+
open import Algebra.Bundles.Raw
13+
open import Algebra.Core using (Op₁; Op₂)
14+
import Algebra.Morphism.Definitions as MorphismDefinitions
15+
--using (Homomorphic₁; Homomorphic₂)
16+
open import Algebra.Morphism.Structures
17+
--using (IsMagmaHomomorphism; IsMagmaMonomorphism)
18+
open import Level using (Level)
19+
import Relation.Binary.Morphism.Construct.On as On
20+
using (_≈_; module ι)
21+
22+
private
23+
variable
24+
a b ℓ : Level
25+
A : Set a
26+
_∙_ : Op₂ A
27+
ε : A
28+
_⁻¹ : Op₁ A
29+
30+
------------------------------------------------------------------------
31+
-- Definitions
32+
33+
module Magma
34+
(rawMagma : RawMagma b ℓ) (let module B = RawMagma rawMagma)
35+
(open MorphismDefinitions A _ B._≈_) (f : A B.Carrier)
36+
(∙-homo : Homomorphic₂ f _∙_ B._∙_)
37+
where
38+
39+
open On B._≈_ f using (_≈_; module ι)
40+
41+
private
42+
rawMagmaOn : RawMagma _ _
43+
rawMagmaOn = record { _≈_ = _≈_ ; _∙_ = _∙_ }
44+
45+
isMagmaHomomorphism : IsMagmaHomomorphism rawMagmaOn rawMagma f
46+
isMagmaHomomorphism = record
47+
{ isRelHomomorphism = ι.isHomomorphism
48+
; homo = ∙-homo
49+
}
50+
51+
isMagmaMonomorphism : IsMagmaMonomorphism rawMagmaOn rawMagma f
52+
isMagmaMonomorphism = record
53+
{ isMagmaHomomorphism = isMagmaHomomorphism
54+
; injective = ι.injective
55+
}
56+
57+
module Monoid
58+
(rawMonoid : RawMonoid b ℓ) (let module B = RawMonoid rawMonoid)
59+
(open MorphismDefinitions A _ B._≈_) (f : A B.Carrier)
60+
(∙-homo : Homomorphic₂ f _∙_ B._∙_) (ε-homo : Homomorphic₀ f ε B.ε)
61+
where
62+
63+
open On B._≈_ f using (_≈_; module ι)
64+
65+
private
66+
rawMonoidOn : RawMonoid _ _
67+
rawMonoidOn = record { _≈_ = _≈_ ; _∙_ = _∙_ ; ε = ε }
68+
69+
isMonoidHomomorphism : IsMonoidHomomorphism rawMonoidOn rawMonoid f
70+
isMonoidHomomorphism = record
71+
{ isMagmaHomomorphism = Magma.isMagmaHomomorphism B.rawMagma f ∙-homo
72+
; ε-homo = ε-homo
73+
}
74+
75+
isMonoidMonomorphism : IsMonoidMonomorphism rawMonoidOn rawMonoid f
76+
isMonoidMonomorphism = record
77+
{ isMonoidHomomorphism = isMonoidHomomorphism
78+
; injective = ι.injective
79+
}
80+
81+
module Group
82+
(rawGroup : RawGroup b ℓ) (let module B = RawGroup rawGroup)
83+
(open MorphismDefinitions A _ B._≈_) (f : A B.Carrier)
84+
(∙-homo : Homomorphic₂ f _∙_ B._∙_) (ε-homo : Homomorphic₀ f ε B.ε)
85+
(⁻¹-homo : Homomorphic₁ f _⁻¹ B._⁻¹)
86+
where
87+
88+
open On B._≈_ f using (_≈_; module ι)
89+
90+
private
91+
rawGroupOn : RawGroup _ _
92+
rawGroupOn = record { _≈_ = _≈_ ; _∙_ = _∙_ ; ε = ε; _⁻¹ = _⁻¹ }
93+
94+
isGroupHomomorphism : IsGroupHomomorphism rawGroupOn rawGroup f
95+
isGroupHomomorphism = record
96+
{ isMonoidHomomorphism = Monoid.isMonoidHomomorphism B.rawMonoid f ∙-homo ε-homo
97+
; ⁻¹-homo = ⁻¹-homo
98+
}
99+
100+
isGroupMonomorphism : IsGroupMonomorphism rawGroupOn rawGroup f
101+
isGroupMonomorphism = record
102+
{ isGroupHomomorphism = isGroupHomomorphism
103+
; injective = ι.injective
104+
}
105+
106+
{- etc. -}

0 commit comments

Comments
 (0)