@@ -19,8 +19,7 @@ open import Data.Product as Product
19
19
using (_,_)
20
20
open import Level using (Level)
21
21
open import Relation.Binary.Definitions using (Reflexive)
22
- open import Relation.Binary.Morphism.Construct.Product
23
- using (proj₁; proj₂; <_,_>)
22
+ import Relation.Binary.Morphism.Construct.Product as RP
24
23
25
24
private
26
25
variable
@@ -40,15 +39,15 @@ module Magma (M : RawMagma a ℓ₁) (N : RawMagma b ℓ₂) where
40
39
41
40
isMagmaHomomorphism : IsMagmaHomomorphism (rawMagma M N) M Product.proj₁
42
41
isMagmaHomomorphism = record
43
- { isRelHomomorphism = proj₁
42
+ { isRelHomomorphism = RP. proj₁
44
43
; homo = λ _ _ → refl
45
44
}
46
45
47
46
module Proj₂ (refl : Reflexive N._≈_) where
48
47
49
48
isMagmaHomomorphism : IsMagmaHomomorphism (rawMagma M N) N Product.proj₂
50
49
isMagmaHomomorphism = record
51
- { isRelHomomorphism = proj₂
50
+ { isRelHomomorphism = RP. proj₂
52
51
; homo = λ _ _ → refl
53
52
}
54
53
@@ -59,13 +58,34 @@ module Magma (M : RawMagma a ℓ₁) (N : RawMagma b ℓ₂) where
59
58
IsMagmaHomomorphism P N h →
60
59
IsMagmaHomomorphism P (rawMagma M N) (Product.< f , h >)
61
60
isMagmaHomomorphism F H = record
62
- { isRelHomomorphism = < F.isRelHomomorphism , H.isRelHomomorphism >
61
+ { isRelHomomorphism = RP. < F.isRelHomomorphism , H.isRelHomomorphism >
63
62
; homo = λ x y → F.homo x y , H.homo x y
64
63
}
65
64
where
66
65
module F = IsMagmaHomomorphism F
67
66
module H = IsMagmaHomomorphism H
68
67
68
+ -- Package for export
69
+ module Magma-Export {M : RawMagma a ℓ₁} {N : RawMagma b ℓ₂} where
70
+ open Magma
71
+
72
+ private
73
+ module M = RawMagma M
74
+ module N = RawMagma N
75
+
76
+ module _ {refl : Reflexive M._≈_} where
77
+ proj₁ = Proj₁.isMagmaHomomorphism M M refl
78
+
79
+ module _ {refl : Reflexive N._≈_} where
80
+ proj₂ = Proj₂.isMagmaHomomorphism M N refl
81
+
82
+ module _ {P : RawMagma c ℓ₃} where
83
+
84
+ private
85
+ module P = RawMagma P
86
+
87
+ <_,_> = Pair.isMagmaHomomorphism M N P
88
+
69
89
------------------------------------------------------------------------
70
90
-- Monoids
71
91
@@ -107,3 +127,24 @@ module Monoid (M : RawMonoid a ℓ₁) (N : RawMonoid b ℓ₂) where
107
127
where
108
128
module F = IsMonoidHomomorphism F
109
129
module H = IsMonoidHomomorphism H
130
+
131
+ -- Package for export
132
+ module Monoid-Export {M : RawMonoid a ℓ₁} {N : RawMonoid b ℓ₂} where
133
+ open Monoid
134
+
135
+ private
136
+ module M = RawMonoid M
137
+ module N = RawMonoid N
138
+
139
+ module _ {refl : Reflexive M._≈_} where
140
+ proj₁ = Proj₁.isMonoidHomomorphism M M refl
141
+
142
+ module _ {refl : Reflexive N._≈_} where
143
+ proj₂ = Proj₂.isMonoidHomomorphism M N refl
144
+
145
+ module _ {P : RawMonoid c ℓ₃} where
146
+
147
+ private
148
+ module P = RawMonoid P
149
+
150
+ <_,_> = Pair.isMonoidHomomorphism M N P
0 commit comments