annotate src/NormalSubGroup.agda @ 302:3812936d52c8

remove lift
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 07 Sep 2023 11:45:11 +0900
parents
children 7ef312aa0235
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
302
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 {-# OPTIONS --allow-unsolved-metas #-}
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 open import Level hiding ( suc ; zero )
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 module NormalSubgroup where
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import Algebra
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import Algebra.Structures
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import Algebra.Definitions
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Data.Product
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 open import Relation.Binary.PropositionalEquality
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 open import Algebra.Morphism.Structures
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 open import Data.Empty
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 open import Relation.Nullary
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 open GroupMorphisms
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 GR : {c l : Level } → Group c l → RawGroup c l
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 GR G = record {
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 Carrier = Carrier G
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 ; _≈_ = _≈_ G
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 ; _∙_ = _∙_ G
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 ; ε = ε G
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 ; _⁻¹ = _⁻¹ G
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 } where open Group
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 record GAxiom {c l : Level } (G : Group c l) : Set ( c Level.⊔ l ) where
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 open Group G
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 field
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 ∙-cong : {x y u v : Carrier } → x ≈ y → u ≈ v → x ∙ u ≈ y ∙ v
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 assoc : (x y z : Carrier ) → x ∙ y ∙ z ≈ x ∙ ( y ∙ z )
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 identity : ((y : Carrier) → ε ∙ y ≈ y ) × ((y : Carrier) → y ∙ ε ≈ y )
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 inverse : ((y : Carrier) → y ⁻¹ ∙ y ≈ ε ) × ((y : Carrier) → y ∙ y ⁻¹ ≈ ε )
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 ⁻¹-cong : {x y : Carrier } → x ≈ y → x ⁻¹ ≈ y ⁻¹
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 GA : {c l : Level } → (G : Group c l) → GAxiom G
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 GA G = record {
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 ∙-cong = IsMagma.∙-cong ( IsSemigroup.isMagma ( IsMonoid.isSemigroup ( IsGroup.isMonoid isGroup)))
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 ; assoc = IsSemigroup.assoc ( IsMonoid.isSemigroup ( IsGroup.isMonoid isGroup))
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 ; identity = IsMonoid.identity ( IsGroup.isMonoid isGroup)
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 ; inverse = IsGroup.inverse isGroup
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 ; ⁻¹-cong = IsGroup.⁻¹-cong isGroup
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 } where open Group G
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 open import Relation.Binary.Structures
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 Eq : {c l : Level } → (G : Group c l) → IsEquivalence _
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 Eq G = IsMagma.isEquivalence (IsSemigroup.isMagma (IsMonoid.isSemigroup
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 (IsGroup.isMonoid (Group.isGroup G ))) )
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 _<_∙_> : {c d : Level} (m : Group c d ) → Group.Carrier m → Group.Carrier m → Group.Carrier m
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 m < x ∙ y > = Group._∙_ m x y
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 _<_≈_> : {c d : Level} (m : Group c d ) → (f g : Group.Carrier m ) → Set d
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 m < x ≈ y > = Group._≈_ m x y
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 infixr 9 _<_∙_>
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 -- assuming Homomorphism is too strong
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 --
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 record NormalSubGroup {l c d : Level} (A : Group c d ) : Set (Level.suc (l Level.⊔ (c Level.⊔ d))) where
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 open Group A
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 field
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 P : Carrier → Set l
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 Pε : P ε
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 P⁻¹ : (a : Carrier ) → P a → P (a ⁻¹)
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 P≈ : {a b : Carrier } → a ≈ b → P a → P b
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 P∙ : {a b : Carrier } → P a → P b → P ( a ∙ b )
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 -- gN ≈ Ng
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 Pcomm : {a b : Carrier } → P a → P ( b ∙ ( a ∙ b ⁻¹ ) )
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 import Relation.Binary.Reasoning.Setoid as EqReasoning
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 record Nelm {c d : Level} {A : Group c d } (n : NormalSubGroup {d} A) : Set (Level.suc c ⊔ d) where
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 open Group A
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 open NormalSubGroup n
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 field
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 elm : Carrier
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 Pelm : P elm
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 NGroup : {c d : Level} {A : Group c d } (n : NormalSubGroup A) → Group (Level.suc c ⊔ d) d
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 NGroup {_} {_} {A} n = record {
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 Carrier = Nelm n
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 ; _≈_ = λ x y → elm x ≈ elm y
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 ; _∙_ = λ x y → record { elm = elm x ∙ elm y ; Pelm = P∙ (Pelm x) (Pelm y) }
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 ; ε = record { elm = ε ; Pelm = Pε }
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 ; _⁻¹ = λ x → record { elm = (elm x) ⁻¹ ; Pelm = P⁻¹ (elm x) (Pelm x) }
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 ; isGroup = record { isMonoid = record { isSemigroup = record { isMagma = record {
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 isEquivalence = record { refl = IsEquivalence.refl (IsGroup.isEquivalence ga)
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 ; sym = IsEquivalence.sym (IsGroup.isEquivalence ga)
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 ; trans = IsEquivalence.trans (IsGroup.isEquivalence ga) }
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 ; ∙-cong = IsGroup.∙-cong ga }
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 ; assoc = λ a b c → IsGroup.assoc ga (elm a) (elm b) (elm c) }
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 ; identity = ( (λ q → proj₁ (IsGroup.identity ga) (elm q)) , (λ q → proj₂ (IsGroup.identity ga) (elm q)) ) }
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 ; inverse = ( (λ q → proj₁ (IsGroup.inverse ga) (elm q)) , (λ q → proj₂ (IsGroup.inverse ga) (elm q)) )
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 ; ⁻¹-cong = IsGroup.⁻¹-cong ga }
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 } where
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 open Group A
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 open NormalSubGroup n
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 open Nelm
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 ga = Group.isGroup A
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100
3812936d52c8 remove lift
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101