Mercurial > hg > Members > kono > Proof > category
annotate equalizer.agda @ 230:1ef8c70c7054
fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 07 Sep 2013 18:56:46 +0900 |
parents | 68b2681ea9df |
children | 1dc1c697145f |
rev | line source |
---|---|
205 | 1 --- |
2 -- | |
3 -- Equalizer | |
4 -- | |
208 | 5 -- e f |
205 | 6 -- c --------> a ----------> b |
208 | 7 -- ^ . ----------> |
205 | 8 -- | . g |
230 | 9 -- |k . |
10 -- | . h | |
11 -- d | |
205 | 12 -- |
13 -- Shinji KONO <kono@ie.u-ryukyu.ac.jp> | |
14 ---- | |
15 | |
230 | 16 open import Category -- https://github.com/konn/category-agda |
205 | 17 open import Level |
18 module equalizer { c₁ c₂ ℓ : Level} { A : Category c₁ c₂ ℓ } where | |
19 | |
20 open import HomReasoning | |
21 open import cat-utility | |
22 | |
209 | 23 record Equalizer { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) {c a b : Obj A} (f g : Hom A a b) : Set (ℓ ⊔ (c₁ ⊔ c₂)) where |
205 | 24 field |
230 | 25 e : Hom A c a |
221 | 26 fe=ge : A [ A [ f o e ] ≈ A [ g o e ] ] |
209 | 27 k : {d : Obj A} (h : Hom A d a) → A [ A [ f o h ] ≈ A [ g o h ] ] → Hom A d c |
215 | 28 ek=h : {d : Obj A} → ∀ {h : Hom A d a} → {eq : A [ A [ f o h ] ≈ A [ g o h ] ] } → A [ A [ e o k {d} h eq ] ≈ h ] |
230 | 29 uniqueness : {d : Obj A} → ∀ {h : Hom A d a} → {eq : A [ A [ f o h ] ≈ A [ g o h ] ] } → {k' : Hom A d c } → |
214 | 30 A [ A [ e o k' ] ≈ h ] → A [ k {d} h eq ≈ k' ] |
209 | 31 equalizer : Hom A c a |
32 equalizer = e | |
206 | 33 |
230 | 34 -- |
225 | 35 -- Flat Equational Definition of Equalizer |
230 | 36 -- |
225 | 37 record Burroni { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) {c a b : Obj A} (f g : Hom A a b) : Set (ℓ ⊔ (c₁ ⊔ c₂)) where |
206 | 38 field |
212 | 39 α : {a b c : Obj A } → (f : Hom A a b) → (g : Hom A a b ) → Hom A c a |
214 | 40 γ : {a b c d : Obj A } → (f : Hom A a b) → (g : Hom A a b ) → (h : Hom A d a ) → Hom A d c |
230 | 41 δ : {a b c : Obj A } → (f : Hom A a b) → Hom A a c |
213 | 42 b1 : A [ A [ f o α {a} {b} {a} f g ] ≈ A [ g o α f g ] ] |
214 | 43 b2 : {d : Obj A } → {h : Hom A d a } → A [ A [ ( α f g) o (γ {a} {b} {c} f g h) ] ≈ A [ h o α (A [ f o h ]) (A [ g o h ]) ] ] |
213 | 44 b3 : A [ A [ α f f o δ {a} {b} {a} f ] ≈ id1 A a ] |
207
22811f7a04e1
Equalizer problems have written
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
45 -- b4 : {c d : Obj A } {k : Hom A c a} → A [ β f g ( A [ α f g o k ] ) ≈ k ] |
230 | 46 b4 : {d : Obj A } {k : Hom A d c} → A [ A [ γ {a} {b} {c} {d} f g ( A [ α {a} {b} {c} f g o k ] ) o δ (A [ f o A [ α f g o k ] ] ) ] ≈ k ] |
207
22811f7a04e1
Equalizer problems have written
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
47 -- A [ α f g o β f g h ] ≈ h |
214 | 48 β : { d e a b : Obj A} → (f : Hom A a b) → (g : Hom A a b ) → (h : Hom A d a ) → Hom A d c |
230 | 49 β {d} {e} {a} {b} f g h = A [ γ {a} {b} {c} f g h o δ (A [ f o h ]) ] |
207
22811f7a04e1
Equalizer problems have written
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
206
diff
changeset
|
50 |
209 | 51 open Equalizer |
227 | 52 |
225 | 53 open Burroni |
209 | 54 |
225 | 55 -- |
56 -- Some obvious conditions for k (fe = ge) → ( fh = gh ) | |
57 -- | |
219 | 58 |
224 | 59 f1=g1 : { a b c : Obj A } {f g : Hom A a b } → (eq : A [ f ≈ g ] ) → (h : Hom A c a) → A [ A [ f o h ] ≈ A [ g o h ] ] |
60 f1=g1 eq h = let open ≈-Reasoning (A) in (resp refl-hom eq ) | |
61 | |
226 | 62 f1=f1 : { a b : Obj A } (f : Hom A a b ) → A [ A [ f o (id1 A a) ] ≈ A [ f o (id1 A a) ] ] |
230 | 63 f1=f1 f = let open ≈-Reasoning (A) in refl-hom |
226 | 64 |
224 | 65 f1=gh : { a b c d : Obj A } {f g : Hom A a b } → { e : Hom A c a } → { h : Hom A d c } → |
66 (eq : A [ A [ f o e ] ≈ A [ g o e ] ] ) → A [ A [ f o A [ e o h ] ] ≈ A [ g o A [ e o h ] ] ] | |
230 | 67 f1=gh {a} {b} {c} {d} {f} {g} {e} {h} eq = let open ≈-Reasoning (A) in |
224 | 68 begin |
69 f o ( e o h ) | |
70 ≈⟨ assoc ⟩ | |
230 | 71 (f o e ) o h |
224 | 72 ≈⟨ car eq ⟩ |
230 | 73 (g o e ) o h |
224 | 74 ≈↑⟨ assoc ⟩ |
75 g o ( e o h ) | |
76 ∎ | |
219 | 77 |
225 | 78 -- |
79 -- For e f f, we need e eqa = id1 A a, but it is equal to say k eqa (id a) is id | |
80 -- | |
81 -- Equalizer has free choice of c up to isomorphism, we cannot prove eqa = id a | |
219 | 82 |
230 | 83 equalizer-eq-k : { a b : Obj A } {f g : Hom A a b } → (eq : A [ f ≈ g ] ) → ( eqa : Equalizer A {a} f g) → |
219 | 84 A [ e eqa ≈ id1 A a ] → |
230 | 85 A [ k eqa (id1 A a) (f1=g1 eq (id1 A a)) ≈ id1 A a ] |
219 | 86 equalizer-eq-k {a} {b} {f} {g} eq eqa e=1 = let open ≈-Reasoning (A) in |
87 begin | |
230 | 88 k eqa (id1 A a) (f1=g1 eq (id1 A a)) |
219 | 89 ≈⟨ uniqueness eqa ( begin |
90 e eqa o id1 A a | |
91 ≈⟨ idR ⟩ | |
230 | 92 e eqa |
219 | 93 ≈⟨ e=1 ⟩ |
94 id1 A a | |
95 ∎ )⟩ | |
96 id1 A a | |
97 ∎ | |
98 | |
230 | 99 equalizer-eq-e : { a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {a} f g) → (eq : A [ f ≈ g ] ) → |
224 | 100 A [ k eqa (id1 A a) (f1=g1 eq (id1 A a)) ≈ id1 A a ] → |
230 | 101 A [ e eqa ≈ id1 A a ] |
222 | 102 equalizer-eq-e {a} {b} {f} {g} eqa eq k=1 = let open ≈-Reasoning (A) in |
103 begin | |
230 | 104 e eqa |
222 | 105 ≈↑⟨ idR ⟩ |
106 e eqa o id1 A a | |
107 ≈↑⟨ cdr k=1 ⟩ | |
224 | 108 e eqa o k eqa (id1 A a) (f1=g1 eq (id1 A a)) |
222 | 109 ≈⟨ ek=h eqa ⟩ |
110 id1 A a | |
111 ∎ | |
112 | |
225 | 113 -- |
114 -- | |
115 -- An isomorphic element c' of c makes another equalizer | |
116 -- | |
230 | 117 -- e eqa f g f |
222 | 118 -- c ----------> a ------->b |
230 | 119 -- |^ |
120 -- || | |
222 | 121 -- h || h-1 |
230 | 122 -- v| |
123 -- c' | |
222 | 124 |
125 equalizer+iso : {a b c c' : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) → (h-1 : Hom A c' c ) → (h : Hom A c c' ) → | |
126 A [ A [ h-1 o h ] ≈ id1 A c ] → A [ A [ h o h-1 ] ≈ id1 A c' ] | |
230 | 127 → Equalizer A {c'} f g |
222 | 128 equalizer+iso {a} {b} {c} {c'} {f} {g} eqa h-1 h h-1-id h-id = record { |
129 e = A [ e eqa o h-1 ] ; | |
130 fe=ge = fe=ge1 ; | |
131 k = λ j eq → A [ h o k eqa j eq ] ; | |
230 | 132 ek=h = ek=h1 ; |
222 | 133 uniqueness = uniqueness1 |
134 } where | |
135 fe=ge1 : A [ A [ f o A [ e eqa o h-1 ] ] ≈ A [ g o A [ e eqa o h-1 ] ] ] | |
230 | 136 fe=ge1 = let open ≈-Reasoning (A) in |
222 | 137 begin |
138 f o ( e eqa o h-1 ) | |
139 ≈⟨ assoc ⟩ | |
140 (f o e eqa ) o h-1 | |
141 ≈⟨ car (fe=ge eqa) ⟩ | |
142 (g o e eqa ) o h-1 | |
143 ≈↑⟨ assoc ⟩ | |
144 g o ( e eqa o h-1 ) | |
145 ∎ | |
146 ek=h1 : {d : Obj A} {j : Hom A d a} {eq : A [ A [ f o j ] ≈ A [ g o j ] ]} → | |
147 A [ A [ A [ e eqa o h-1 ] o A [ h o k eqa j eq ] ] ≈ j ] | |
148 ek=h1 {d} {j} {eq} = let open ≈-Reasoning (A) in | |
149 begin | |
150 (e eqa o h-1 ) o ( h o k eqa j eq ) | |
151 ≈↑⟨ assoc ⟩ | |
152 e eqa o ( h-1 o ( h o k eqa j eq )) | |
153 ≈⟨ cdr assoc ⟩ | |
154 e eqa o (( h-1 o h ) o k eqa j eq ) | |
155 ≈⟨ cdr (car (h-1-id )) ⟩ | |
156 e eqa o (id1 A c o k eqa j eq ) | |
157 ≈⟨ cdr idL ⟩ | |
158 e eqa o (k eqa j eq ) | |
159 ≈⟨ ek=h eqa ⟩ | |
160 j | |
161 ∎ | |
162 uniqueness1 : {d : Obj A} {h' : Hom A d a} {eq : A [ A [ f o h' ] ≈ A [ g o h' ] ]} {j : Hom A d c'} → | |
163 A [ A [ A [ e eqa o h-1 ] o j ] ≈ h' ] → | |
164 A [ A [ h o k eqa h' eq ] ≈ j ] | |
165 uniqueness1 {d} {h'} {eq} {j} ej=h = let open ≈-Reasoning (A) in | |
166 begin | |
167 h o k eqa h' eq | |
168 ≈⟨ cdr (uniqueness eqa ( | |
169 begin | |
170 e eqa o ( h-1 o j ) | |
171 ≈⟨ assoc ⟩ | |
230 | 172 (e eqa o h-1 ) o j |
222 | 173 ≈⟨ ej=h ⟩ |
174 h' | |
175 ∎ | |
176 )) ⟩ | |
177 h o ( h-1 o j ) | |
178 ≈⟨ assoc ⟩ | |
230 | 179 (h o h-1 ) o j |
222 | 180 ≈⟨ car h-id ⟩ |
230 | 181 id1 A c' o j |
222 | 182 ≈⟨ idL ⟩ |
183 j | |
184 ∎ | |
185 | |
225 | 186 -- If we have equalizer f g, e fh gh is also equalizer if we have isomorphic pair (same as above) |
187 -- | |
217 | 188 -- e eqa f g f |
189 -- c ----------> a ------->b | |
230 | 190 -- ^ ---> d ---> |
218 | 191 -- | i h |
192 -- j| k' (d' → d) | |
193 -- | k (d' → a) | |
230 | 194 -- d' |
217 | 195 |
230 | 196 equalizer+h : {a b c d : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) (i : Hom A c d ) → (h : Hom A d a ) → (h-1 : Hom A a d ) |
218 | 197 → A [ A [ h o i ] ≈ e eqa ] → A [ A [ h-1 o h ] ≈ id1 A d ] |
230 | 198 → Equalizer A {c} (A [ f o h ]) (A [ g o h ] ) |
218 | 199 equalizer+h {a} {b} {c} {d} {f} {g} eqa i h h-1 eq h-1-id = record { |
200 e = i ; -- A [ h-1 o e eqa ] ; -- Hom A a d | |
221 | 201 fe=ge = fe=ge1 ; |
217 | 202 k = λ j eq' → k eqa (A [ h o j ]) (fhj=ghj j eq' ) ; |
230 | 203 ek=h = ek=h1 ; |
217 | 204 uniqueness = uniqueness1 |
205 } where | |
230 | 206 fhj=ghj : {d' : Obj A } → (j : Hom A d' d ) → |
217 | 207 A [ A [ A [ f o h ] o j ] ≈ A [ A [ g o h ] o j ] ] → |
230 | 208 A [ A [ f o A [ h o j ] ] ≈ A [ g o A [ h o j ] ] ] |
217 | 209 fhj=ghj j eq' = let open ≈-Reasoning (A) in |
210 begin | |
211 f o ( h o j ) | |
212 ≈⟨ assoc ⟩ | |
230 | 213 (f o h ) o j |
217 | 214 ≈⟨ eq' ⟩ |
230 | 215 (g o h ) o j |
217 | 216 ≈↑⟨ assoc ⟩ |
217 g o ( h o j ) | |
218 ∎ | |
221 | 219 fe=ge1 : A [ A [ A [ f o h ] o i ] ≈ A [ A [ g o h ] o i ] ] |
230 | 220 fe=ge1 = let open ≈-Reasoning (A) in |
217 | 221 begin |
222 ( f o h ) o i | |
223 ≈↑⟨ assoc ⟩ | |
224 f o (h o i ) | |
225 ≈⟨ cdr eq ⟩ | |
226 f o (e eqa) | |
221 | 227 ≈⟨ fe=ge eqa ⟩ |
217 | 228 g o (e eqa) |
229 ≈↑⟨ cdr eq ⟩ | |
230 g o (h o i ) | |
231 ≈⟨ assoc ⟩ | |
232 ( g o h ) o i | |
233 ∎ | |
218 | 234 ek=h1 : {d' : Obj A} {k' : Hom A d' d} {eq' : A [ A [ A [ f o h ] o k' ] ≈ A [ A [ g o h ] o k' ] ]} → |
235 A [ A [ i o k eqa (A [ h o k' ]) (fhj=ghj k' eq') ] ≈ k' ] | |
236 ek=h1 {d'} {k'} {eq'} = let open ≈-Reasoning (A) in | |
217 | 237 begin |
218 | 238 i o k eqa (h o k' ) (fhj=ghj k' eq') -- h-1 (h o i ) o k eqa (h o k' ) = h-1 (h o k') |
239 ≈↑⟨ idL ⟩ | |
230 | 240 (id1 A d ) o ( i o k eqa (h o k' ) (fhj=ghj k' eq')) |
218 | 241 ≈↑⟨ car h-1-id ⟩ |
230 | 242 ( h-1 o h ) o ( i o k eqa (h o k' ) (fhj=ghj k' eq')) |
218 | 243 ≈↑⟨ assoc ⟩ |
244 h-1 o ( h o ( i o k eqa (h o k' ) (fhj=ghj k' eq')) ) | |
245 ≈⟨ cdr assoc ⟩ | |
246 h-1 o ( (h o i ) o k eqa (h o k' ) (fhj=ghj k' eq')) | |
247 ≈⟨ cdr (car eq ) ⟩ | |
248 h-1 o ( (e eqa) o k eqa (h o k' ) (fhj=ghj k' eq')) | |
249 ≈⟨ cdr (ek=h eqa) ⟩ | |
250 h-1 o ( h o k' ) | |
251 ≈⟨ assoc ⟩ | |
230 | 252 ( h-1 o h ) o k' |
218 | 253 ≈⟨ car h-1-id ⟩ |
230 | 254 id1 A d o k' |
218 | 255 ≈⟨ idL ⟩ |
256 k' | |
217 | 257 ∎ |
258 uniqueness1 : {d' : Obj A} {h' : Hom A d' d} {eq' : A [ A [ A [ f o h ] o h' ] ≈ A [ A [ g o h ] o h' ] ]} {k' : Hom A d' c} → | |
259 A [ A [ i o k' ] ≈ h' ] → A [ k eqa (A [ h o h' ]) (fhj=ghj h' eq') ≈ k' ] | |
260 uniqueness1 {d'} {h'} {eq'} {k'} ik=h = let open ≈-Reasoning (A) in | |
261 begin | |
262 k eqa (A [ h o h' ]) (fhj=ghj h' eq') | |
263 ≈⟨ uniqueness eqa ( begin | |
264 e eqa o k' | |
265 ≈↑⟨ car eq ⟩ | |
266 (h o i ) o k' | |
267 ≈↑⟨ assoc ⟩ | |
268 h o (i o k') | |
269 ≈⟨ cdr ik=h ⟩ | |
230 | 270 h o h' |
217 | 271 ∎ ) ⟩ |
272 k' | |
273 ∎ | |
215 | 274 |
230 | 275 -- If we have equalizer f g, e hf hg is also equalizer if we have isomorphic pair |
225 | 276 |
230 | 277 h+equalizer : {a b c d : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) (h : Hom A b d ) |
218 | 278 → (h-1 : Hom A d b ) → A [ A [ h-1 o h ] ≈ id1 A b ] |
230 | 279 → Equalizer A {c} (A [ h o f ]) (A [ h o g ] ) |
218 | 280 h+equalizer {a} {b} {c} {d} {f} {g} eqa h h-1 h-1-id = record { |
230 | 281 e = e eqa ; |
282 fe=ge = fe=ge1 ; | |
218 | 283 k = λ j eq' → k eqa j (fj=gj j eq') ; |
230 | 284 ek=h = ek=h1 ; |
218 | 285 uniqueness = uniqueness1 |
286 } where | |
287 fj=gj : {e : Obj A} → (j : Hom A e a ) → A [ A [ A [ h o f ] o j ] ≈ A [ A [ h o g ] o j ] ] → A [ A [ f o j ] ≈ A [ g o j ] ] | |
288 fj=gj j eq = let open ≈-Reasoning (A) in | |
289 begin | |
290 f o j | |
291 ≈↑⟨ idL ⟩ | |
292 id1 A b o ( f o j ) | |
293 ≈↑⟨ car h-1-id ⟩ | |
294 (h-1 o h ) o ( f o j ) | |
295 ≈↑⟨ assoc ⟩ | |
296 h-1 o (h o ( f o j )) | |
297 ≈⟨ cdr assoc ⟩ | |
298 h-1 o ((h o f) o j ) | |
299 ≈⟨ cdr eq ⟩ | |
300 h-1 o ((h o g) o j ) | |
301 ≈↑⟨ cdr assoc ⟩ | |
302 h-1 o (h o ( g o j )) | |
303 ≈⟨ assoc ⟩ | |
304 (h-1 o h) o ( g o j ) | |
305 ≈⟨ car h-1-id ⟩ | |
306 id1 A b o ( g o j ) | |
307 ≈⟨ idL ⟩ | |
308 g o j | |
309 ∎ | |
221 | 310 fe=ge1 : A [ A [ A [ h o f ] o e eqa ] ≈ A [ A [ h o g ] o e eqa ] ] |
311 fe=ge1 = let open ≈-Reasoning (A) in | |
218 | 312 begin |
313 ( h o f ) o e eqa | |
314 ≈↑⟨ assoc ⟩ | |
315 h o (f o e eqa ) | |
221 | 316 ≈⟨ cdr (fe=ge eqa) ⟩ |
218 | 317 h o (g o e eqa ) |
318 ≈⟨ assoc ⟩ | |
230 | 319 ( h o g ) o e eqa |
218 | 320 ∎ |
321 ek=h1 : {d₁ : Obj A} {j : Hom A d₁ a} {eq : A [ A [ A [ h o f ] o j ] ≈ A [ A [ h o g ] o j ] ]} → | |
322 A [ A [ e eqa o k eqa j (fj=gj j eq) ] ≈ j ] | |
323 ek=h1 {d₁} {j} {eq} = ek=h eqa | |
324 uniqueness1 : {d₁ : Obj A} {j : Hom A d₁ a} {eq : A [ A [ A [ h o f ] o j ] ≈ A [ A [ h o g ] o j ] ]} {k' : Hom A d₁ c} → | |
325 A [ A [ e eqa o k' ] ≈ j ] → A [ k eqa j (fj=gj j eq) ≈ k' ] | |
326 uniqueness1 = uniqueness eqa | |
230 | 327 |
225 | 328 -- If we have equalizer f g, e (ef) (eg) is also an equalizer and e = id c |
329 | |
230 | 330 eefeg : {a b c : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) |
331 → Equalizer A {c} (A [ f o e eqa ]) (A [ g o e eqa ] ) | |
227 | 332 eefeg {a} {b} {c} {f} {g} eqa = record { |
220 | 333 e = id1 A c ; -- i ; -- A [ h-1 o e eqa ] ; -- Hom A a d |
221 | 334 fe=ge = fe=ge1 ; |
220 | 335 k = λ j eq' → k eqa (A [ h o j ]) (fhj=ghj j eq' ) ; |
230 | 336 ek=h = ek=h1 ; |
220 | 337 uniqueness = uniqueness1 |
338 } where | |
339 i = id1 A c | |
340 h = e eqa | |
230 | 341 fhj=ghj : {d' : Obj A } → (j : Hom A d' c ) → |
220 | 342 A [ A [ A [ f o h ] o j ] ≈ A [ A [ g o h ] o j ] ] → |
230 | 343 A [ A [ f o A [ h o j ] ] ≈ A [ g o A [ h o j ] ] ] |
220 | 344 fhj=ghj j eq' = let open ≈-Reasoning (A) in |
345 begin | |
346 f o ( h o j ) | |
347 ≈⟨ assoc ⟩ | |
230 | 348 (f o h ) o j |
220 | 349 ≈⟨ eq' ⟩ |
230 | 350 (g o h ) o j |
220 | 351 ≈↑⟨ assoc ⟩ |
352 g o ( h o j ) | |
353 ∎ | |
221 | 354 fe=ge1 : A [ A [ A [ f o h ] o i ] ≈ A [ A [ g o h ] o i ] ] |
230 | 355 fe=ge1 = let open ≈-Reasoning (A) in |
220 | 356 begin |
357 ( f o h ) o i | |
221 | 358 ≈⟨ car ( fe=ge eqa ) ⟩ |
220 | 359 ( g o h ) o i |
360 ∎ | |
361 ek=h1 : {d' : Obj A} {k' : Hom A d' c} {eq' : A [ A [ A [ f o h ] o k' ] ≈ A [ A [ g o h ] o k' ] ]} → | |
362 A [ A [ i o k eqa (A [ h o k' ]) (fhj=ghj k' eq') ] ≈ k' ] | |
363 ek=h1 {d'} {k'} {eq'} = let open ≈-Reasoning (A) in | |
364 begin | |
365 i o k eqa (h o k' ) (fhj=ghj k' eq') -- h-1 (h o i ) o k eqa (h o k' ) = h-1 (h o k') | |
366 ≈⟨ idL ⟩ | |
367 k eqa (e eqa o k' ) (fhj=ghj k' eq') | |
368 ≈⟨ uniqueness eqa refl-hom ⟩ | |
369 k' | |
370 ∎ | |
371 uniqueness1 : {d' : Obj A} {h' : Hom A d' c} {eq' : A [ A [ A [ f o h ] o h' ] ≈ A [ A [ g o h ] o h' ] ]} {k' : Hom A d' c} → | |
372 A [ A [ i o k' ] ≈ h' ] → A [ k eqa (A [ h o h' ]) (fhj=ghj h' eq') ≈ k' ] | |
373 uniqueness1 {d'} {h'} {eq'} {k'} ik=h = let open ≈-Reasoning (A) in | |
374 begin | |
375 k eqa ( e eqa o h') (fhj=ghj h' eq') | |
376 ≈⟨ uniqueness eqa ( begin | |
377 e eqa o k' | |
378 ≈↑⟨ cdr idL ⟩ | |
379 e eqa o (id1 A c o k' ) | |
380 ≈⟨ cdr ik=h ⟩ | |
230 | 381 e eqa o h' |
220 | 382 ∎ ) ⟩ |
383 k' | |
384 ∎ | |
385 | |
225 | 386 -- |
387 -- If we have two equalizers on c and c', there are isomorphic pair h, h' | |
388 -- | |
389 -- h : c → c' h' : c' → c | |
226 | 390 -- h h' = 1 and h' h = 1 |
225 | 391 -- not yet done |
392 | |
393 | |
230 | 394 c-iso-l : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' : Equalizer A {c'} f g ) |
229
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
395 → ( keqa : Equalizer A {c} (A [ f o e eqa' ]) (A [ g o e eqa' ]) ) |
230 | 396 → Hom A c c' |
229
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
397 c-iso-l {c} {c'} eqa eqa' keqa = e keqa |
226 | 398 |
230 | 399 c-iso-r : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' : Equalizer A {c'} f g ) |
229
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
400 → ( keqa : Equalizer A {c} (A [ f o e eqa' ]) (A [ g o e eqa' ]) ) |
230 | 401 → Hom A c' c |
402 c-iso-r {c} {c'} eqa eqa' keqa = k keqa (id1 A c') ( f1=g1 (fe=ge eqa') (id1 A c') ) | |
223 | 403 |
227 | 404 |
229
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
405 -- e(eqa') f |
230 | 406 -- c'----------> a ------->b f e j = g e j |
407 -- ^ g | |
408 -- |k h | |
229
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
409 -- | h = e(eqaj) o k jhek = jh (uniqueness) |
230 | 410 -- | |
411 -- c j o (k (eqa ef ef) j ) = id c h = e(eqaj) | |
412 -- | |
413 -- h j e f = h j e g → h = 'j e f | |
229
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
414 -- h = j e f -> j = j' |
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
415 -- |
228 | 416 |
230 | 417 c-iso : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' : Equalizer A {c'} f g ) |
229
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
418 → ( keqa : Equalizer A {c} (A [ f o e eqa' ]) (A [ g o e eqa' ]) ) |
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
419 → A [ A [ c-iso-l eqa eqa' keqa o c-iso-r eqa eqa' keqa ] ≈ id1 A c' ] |
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
420 c-iso {c} {c'} {a} {b} {f} {g} eqa eqa' keqa = let open ≈-Reasoning (A) in begin |
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
421 c-iso-l eqa eqa' keqa o c-iso-r eqa eqa' keqa |
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
422 ≈⟨ ek=h keqa ⟩ |
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
423 id1 A c' |
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
424 ∎ |
226 | 425 |
230 | 426 -- To prove c-iso-r eqa eqa' keqa o c-iso-l eqa eqa' keqa |
221 | 427 -- ke = e' k'e' = e → k k' = 1 , k' k = 1 |
428 -- ke = e' | |
429 -- k'ke = k'e' = e kk' = 1 | |
430 -- x e = e -> x = id? | |
218 | 431 |
230 | 432 ----- |
433 -- reverse arrow of e (eqa f g) | |
434 -- | |
435 -- e eqa f g f | |
436 -- c ----------> a ------->b | |
437 -- <--------- | |
438 -- | |
439 reverse-e : {a b c : Obj A} (f g : Hom A a b) → | |
440 ( eqa : {a b c : Obj A} → (f g : Hom A a b) → Equalizer A {c} f g ) → | |
441 A [ A [ k (eqa (A [ f o e (eqa f g) ]) (A [ g o e (eqa f g) ]) ) (id1 A a) | |
442 (f1=g1 (fe=ge (eqa f g) ) (id1 A a) ) o e (eqa f g ) ] ≈ id1 A c ] | |
443 reverse-e {a} {b} {c} f g eqa = ? | |
444 | |
225 | 445 ---- |
446 -- | |
447 -- An equalizer satisfies Burroni equations | |
448 -- | |
230 | 449 -- b4 is not yet done |
225 | 450 ---- |
451 | |
230 | 452 lemma-equ1 : {a b c : Obj A} (f g : Hom A a b) → |
225 | 453 ( {a b c : Obj A} → (f g : Hom A a b) → Equalizer A {c} f g ) → Burroni A {c} f g |
222 | 454 lemma-equ1 {a} {b} {c} f g eqa = record { |
216 | 455 α = λ f g → e (eqa f g ) ; -- Hom A c a |
214 | 456 γ = λ {a} {b} {c} {d} f g h → k (eqa f g ) {d} ( A [ h o (e ( eqa (A [ f o h ] ) (A [ g o h ] ))) ] ) (lemma-equ4 {a} {b} {c} {d} f g h ) ; -- Hom A c d |
213 | 457 δ = λ {a} f → k (eqa f f) (id1 A a) (lemma-equ2 f); -- Hom A a c |
221 | 458 b1 = fe=ge (eqa f g) ; |
226 | 459 b2 = lemma-b2 ; |
460 b3 = lemma-b3 ; | |
230 | 461 b4 = lemma-b4 |
211 | 462 } where |
216 | 463 -- |
464 -- e eqa f g f | |
465 -- c ----------> a ------->b | |
230 | 466 -- ^ g |
467 -- | | |
216 | 468 -- |k₁ = e eqa (f o (e (eqa f g))) (g o (e (eqa f g)))) |
230 | 469 -- | |
216 | 470 -- d |
230 | 471 -- |
472 -- | |
216 | 473 -- e o id1 ≈ e → k e ≈ id |
474 | |
211 | 475 lemma-equ2 : {a b : Obj A} (f : Hom A a b) → A [ A [ f o id1 A a ] ≈ A [ f o id1 A a ] ] |
476 lemma-equ2 f = let open ≈-Reasoning (A) in refl-hom | |
226 | 477 lemma-b3 : A [ A [ e (eqa f f) o k (eqa f f) (id1 A a) (lemma-equ2 f) ] ≈ id1 A a ] |
478 lemma-b3 = let open ≈-Reasoning (A) in | |
230 | 479 begin |
211 | 480 e (eqa f f) o k (eqa f f) (id1 A a) (lemma-equ2 f) |
215 | 481 ≈⟨ ek=h (eqa f f ) ⟩ |
211 | 482 id1 A a |
483 ∎ | |
230 | 484 lemma-equ4 : {a b c d : Obj A} → (f : Hom A a b) → (g : Hom A a b ) → (h : Hom A d a ) → |
212 | 485 A [ A [ f o A [ h o e (eqa (A [ f o h ]) (A [ g o h ])) ] ] ≈ A [ g o A [ h o e (eqa (A [ f o h ]) (A [ g o h ])) ] ] ] |
214 | 486 lemma-equ4 {a} {b} {c} {d} f g h = let open ≈-Reasoning (A) in |
212 | 487 begin |
488 f o ( h o e (eqa (f o h) ( g o h ))) | |
489 ≈⟨ assoc ⟩ | |
490 (f o h) o e (eqa (f o h) ( g o h )) | |
221 | 491 ≈⟨ fe=ge (eqa (A [ f o h ]) (A [ g o h ])) ⟩ |
212 | 492 (g o h) o e (eqa (f o h) ( g o h )) |
493 ≈↑⟨ assoc ⟩ | |
494 g o ( h o e (eqa (f o h) ( g o h ))) | |
495 ∎ | |
230 | 496 lemma-b2 : {d : Obj A} {h : Hom A d a} → A [ |
214 | 497 A [ e (eqa f g) o k (eqa f g) (A [ h o e (eqa (A [ f o h ]) (A [ g o h ])) ]) (lemma-equ4 {a} {b} {c} f g h) ] |
212 | 498 ≈ A [ h o e (eqa (A [ f o h ]) (A [ g o h ])) ] ] |
226 | 499 lemma-b2 {d} {h} = let open ≈-Reasoning (A) in |
212 | 500 begin |
230 | 501 e (eqa f g) o k (eqa f g) (h o e (eqa (f o h) (g o h))) (lemma-equ4 {a} {b} {c} f g h) |
215 | 502 ≈⟨ ek=h (eqa f g) ⟩ |
212 | 503 h o e (eqa (f o h ) ( g o h )) |
504 ∎ | |
230 | 505 |
506 ------- α(f,g)j id d = α(f,g)j | |
507 ------- α(f,g)j id d = α(f,g)j | |
508 ------- α(f,g)j α(fα(f,g)j,fα(f,g)j) δ(fα(f,g)j) = α(f,g)j | |
509 ------ fα = gα | |
510 ------- α(f,g)j α(fα(f,g)j,gα(f,g)j) δ(fα(f,g)j) = α(f,g)j | |
511 ------- α(f,g) γ(f,g,α(f,g)j) δ(fα(f,g)j) = α(f,g)j | |
512 ------- γ(f,g,α(f,g)j) δ(fα(f,g)j) = j | |
513 | |
514 lemma-b4 : {d : Obj A} {j : Hom A d c} → A [ | |
222 | 515 A [ k (eqa f g) (A [ A [ e (eqa f g) o j ] o e (eqa (A [ f o A [ e (eqa f g) o j ] ]) (A [ g o A [ e (eqa f g) o j ] ])) ]) |
230 | 516 (lemma-equ4 {a} {b} {c} f g (A [ e (eqa f g) o j ])) o |
222 | 517 k (eqa (A [ f o A [ e (eqa f g) o j ] ]) (A [ f o A [ e (eqa f g) o j ] ])) (id1 A d) (lemma-equ2 (A [ f o A [ e (eqa f g) o j ] ])) ] |
518 ≈ j ] | |
230 | 519 lemma-b4 {d} {j} = let open ≈-Reasoning (A) in |
215 | 520 begin |
222 | 521 ( k (eqa f g) (( ( e (eqa f g) o j ) o e (eqa (( f o ( e (eqa f g) o j ) )) (( g o ( e (eqa f g) o j ) ))) )) |
522 (lemma-equ4 {a} {b} {c} f g (( e (eqa f g) o j ))) o | |
523 k (eqa (( f o ( e (eqa f g) o j ) )) (( f o ( e (eqa f g) o j ) ))) (id1 A d) (lemma-equ2 (( f o ( e (eqa f g) o j ) ))) ) | |
230 | 524 ≈⟨ {!!} ⟩ |
222 | 525 j |
215 | 526 ∎ |
211 | 527 |
528 | |
225 | 529 -- end |
212 | 530 |
531 | |
532 | |
215 | 533 |
534 |