Skip to content

Commit b50f1d1

Browse files
committed
add: Center defines a NormalSubgroup
1 parent 7ad2b22 commit b50f1d1

File tree

1 file changed

+50
-30
lines changed

1 file changed

+50
-30
lines changed

src/Algebra/Construct/Centre/Group.agda

Lines changed: 50 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,26 @@
66

77
{-# OPTIONS --safe --cubical-compatible #-}
88

9-
open import Algebra.Bundles using (Group; RawGroup)
9+
open import Algebra.Bundles using (AbelianGroup; Group; RawGroup)
1010

1111
module Algebra.Construct.Centre.Group {c ℓ} (G : Group c ℓ) where
1212

1313
open import Algebra.Core using (Op₁; Op₂)
14-
open import Function.Base using (id; _on_)
14+
open import Algebra.Definitions using (Commutative)
15+
open import Function.Base using (id; const; _$_; _on_)
1516
open import Level using (_⊔_)
1617
open import Relation.Unary using (Pred)
1718
open import Relation.Binary.Core using (Rel)
1819
import Relation.Binary.Reasoning.Setoid as ≈-Reasoning
1920

2021
open import Algebra.Construct.Sub.Group G using (Subgroup)
22+
open import Algebra.Construct.Sub.Group.Normal G using (IsNormal; NormalSubgroup)
2123
open import Algebra.Properties.Group G using (∙-cancelʳ)
2224

2325
private
2426
module G = Group G
2527

28+
2629
CommutesWith : Pred G.Carrier _
2730
CommutesWith g = k g G.∙ k G.≈ k G.∙ g
2831

@@ -34,7 +37,7 @@ private
3437
commuter : G.Carrier
3538
commutes : CommutesWith commuter
3639

37-
open Carrier using (commuter; commutes)
40+
open Carrier
3841

3942
_≈_ : Rel Carrier _
4043
_≈_ = G._≈_ on commuter
@@ -44,9 +47,9 @@ private
4447
{ commuter = commuter g G.∙ commuter h
4548
; commutes = λ k begin
4649
(commuter g G.∙ commuter h) G.∙ k ≈⟨ G.assoc _ _ _ ⟩
47-
commuter g G.∙ (commuter h G.∙ k) ≈⟨ G.∙-congˡ (commutes h k)
50+
commuter g G.∙ (commuter h G.∙ k) ≈⟨ G.∙-congˡ $ commutes h k ⟩
4851
commuter g G.∙ (k G.∙ commuter h) ≈⟨ G.assoc _ _ _ ⟨
49-
commuter g G.∙ k G.∙ commuter h ≈⟨ G.∙-congʳ (commutes g k)
52+
commuter g G.∙ k G.∙ commuter h ≈⟨ G.∙-congʳ $ commutes g k ⟩
5053
k G.∙ commuter g G.∙ commuter h ≈⟨ G.assoc _ _ _ ⟩
5154
k G.∙ (commuter g G.∙ commuter h) ∎
5255
}
@@ -60,42 +63,59 @@ private
6063
_⁻¹ : Op₁ Carrier
6164
g ⁻¹ = record
6265
{ commuter = commuter g G.⁻¹
63-
; commutes = λ k ∙-cancelʳ (commuter g) _ _ (begin
66+
; commutes = λ k ∙-cancelʳ (commuter g) _ _ $ begin
6467
(commuter g G.⁻¹ G.∙ k) G.∙ (commuter g) ≈⟨ G.assoc _ _ _ ⟩
65-
commuter g G.⁻¹ G.∙ (k G.∙ commuter g) ≈⟨ G.∙-congˡ (commutes g k)
68+
commuter g G.⁻¹ G.∙ (k G.∙ commuter g) ≈⟨ G.∙-congˡ $ commutes g k ⟨
6669
commuter g G.⁻¹ G.∙ (commuter g G.∙ k) ≈⟨ G.assoc _ _ _ ⟨
67-
(commuter g G.⁻¹ G.∙ commuter g) G.∙ k ≈⟨ G.∙-congʳ (G.inverseˡ _)
70+
(commuter g G.⁻¹ G.∙ commuter g) G.∙ k ≈⟨ G.∙-congʳ $ G.inverseˡ _ ⟩
6871
G.ε G.∙ k ≈⟨ commutes ε k ⟩
69-
k G.∙ G.ε ≈⟨ G.∙-congˡ (G.inverseˡ _)
72+
k G.∙ G.ε ≈⟨ G.∙-congˡ $ G.inverseˡ _ ⟨
7073
k G.∙ (commuter g G.⁻¹ G.∙ commuter g) ≈⟨ G.assoc _ _ _ ⟨
71-
(k G.∙ commuter g G.⁻¹) G.∙ (commuter g) ∎)
74+
(k G.∙ commuter g G.⁻¹) G.∙ (commuter g) ∎
7275
}
7376

77+
∙-comm : Commutative _≈_ _∙_
78+
∙-comm g h = commutes g $ commuter h
79+
80+
81+
open Carrier public using (commuter; commutes)
7482

75-
centre : Subgroup _ _
83+
centre : NormalSubgroup _ _
7684
centre = record
77-
{ domain = record
78-
{ _≈_ = _≈_
79-
; _∙_ = _∙_
80-
; ε = ε
81-
; _⁻¹ = _⁻¹
82-
}
83-
; ι = commuter
84-
; ι-monomorphism = record
85-
{ isGroupHomomorphism = record
86-
{ isMonoidHomomorphism = record
87-
{ isMagmaHomomorphism = record
88-
{ isRelHomomorphism = record { cong = id }
89-
; homo = λ _ _ G.refl
90-
}
91-
; ε-homo = G.refl
85+
{ subgroup = record
86+
{ domain = record
87+
{ _≈_ = _≈_
88+
; _∙_ = _∙_
89+
; ε = ε
90+
; _⁻¹ = _⁻¹
91+
}
92+
; ι = commuter
93+
; ι-monomorphism = record
94+
{ isGroupHomomorphism = record
95+
{ isMonoidHomomorphism = record
96+
{ isMagmaHomomorphism = record
97+
{ isRelHomomorphism = record { cong = id }
98+
; homo = λ _ _ G.refl
99+
}
100+
; ε-homo = G.refl
101+
}
102+
; ⁻¹-homo = λ _ G.refl
92103
}
93-
; ⁻¹-homo = λ _ G.refl
104+
; injective = id
94105
}
95-
; injective = id
96106
}
107+
; isNormal = record { conjugate = const ; normal = commutes }
97108
}
98109

99-
open Subgroup centre public
110+
open NormalSubgroup centre public
111+
112+
abelianGroup : AbelianGroup _ _
113+
abelianGroup = record
114+
{
115+
isAbelianGroup = record { isGroup = isGroup ; comm = ∙-comm }
116+
}
117+
118+
-- Public export
119+
120+
Z[_] = centre
100121

101-
Z[_] = group

0 commit comments

Comments
 (0)