Mercurial > hg > Members > kono > Proof > galois
annotate src/FundamentalHomorphism.agda @ 287:1874c573682f
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 29 Jan 2023 16:50:56 +0900 |
parents | f257ab4afa51 |
children | d08663bae245 |
rev | line source |
---|---|
257
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 -- fundamental homomorphism theorem |
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 -- |
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 |
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 open import Level hiding ( suc ; zero ) |
284 | 5 module FundamentalHomorphism (c : Level) where |
257
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 |
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 open import Algebra |
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 open import Algebra.Structures |
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 open import Algebra.Definitions |
271 | 10 open import Algebra.Core |
11 open import Algebra.Bundles | |
12 | |
257
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 open import Data.Product |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
14 open import Relation.Binary.PropositionalEquality |
271 | 15 open import Gutil0 |
279 | 16 import Gutil |
271 | 17 import Function.Definitions as FunctionDefinitions |
18 | |
19 import Algebra.Morphism.Definitions as MorphismDefinitions | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
20 open import Algebra.Morphism.Structures |
257
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 |
269 | 22 open import Tactic.MonoidSolver using (solve; solve-macro) |
23 | |
264 | 24 -- |
25 -- Given two groups G and H and a group homomorphism f : G → H, | |
26 -- let K be a normal subgroup in G and φ the natural surjective homomorphism G → G/K | |
27 -- (where G/K is the quotient group of G by K). | |
28 -- If K is a subset of ker(f) then there exists a unique homomorphism h: G/K → H such that f = h∘φ. | |
29 -- https://en.wikipedia.org/wiki/Fundamental_theorem_on_homomorphisms | |
30 -- | |
31 -- f | |
32 -- G --→ H | |
33 -- | / | |
34 -- φ | / h | |
35 -- ↓ / | |
36 -- G/K | |
37 -- | |
257
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 |
259 | 39 import Relation.Binary.Reasoning.Setoid as EqReasoning |
40 | |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
41 _<_∙_> : (m : Group c c ) → Group.Carrier m → Group.Carrier m → Group.Carrier m |
271 | 42 m < x ∙ y > = Group._∙_ m x y |
43 | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
44 _<_≈_> : (m : Group c c ) → (f g : Group.Carrier m ) → Set c |
277 | 45 m < x ≈ y > = Group._≈_ m x y |
46 | |
271 | 47 infixr 9 _<_∙_> |
259 | 48 |
261 | 49 -- |
50 -- Coset : N : NormalSubGroup → { a ∙ n | G ∋ a , N ∋ n } | |
51 -- | |
257
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 |
271 | 53 open GroupMorphisms |
257
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54 |
285 | 55 -- import Axiom.Extensionality.Propositional |
56 -- postulate f-extensionality : { n m : Level} → Axiom.Extensionality.Propositional.Extensionality n m | |
280 | 57 |
286 | 58 open import Data.Empty |
59 open import Relation.Nullary | |
265 | 60 |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
61 record NormalSubGroup (A : Group c c ) : Set c where |
271 | 62 open Group A |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
63 field |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
64 ⟦_⟧ : Group.Carrier A → Group.Carrier A |
271 | 65 normal : IsGroupHomomorphism (GR A) (GR A) ⟦_⟧ |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
66 comm : {a b : Carrier } → b ∙ ⟦ a ⟧ ≈ ⟦ a ⟧ ∙ b |
286 | 67 -- because of ¬ ¬ Factor |
275 | 68 factor : (a b : Carrier) → Carrier |
69 is-factor : (a b : Carrier) → b ∙ ⟦ factor a b ⟧ ≈ a | |
271 | 70 |
71 -- Set of a ∙ ∃ n ∈ N | |
72 -- | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
73 record an {A : Group c c } (N : NormalSubGroup A ) (n x : Group.Carrier A ) : Set c where |
271 | 74 open Group A |
75 open NormalSubGroup N | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
76 field |
285 | 77 a : Carrier |
271 | 78 aN=x : a ∙ ⟦ n ⟧ ≈ x |
79 | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
80 record aN {A : Group c c } (N : NormalSubGroup A ) : Set c where |
285 | 81 open Group A |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
82 field |
285 | 83 n : Carrier |
84 is-an : (x : Carrier) → an N n x | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
85 |
286 | 86 record Factor (A : Group c c ) (N : NormalSubGroup A) (a b : Group.Carrier A ) : Set c where |
87 open Group A | |
88 open NormalSubGroup N | |
89 open IsGroupHomomorphism normal | |
90 field | |
91 factor : Carrier | |
92 is-factor : b ∙ ⟦ factor ⟧ ≈ a | |
93 | |
94 ¬¬Factor : (A : Group c c ) (N : NormalSubGroup A) → ¬ ¬ ( (a b : Group.Carrier A ) → Factor A N a b ) | |
95 ¬¬Factor A N neg = ⊥-elim ( fa ( λ y → record { n = y ; is-an = λ x → record { a = x ∙ ⟦ y ⟧ ⁻¹ ; aN=x = f03 } } )) where | |
96 open Group A | |
97 open NormalSubGroup N | |
98 open IsGroupHomomorphism normal | |
99 open EqReasoning (Algebra.Group.setoid A) | |
100 open Gutil A | |
101 open aN | |
102 f03 : {x y : Carrier } → x ∙ ⟦ y ⟧ ⁻¹ ∙ ⟦ y ⟧ ≈ x | |
103 f03 {x} {y} = begin | |
104 x ∙ ⟦ y ⟧ ⁻¹ ∙ ⟦ y ⟧ ≈⟨ ? ⟩ | |
105 x ∙ ( ⟦ y ⟧ ⁻¹ ∙ ⟦ y ⟧) ≈⟨ ? ⟩ | |
106 x ∎ | |
107 fa : ¬ ( (x : Carrier) → aN N ) | |
108 fa f = neg ( λ a b → record { factor = n (f ( a ∙ b ⁻¹)) ; is-factor = fa01 a b } ) where | |
109 fa01 : (a b : Carrier ) → b ∙ ⟦ n (f ( a ∙ b ⁻¹)) ⟧ ≈ a | |
110 fa01 a b = begin | |
287 | 111 b ∙ ⟦ n (f ( a ∙ b ⁻¹)) ⟧ ≈⟨ ? ⟩ |
112 b ∙ ( ( b ⁻¹ ∙ ⟦ b ⟧ ) ∙ ( an.a (is-an (f ( a ∙ b ⁻¹) ) (a ∙ ⟦ b ⁻¹ ⟧ ) ) ∙ ⟦ n (f ( a ∙ b ⁻¹)) ⟧)) ≈⟨ cdr ( cdr (f06 ( a ∙ b ⁻¹) (a ∙ ⟦ b ⁻¹ ⟧ ))) ⟩ | |
113 b ∙ ( ( b ⁻¹ ∙ ⟦ b ⟧ ) ∙ (a ∙ ⟦ b ⁻¹ ⟧ )) ≈⟨ ? ⟩ | |
114 ⟦ b ⟧ ∙ ( a ∙ ⟦ b ⁻¹ ⟧ ) ≈⟨ ? ⟩ | |
286 | 115 a ∎ where |
287 | 116 f06 : (x y : Carrier ) → an.a (is-an (f x) y ) ∙ ⟦ n (f x) ⟧ ≈ y |
117 f06 x y = an.aN=x (is-an (f x) y) | |
118 f07 : (y : Carrier ) → an.a (is-an (f ( a ∙ b ⁻¹)) y ) ∙ ⟦ n (f ( a ∙ b ⁻¹)) ⟧ ≈ y | |
119 f07 y = an.aN=x (is-an (f ( a ∙ b ⁻¹)) y) | |
120 f08 : ( b ⁻¹ ∙ ⟦ b ⟧ ) ∙ ( an.a (is-an (f ( a ∙ b ⁻¹) ) (a ∙ ⟦ b ⁻¹ ⟧ ))) ≈ ε | |
121 f08 = ? | |
286 | 122 |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
123 _/_ : (A : Group c c ) (N : NormalSubGroup A ) → Group c c |
271 | 124 _/_ A N = record { |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
125 Carrier = aN N |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
126 ; _≈_ = λ f g → ⟦ n f ⟧ ≈ ⟦ n g ⟧ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
127 ; _∙_ = qadd |
285 | 128 ; ε = qid |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
129 ; _⁻¹ = ? |
271 | 130 ; isGroup = record { isMonoid = record { isSemigroup = record { isMagma = record { |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
131 isEquivalence = record {refl = grefl ; trans = gtrans ; sym = gsym } |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
132 ; ∙-cong = λ {x} {y} {u} {v} x=y u=v → ? } |
271 | 133 ; assoc = ? } |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
134 ; identity = ? , (λ q → ? ) } |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
135 ; inverse = ( (λ x → ? ) , (λ x → ? )) |
271 | 136 ; ⁻¹-cong = λ i=j → ? |
137 } | |
138 } where | |
139 open Group A | |
140 open aN | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
141 open an |
271 | 142 open NormalSubGroup N |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
143 open IsGroupHomomorphism normal |
274 | 144 open EqReasoning (Algebra.Group.setoid A) |
279 | 145 open Gutil A |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
146 qadd : (f g : aN N) → aN N |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
147 qadd f g = record { n = n f ∙ n g ; is-an = λ x → record { a = x ⁻¹ ∙ ( a (is-an f x) ∙ a (is-an g x)) ; aN=x = qadd0 } } where |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
148 qadd0 : {x : Carrier} → x ⁻¹ ∙ (a (is-an f x) ∙ a (is-an g x)) ∙ ⟦ n f ∙ n g ⟧ ≈ x |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
149 qadd0 {x} = begin |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
150 x ⁻¹ ∙ (a (is-an f x) ∙ a (is-an g x)) ∙ ⟦ n f ∙ n g ⟧ ≈⟨ ? ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
151 x ⁻¹ ∙ (a (is-an f x) ∙ a (is-an g x) ∙ ⟦ n f ∙ n g ⟧) ≈⟨ ? ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
152 x ⁻¹ ∙ (a (is-an f x) ∙ a (is-an g x) ∙ ( ⟦ n f ⟧ ∙ ⟦ n g ⟧ )) ≈⟨ ? ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
153 x ⁻¹ ∙ (a (is-an f x) ∙ ( a (is-an g x) ∙ ⟦ n f ⟧) ∙ ⟦ n g ⟧) ≈⟨ ? ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
154 x ⁻¹ ∙ (a (is-an f x) ∙ ( ⟦ n f ⟧ ∙ a (is-an g x) ) ∙ ⟦ n g ⟧) ≈⟨ ? ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
155 x ⁻¹ ∙ ((a (is-an f x) ∙ ⟦ n f ⟧ ) ∙ ( a (is-an g x) ∙ ⟦ n g ⟧)) ≈⟨ ? ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
156 x ⁻¹ ∙ (x ∙ x) ≈⟨ ? ⟩ |
285 | 157 (x ⁻¹ ∙ x ) ∙ x ≈⟨ ? ⟩ |
158 ε ∙ x ≈⟨ ? ⟩ | |
159 x ∎ | |
160 qid : aN N | |
161 qid = record { n = ε ; is-an = λ x → record { a = x ; aN=x = qid1 } } where | |
162 qid1 : {x : Carrier } → x ∙ ⟦ ε ⟧ ≈ x | |
163 qid1 {x} = begin | |
164 x ∙ ⟦ ε ⟧ ≈⟨ ∙-cong grefl ε-homo ⟩ | |
165 x ∙ ε ≈⟨ proj₂ identity _ ⟩ | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
166 x ∎ |
271 | 167 |
285 | 168 |
258 | 169 -- K ⊂ ker(f) |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
170 K⊆ker : (G H : Group c c) (K : NormalSubGroup G) (f : Group.Carrier G → Group.Carrier H ) → Set c |
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
171 K⊆ker G H K f = (x : Group.Carrier G ) → f ( ⟦ x ⟧ ) ≈ ε where |
258 | 172 open Group H |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
173 open NormalSubGroup K |
258 | 174 |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
175 open import Function.Surjection |
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
176 open import Function.Equality |
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
177 |
283 | 178 module GK (G : Group c c) (K : NormalSubGroup G) where |
274 | 179 open Group G |
180 open aN | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
181 open an |
274 | 182 open NormalSubGroup K |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
183 open IsGroupHomomorphism normal |
274 | 184 open EqReasoning (Algebra.Group.setoid G) |
279 | 185 open Gutil G |
274 | 186 |
187 φ : Group.Carrier G → Group.Carrier (G / K ) | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
188 φ g = record { n = factor ε g ; is-an = λ x → record { a = x ∙ ( ⟦ factor ε g ⟧ ⁻¹) ; aN=x = ? } } |
274 | 189 |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
190 φ-homo : IsGroupHomomorphism (GR G) (GR (G / K)) φ |
274 | 191 φ-homo = record {⁻¹-homo = λ g → ? ; isMonoidHomomorphism = record { ε-homo = ? ; isMagmaHomomorphism = record { homo = ? ; isRelHomomorphism = |
192 record { cong = ? } }}} | |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
193 |
274 | 194 φe : (Algebra.Group.setoid G) Function.Equality.⟶ (Algebra.Group.setoid (G / K)) |
281 | 195 φe = record { _⟨$⟩_ = φ ; cong = ? } where |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
196 φ-cong : {f g : Carrier } → f ≈ g → ⟦ n (φ f ) ⟧ ≈ ⟦ n (φ g ) ⟧ |
274 | 197 φ-cong = ? |
198 | |
279 | 199 -- inverse ofφ |
277 | 200 -- f = λ x → record { a = af ; n = fn ; aN=x = x ≈ af ∙ ⟦ fn ⟧ ) = (af)K , fn ≡ factor x af , af ≡ a (f x) |
201 -- (inv-φ f)K ≡ (af)K | |
202 -- φ (inv-φ f) x → f (h0 x) | |
203 -- f x → φ (inv-φ f) (h1 x) | |
204 | |
274 | 205 inv-φ : Group.Carrier (G / K ) → Group.Carrier G |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
206 inv-φ f = ⟦ n f ⟧ ⁻¹ |
279 | 207 |
208 | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
209 cong-i : {f g : Group.Carrier (G / K ) } → ⟦ n f ⟧ ≈ ⟦ n g ⟧ → inv-φ f ≈ inv-φ g |
274 | 210 cong-i = ? |
211 | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
212 is-inverse : (f : aN K ) → ⟦ n (φ (inv-φ f) ) ⟧ ≈ ⟦ n f ⟧ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
213 is-inverse f = begin |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
214 ⟦ n (φ (inv-φ f) ) ⟧ ≈⟨ grefl ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
215 ⟦ n (φ (⟦ n f ⟧ ⁻¹) ) ⟧ ≈⟨ grefl ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
216 ⟦ factor ε (⟦ n f ⟧ ⁻¹) ⟧ ≈⟨ ? ⟩ |
285 | 217 ε ∙ ⟦ factor ε (⟦ n f ⟧ ⁻¹) ⟧ ≈⟨ ? ⟩ |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
218 ( ⟦ n f ⟧ ∙ ⟦ n f ⟧ ⁻¹) ∙ ⟦ factor ε (⟦ n f ⟧ ⁻¹) ⟧ ≈⟨ ? ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
219 ⟦ n f ⟧ ∙ ( ⟦ n f ⟧ ⁻¹ ∙ ⟦ factor ε (⟦ n f ⟧ ⁻¹) ⟧ ) ≈⟨ ∙-cong grefl (is-factor ε _ ) ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
220 ⟦ n f ⟧ ∙ ε ≈⟨ ? ⟩ |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
221 ⟦ n f ⟧ ∎ |
281 | 222 |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
223 φ-surjective : Surjective φe |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
224 φ-surjective = record { from = record { _⟨$⟩_ = inv-φ ; cong = λ {f} {g} → cong-i {f} {g} } ; right-inverse-of = is-inverse } |
276 | 225 |
283 | 226 gk00 : {x : Carrier } → ⟦ factor ε x ⟧ ⁻¹ ≈ x |
227 gk00 {x} = begin | |
228 ⟦ factor ε x ⟧ ⁻¹ ≈⟨ ? ⟩ | |
285 | 229 (ε ∙ ⟦ factor ε x ⟧) ⁻¹ ≈⟨ ? ⟩ |
230 ( ( x ⁻¹ ∙ x ) ∙ ⟦ factor ε x ⟧ ) ⁻¹ ≈⟨ ? ⟩ | |
231 ( x ⁻¹ ∙ ( x ∙ ⟦ factor ε x ⟧) ) ⁻¹ ≈⟨ ⁻¹-cong (∙-cong grefl (is-factor ε x)) ⟩ | |
283 | 232 ( x ⁻¹ ∙ ε ) ⁻¹ ≈⟨ ? ⟩ |
233 ( x ⁻¹ ) ⁻¹ ≈⟨ ? ⟩ | |
234 x ∎ | |
235 | |
236 gk01 : (x : Group.Carrier (G / K ) ) → (G / K) < φ ( inv-φ x ) ≈ x > | |
237 gk01 x = begin | |
238 ⟦ factor ε ( inv-φ x) ⟧ ≈⟨ ? ⟩ | |
284 | 239 ( inv-φ x ) ⁻¹ ∙ ( inv-φ x ∙ ⟦ factor ε ( inv-φ x) ⟧) ≈⟨ ∙-cong grefl (is-factor ε _ ) ⟩ |
240 ( inv-φ x ) ⁻¹ ∙ ε ≈⟨ ? ⟩ | |
241 ( ⟦ n x ⟧ ⁻¹) ⁻¹ ≈⟨ ? ⟩ | |
283 | 242 ⟦ n x ⟧ ∎ |
243 | |
244 | |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
245 record FundamentalHomomorphism (G H : Group c c ) |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
246 (f : Group.Carrier G → Group.Carrier H ) |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
247 (homo : IsGroupHomomorphism (GR G) (GR H) f ) |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
248 (K : NormalSubGroup G ) (kf : K⊆ker G H K f) : Set c where |
258 | 249 open Group H |
283 | 250 open GK G K |
257
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
251 field |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
252 h : Group.Carrier (G / K ) → Group.Carrier H |
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
253 h-homo : IsGroupHomomorphism (GR (G / K) ) (GR H) h |
283 | 254 is-solution : (x : Group.Carrier G) → f x ≈ h ( φ x ) |
255 unique : (h1 : Group.Carrier (G / K ) → Group.Carrier H) → (homo : IsGroupHomomorphism (GR (G / K)) (GR H) h1 ) | |
256 → ( (x : Group.Carrier G) → f x ≈ h1 ( φ x ) ) → ( ( x : Group.Carrier (G / K)) → h x ≈ h1 x ) | |
257
d500309866da
fundamental theorem on homomorphisms
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
257 |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
258 FundamentalHomomorphismTheorm : (G H : Group c c) |
258 | 259 (f : Group.Carrier G → Group.Carrier H ) |
264 | 260 (homo : IsGroupHomomorphism (GR G) (GR H) f ) |
260 | 261 (K : NormalSubGroup G ) → (kf : K⊆ker G H K f) → FundamentalHomomorphism G H f homo K kf |
262 FundamentalHomomorphismTheorm G H f homo K kf = record { | |
259 | 263 h = h |
264 ; h-homo = h-homo | |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
265 ; is-solution = is-solution |
259 | 266 ; unique = unique |
267 } where | |
283 | 268 open GK G K |
259 | 269 open Group H |
283 | 270 open Gutil H |
271 open NormalSubGroup K | |
272 open IsGroupHomomorphism homo | |
273 open aN | |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
274 h : Group.Carrier (G / K ) → Group.Carrier H |
283 | 275 h r = f ( inv-φ r ) |
274 | 276 h03 : (x y : Group.Carrier (G / K ) ) → h ( (G / K) < x ∙ y > ) ≈ h x ∙ h y |
270 | 277 h03 x y = {!!} |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
278 h-homo : IsGroupHomomorphism (GR (G / K ) ) (GR H) h |
260 | 279 h-homo = record { |
259 | 280 isMonoidHomomorphism = record { |
281 isMagmaHomomorphism = record { | |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
282 isRelHomomorphism = record { cong = λ {x} {y} eq → {!!} } |
260 | 283 ; homo = h03 } |
284 ; ε-homo = {!!} } | |
285 ; ⁻¹-homo = {!!} } | |
283 | 286 open EqReasoning (Algebra.Group.setoid H) |
287 is-solution : (x : Group.Carrier G) → f x ≈ h ( φ x ) | |
272
ce372f6347d6
Foundamental definition done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
271
diff
changeset
|
288 is-solution x = begin |
283 | 289 f x ≈⟨ gsym ( ⟦⟧-cong (gk00 )) ⟩ |
290 f ( Group._⁻¹ G ⟦ factor (Group.ε G) x ⟧ ) ≈⟨ grefl ⟩ | |
291 h ( φ x ) ∎ | |
292 unique : (h1 : Group.Carrier (G / K ) → Group.Carrier H) → (h1-homo : IsGroupHomomorphism (GR (G / K)) (GR H) h1 ) | |
293 → ( (x : Group.Carrier G) → f x ≈ h1 ( φ x ) ) → ( ( x : Group.Carrier (G / K)) → h x ≈ h1 x ) | |
294 unique h1 h1-homo h1-is-solution x = begin | |
295 h x ≈⟨ grefl ⟩ | |
296 f ( inv-φ x ) ≈⟨ h1-is-solution _ ⟩ | |
297 h1 ( φ ( inv-φ x ) ) ≈⟨ IsGroupHomomorphism.⟦⟧-cong h1-homo (gk01 x) ⟩ | |
298 h1 x ∎ | |
258 | 299 |
300 | |
301 | |
259 | 302 |
282
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
303 |
b70cc2534d2f
double record on quontient group
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
281
diff
changeset
|
304 |