Mercurial > hg > Members > kono > Proof > category
annotate equalizer.agda @ 228:ff596cff8183
fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 05 Sep 2013 22:35:31 +0900 |
parents | 591efd381c82 |
children | 68b2681ea9df |
rev | line source |
---|---|
205 | 1 --- |
2 -- | |
3 -- Equalizer | |
4 -- | |
208 | 5 -- e f |
205 | 6 -- c --------> a ----------> b |
208 | 7 -- ^ . ----------> |
205 | 8 -- | . g |
208 | 9 -- |k . |
10 -- | . h | |
205 | 11 -- d |
12 -- | |
13 -- Shinji KONO <kono@ie.u-ryukyu.ac.jp> | |
14 ---- | |
15 | |
16 open import Category -- https://github.com/konn/category-agda | |
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 |
209 | 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 ] |
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 |
225 | 34 -- |
35 -- Flat Equational Definition of Equalizer | |
36 -- | |
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 |
212 | 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 ] |
215 | 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 |
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) ] ] |
63 f1=f1 f = let open ≈-Reasoning (A) in refl-hom | |
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 ] ] ] | |
67 f1=gh {a} {b} {c} {d} {f} {g} {e} {h} eq = let open ≈-Reasoning (A) in | |
68 begin | |
69 f o ( e o h ) | |
70 ≈⟨ assoc ⟩ | |
71 (f o e ) o h | |
72 ≈⟨ car eq ⟩ | |
73 (g o e ) o h | |
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 |
83 equalizer-eq-k : { a b : Obj A } {f g : Hom A a b } → (eq : A [ f ≈ g ] ) → ( eqa : Equalizer A {a} f g) → | |
84 A [ e eqa ≈ id1 A a ] → | |
224 | 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 | |
224 | 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 ⟩ | |
92 e eqa | |
93 ≈⟨ e=1 ⟩ | |
94 id1 A a | |
95 ∎ )⟩ | |
96 id1 A a | |
97 ∎ | |
98 | |
222 | 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 ] → |
222 | 101 A [ e eqa ≈ id1 A a ] |
102 equalizer-eq-e {a} {b} {f} {g} eqa eq k=1 = let open ≈-Reasoning (A) in | |
103 begin | |
104 e eqa | |
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 -- | |
222 | 117 -- e eqa f g f |
118 -- c ----------> a ------->b | |
119 -- |^ | |
120 -- || | |
121 -- h || h-1 | |
122 -- v| | |
123 -- c' | |
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' ] | |
127 → Equalizer A {c'} f g | |
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 ] ; | |
132 ek=h = ek=h1 ; | |
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 ] ] ] | |
136 fe=ge1 = let open ≈-Reasoning (A) in | |
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 ⟩ | |
172 (e eqa o h-1 ) o j | |
173 ≈⟨ ej=h ⟩ | |
174 h' | |
175 ∎ | |
176 )) ⟩ | |
177 h o ( h-1 o j ) | |
178 ≈⟨ assoc ⟩ | |
179 (h o h-1 ) o j | |
180 ≈⟨ car h-id ⟩ | |
181 id1 A c' o j | |
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 | |
218 | 190 -- ^ ---> d ---> |
191 -- | i h | |
192 -- j| k' (d' → d) | |
193 -- | k (d' → a) | |
194 -- d' | |
217 | 195 |
218 | 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 ) |
197 → A [ A [ h o i ] ≈ e eqa ] → A [ A [ h-1 o h ] ≈ id1 A d ] | |
217 | 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' ) ; |
203 ek=h = ek=h1 ; | |
204 uniqueness = uniqueness1 | |
205 } where | |
206 fhj=ghj : {d' : Obj A } → (j : Hom A d' d ) → | |
207 A [ A [ A [ f o h ] o j ] ≈ A [ A [ g o h ] o j ] ] → | |
208 A [ A [ f o A [ h o j ] ] ≈ A [ g o A [ h o j ] ] ] | |
209 fhj=ghj j eq' = let open ≈-Reasoning (A) in | |
210 begin | |
211 f o ( h o j ) | |
212 ≈⟨ assoc ⟩ | |
213 (f o h ) o j | |
214 ≈⟨ eq' ⟩ | |
215 (g o h ) o j | |
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 ] ] |
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 ⟩ | |
240 (id1 A d ) o ( i o k eqa (h o k' ) (fhj=ghj k' eq')) | |
241 ≈↑⟨ car h-1-id ⟩ | |
242 ( h-1 o h ) o ( i o k eqa (h o k' ) (fhj=ghj k' eq')) | |
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 ⟩ | |
252 ( h-1 o h ) o k' | |
253 ≈⟨ car h-1-id ⟩ | |
254 id1 A d o k' | |
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 ⟩ | |
270 h o h' | |
271 ∎ ) ⟩ | |
272 k' | |
273 ∎ | |
215 | 274 |
225 | 275 -- If we have equalizer f g, e hf hg is also equalizer if we have isomorphic pair |
276 | |
218 | 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 ) |
278 → (h-1 : Hom A d b ) → A [ A [ h-1 o h ] ≈ id1 A b ] | |
279 → Equalizer A {c} (A [ h o f ]) (A [ h o g ] ) | |
280 h+equalizer {a} {b} {c} {d} {f} {g} eqa h h-1 h-1-id = record { | |
281 e = e eqa ; | |
221 | 282 fe=ge = fe=ge1 ; |
218 | 283 k = λ j eq' → k eqa j (fj=gj j eq') ; |
284 ek=h = ek=h1 ; | |
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 ⟩ | |
319 ( h o g ) o e eqa | |
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 | |
327 | |
225 | 328 -- If we have equalizer f g, e (ef) (eg) is also an equalizer and e = id c |
329 | |
227 | 330 eefeg : {a b c : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) |
220 | 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' ) ; |
336 ek=h = ek=h1 ; | |
337 uniqueness = uniqueness1 | |
338 } where | |
339 i = id1 A c | |
340 h = e eqa | |
341 fhj=ghj : {d' : Obj A } → (j : Hom A d' c ) → | |
342 A [ A [ A [ f o h ] o j ] ≈ A [ A [ g o h ] o j ] ] → | |
343 A [ A [ f o A [ h o j ] ] ≈ A [ g o A [ h o j ] ] ] | |
344 fhj=ghj j eq' = let open ≈-Reasoning (A) in | |
345 begin | |
346 f o ( h o j ) | |
347 ≈⟨ assoc ⟩ | |
348 (f o h ) o j | |
349 ≈⟨ eq' ⟩ | |
350 (g o h ) o j | |
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 ] ] |
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 ⟩ | |
381 e eqa o h' | |
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 | |
226 | 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 ) |
395 → (eff' : Equalizer A {c'} f f ) → (eff : Equalizer A {c} f f ) | |
396 → Hom A c c' | |
228 | 397 c-iso-l {c} {c'} eqa eqa' eff' eff = let open ≈-Reasoning (A) in k eff' (A [ e eqa o id1 A c ]) refl-hom |
226 | 398 |
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 ) | |
400 → (eff' : Equalizer A {c'} f f ) → (eff : Equalizer A {c} f f ) | |
401 → Hom A c' c | |
228 | 402 c-iso-r {c} {c'} eqa eqa' eff' eff = let open ≈-Reasoning (A) in k eff (A [ e eqa' o id1 A c' ]) refl-hom |
223 | 403 |
226 | 404 c-iso-1 : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' : Equalizer A {c'} f g ) |
405 → (eff' : Equalizer A {c'} f f ) → (eff : Equalizer A {c} f f ) | |
227 | 406 → A [ A [ e (eefeg eqa') o k (eefeg eqa') (id1 A c') (f1=g1 (fe=ge eqa') (id1 A c')) ] ≈ id1 A c' ] |
407 c-iso-1 {c} {c'} {a} {b} {f} {g} eqa eqa' eff' eff = let open ≈-Reasoning (A) in begin | |
408 e (eefeg eqa') o k (eefeg eqa') (id1 A c') (f1=g1 (fe=ge eqa') (id1 A c')) | |
409 ≈⟨ ek=h ( eefeg eqa' )⟩ | |
410 id1 A c' | |
411 ∎ | |
412 | |
228 | 413 c-iso-2 : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' : Equalizer A {c'} f g ) |
414 → (eff' : Equalizer A {c'} f f ) → (eff : Equalizer A {c} f f ) | |
415 → A [ k eqa' ( A [ e eqa' o id1 A c' ] ) (f1=gh (fe=ge eqa' )) ≈ id1 A c' ] | |
416 c-iso-2 {c} {c'} {a} {b} {f} {g} eqa eqa' eff' eff = let open ≈-Reasoning (A) in begin | |
417 k eqa' ( A [ e eqa' o id1 A c' ] ) (f1=gh (fe=ge eqa' ) ) | |
418 ≈⟨ uniqueness eqa' refl-hom ⟩ | |
419 id1 A c' | |
420 ∎ | |
421 | |
422 c-iso-3 : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' : Equalizer A {c'} f g ) | |
423 → (eff' : Equalizer A {c'} f f ) → (eff : Equalizer A {c} f f ) | |
424 → A [ k eff' ( A [ e eff' o id1 A c' ] ) (f1=gh (fe=ge eff')) ≈ id1 A c' ] | |
425 c-iso-3 {c} {c'} {a} {b} {f} {g} eqa eqa' eff' eff = let open ≈-Reasoning (A) in begin | |
426 k eff' ( A [ e eff' o id1 A c' ] ) (f1=gh (fe=ge eff')) | |
427 ≈⟨ uniqueness eff' refl-hom ⟩ | |
428 id1 A c' | |
429 ∎ | |
430 | |
227 | 431 -- e k e k = 1c e e = e -> e = 1c? |
432 -- k e k e = 1c' ? | |
433 | |
226 | 434 |
435 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 ) | |
436 → (eff' : Equalizer A {c'} f f ) → (eff : Equalizer A {c} f f ) | |
437 → A [ A [ c-iso-l eqa eqa' eff' eff o c-iso-r eqa eqa' eff' eff ] ≈ id1 A c' ] | |
438 c-iso {c} {c'} {a} {b} {f} {g} eqa eqa' eff' eff = let open ≈-Reasoning (A) in begin | |
439 c-iso-l eqa eqa' eff' eff o c-iso-r eqa eqa' eff' eff | |
440 ≈⟨⟩ | |
228 | 441 k eff' (e eqa o id1 A c) refl-hom o k eff (e eqa' o id1 A c') refl-hom |
442 ≈⟨ car ( uniqueness eff' ( begin | |
443 e eff' o k eff' {!!} {!!} | |
444 ≈⟨ {!!} ⟩ | |
445 e eqa o id1 A c | |
446 ∎ )) ⟩ | |
447 {!!} o k eff (e eqa' o id1 A c') refl-hom | |
226 | 448 ≈⟨ {!!} ⟩ |
449 id1 A c' | |
450 ∎ | |
451 | |
223 | 452 |
221 | 453 -- Equalizer is unique up to iso |
454 | |
455 -- | |
456 -- | |
457 -- e eqa f g f | |
458 -- c ----------> a ------->b | |
459 -- | |
224 | 460 equalizer-iso-eq' : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' : Equalizer A {c'} f g ) |
222 | 461 { h : Hom A a c } → A [ A [ h o e eqa ] ≈ id1 A c ] → A [ A [ k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e eqa ) (fe=ge eqa) ] ≈ id1 A c ] |
224 | 462 equalizer-iso-eq' {c} {c'} {f} {g} eqa eqa' {h} rev = let open ≈-Reasoning (A) in |
221 | 463 begin |
222 | 464 k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e eqa ) (fe=ge eqa) |
465 ≈↑⟨ idL ⟩ | |
466 (id1 A c) o ( k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e eqa ) (fe=ge eqa) ) | |
467 ≈↑⟨ car rev ⟩ | |
468 ( h o e eqa ) o ( k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e eqa ) (fe=ge eqa) ) | |
469 ≈↑⟨ assoc ⟩ | |
470 h o ( e eqa o ( k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e eqa ) (fe=ge eqa) ) ) | |
471 ≈⟨ cdr assoc ⟩ | |
472 h o (( e eqa o k eqa (e eqa' ) (fe=ge eqa')) o k eqa' (e eqa ) (fe=ge eqa) ) | |
473 ≈⟨ cdr ( car (ek=h eqa) ) ⟩ | |
474 h o ( e eqa' o k eqa' (e eqa ) (fe=ge eqa) ) | |
475 ≈⟨ cdr (ek=h eqa' ) ⟩ | |
476 h o e eqa | |
477 ≈⟨ rev ⟩ | |
478 id1 A c | |
221 | 479 ∎ |
480 | |
225 | 481 equalizer-iso-eq : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' : Equalizer A {c'} f g ) |
482 → A [ A [ k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e eqa ) (fe=ge eqa) ] ≈ id1 A c ] | |
483 equalizer-iso-eq {c} {c'} {f} {g} eqa eqa' = equalizer-iso-eq' {c} {c'} {f} {g} eqa eqa' {{!!}} {!!} | |
484 | |
221 | 485 -- ke = e' k'e' = e → k k' = 1 , k' k = 1 |
486 -- ke = e' | |
487 -- k'ke = k'e' = e kk' = 1 | |
488 -- x e = e -> x = id? | |
218 | 489 |
225 | 490 ---- |
491 -- | |
492 -- An equalizer satisfies Burroni equations | |
493 -- | |
494 -- b4 is not yet done | |
495 ---- | |
496 | |
222 | 497 lemma-equ1 : {a b c : Obj A} (f g : Hom A a b) → |
225 | 498 ( {a b c : Obj A} → (f g : Hom A a b) → Equalizer A {c} f g ) → Burroni A {c} f g |
222 | 499 lemma-equ1 {a} {b} {c} f g eqa = record { |
216 | 500 α = λ f g → e (eqa f g ) ; -- Hom A c a |
214 | 501 γ = λ {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 | 502 δ = λ {a} f → k (eqa f f) (id1 A a) (lemma-equ2 f); -- Hom A a c |
221 | 503 b1 = fe=ge (eqa f g) ; |
226 | 504 b2 = lemma-b2 ; |
505 b3 = lemma-b3 ; | |
506 b4 = lemma-b4 | |
211 | 507 } where |
216 | 508 -- |
509 -- e eqa f g f | |
510 -- c ----------> a ------->b | |
511 -- ^ g | |
512 -- | | |
513 -- |k₁ = e eqa (f o (e (eqa f g))) (g o (e (eqa f g)))) | |
514 -- | | |
515 -- d | |
516 -- | |
517 -- | |
518 -- e o id1 ≈ e → k e ≈ id | |
519 | |
211 | 520 lemma-equ2 : {a b : Obj A} (f : Hom A a b) → A [ A [ f o id1 A a ] ≈ A [ f o id1 A a ] ] |
521 lemma-equ2 f = let open ≈-Reasoning (A) in refl-hom | |
226 | 522 lemma-b3 : A [ A [ e (eqa f f) o k (eqa f f) (id1 A a) (lemma-equ2 f) ] ≈ id1 A a ] |
523 lemma-b3 = let open ≈-Reasoning (A) in | |
211 | 524 begin |
525 e (eqa f f) o k (eqa f f) (id1 A a) (lemma-equ2 f) | |
215 | 526 ≈⟨ ek=h (eqa f f ) ⟩ |
211 | 527 id1 A a |
528 ∎ | |
214 | 529 lemma-equ4 : {a b c d : Obj A} → (f : Hom A a b) → (g : Hom A a b ) → (h : Hom A d a ) → |
212 | 530 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 | 531 lemma-equ4 {a} {b} {c} {d} f g h = let open ≈-Reasoning (A) in |
212 | 532 begin |
533 f o ( h o e (eqa (f o h) ( g o h ))) | |
534 ≈⟨ assoc ⟩ | |
535 (f o h) o e (eqa (f o h) ( g o h )) | |
221 | 536 ≈⟨ fe=ge (eqa (A [ f o h ]) (A [ g o h ])) ⟩ |
212 | 537 (g o h) o e (eqa (f o h) ( g o h )) |
538 ≈↑⟨ assoc ⟩ | |
539 g o ( h o e (eqa (f o h) ( g o h ))) | |
540 ∎ | |
226 | 541 lemma-b2 : {d : Obj A} {h : Hom A d a} → A [ |
214 | 542 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 | 543 ≈ A [ h o e (eqa (A [ f o h ]) (A [ g o h ])) ] ] |
226 | 544 lemma-b2 {d} {h} = let open ≈-Reasoning (A) in |
212 | 545 begin |
215 | 546 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) |
547 ≈⟨ ek=h (eqa f g) ⟩ | |
212 | 548 h o e (eqa (f o h ) ( g o h )) |
549 ∎ | |
226 | 550 lemma-b4 : {d : Obj A} {j : Hom A d c} → A [ |
222 | 551 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 ] ])) ]) |
552 (lemma-equ4 {a} {b} {c} f g (A [ e (eqa f g) o j ])) o | |
553 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 ] ])) ] | |
554 ≈ j ] | |
226 | 555 lemma-b4 {d} {j} = let open ≈-Reasoning (A) in |
215 | 556 begin |
222 | 557 ( 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 ) ))) )) |
558 (lemma-equ4 {a} {b} {c} f g (( e (eqa f g) o j ))) o | |
559 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 ) ))) ) | |
215 | 560 ≈⟨ car ( uniqueness (eqa f g) ( begin |
222 | 561 e (eqa f g) o j |
215 | 562 ≈⟨ {!!} ⟩ |
222 | 563 (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)) |
215 | 564 ∎ )) ⟩ |
222 | 565 j o 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 ) ))) |
566 ≈⟨ cdr ( uniqueness (eqa (( f o ( e (eqa f g) o j ) )) (( f o ( e (eqa f g) o j ) ))) ( begin | |
567 e (eqa (f o e (eqa f g) o j) (f o e (eqa f g) o j)) o id1 A d | |
568 ≈⟨ idR ⟩ | |
569 e (eqa (f o e (eqa f g) o j) (f o e (eqa f g) o j)) | |
215 | 570 ≈⟨ {!!} ⟩ |
222 | 571 id1 A d |
215 | 572 ∎ )) ⟩ |
222 | 573 j o id1 A d |
215 | 574 ≈⟨ idR ⟩ |
222 | 575 j |
215 | 576 ∎ |
211 | 577 |
578 | |
225 | 579 -- end |
212 | 580 |
581 | |
582 | |
215 | 583 |
584 |