Mercurial > hg > Members > kono > Proof > category
annotate src/equalizer.agda @ 1124:f683d96fbc93 default tip
safe fix done
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 07 Jul 2024 22:28:50 +0900 |
parents | 45de2b31bf02 |
children |
rev | line source |
---|---|
1110
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
1 {-# OPTIONS --cubical-compatible --safe #-} |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
2 |
205 | 3 --- |
4 -- | |
5 -- Equalizer | |
6 -- | |
208 | 7 -- e f |
300 | 8 -- c -------→ a ---------→ b |
9 -- ^ . ---------→ | |
205 | 10 -- | . g |
230 | 11 -- |k . |
12 -- | . h | |
13 -- d | |
205 | 14 -- |
15 -- Shinji KONO <kono@ie.u-ryukyu.ac.jp> | |
16 ---- | |
17 | |
230 | 18 open import Category -- https://github.com/konn/category-agda |
205 | 19 open import Level |
20 module equalizer { c₁ c₂ ℓ : Level} { A : Category c₁ c₂ ℓ } where | |
21 | |
22 open import HomReasoning | |
1110
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
23 open import Definitions |
205 | 24 |
230 | 25 -- |
225 | 26 -- Some obvious conditions for k (fe = ge) → ( fh = gh ) |
27 -- | |
219 | 28 |
224 | 29 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 ] ] |
30 f1=g1 eq h = let open ≈-Reasoning (A) in (resp refl-hom eq ) | |
31 | |
226 | 32 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 | 33 f1=f1 f = let open ≈-Reasoning (A) in refl-hom |
226 | 34 |
224 | 35 f1=gh : { a b c d : Obj A } {f g : Hom A a b } → { e : Hom A c a } → { h : Hom A d c } → |
36 (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 | 37 f1=gh {a} {b} {c} {d} {f} {g} {e} {h} eq = let open ≈-Reasoning (A) in |
224 | 38 begin |
39 f o ( e o h ) | |
40 ≈⟨ assoc ⟩ | |
230 | 41 (f o e ) o h |
224 | 42 ≈⟨ car eq ⟩ |
230 | 43 (g o e ) o h |
224 | 44 ≈↑⟨ assoc ⟩ |
45 g o ( e o h ) | |
46 ∎ | |
219 | 47 |
956 | 48 -- |
49 -- Burroni's Flat Equational Definition of Equalizer | |
50 -- | |
51 | |
958 | 52 record Burroni : Set (ℓ ⊔ (c₁ ⊔ c₂)) where |
956 | 53 field |
54 equ : {a b : Obj A } → (f g : Hom A a b) → Obj A | |
55 α : {a b : Obj A } → (f g : Hom A a b) → Hom A (equ f g) a | |
56 γ : {a b d : Obj A } → (f g : Hom A a b) → (h : Hom A d a ) → Hom A (equ (A [ f o h ]) (A [ g o h ])) (equ f g) | |
57 δ : {a b : Obj A } → (f g : Hom A a b) → A [ f ≈ g ] → Hom A a (equ f g) | |
958 | 58 b1 : {a b : Obj A } → (f g : Hom A a b) → A [ A [ f o α f g ] ≈ A [ g o α f g ] ] |
59 b1k : {a b : Obj A } → (f g : Hom A a b) → {d : Obj A } {k : Hom A d (equ f g)} → A [ A [ f o A [ α f g o k ] ] ≈ A [ g o A [ α f g o k ] ] ] | |
60 b1k f g {d} {k} = ≈-Reasoning.trans-hom A (≈-Reasoning.assoc A) (≈-Reasoning.trans-hom A (≈-Reasoning.car A (b1 f g)) (≈-Reasoning.sym A (≈-Reasoning.assoc A))) | |
956 | 61 field |
958 | 62 b2 : {a b d : Obj A} {h : Hom A d a } → (f g : Hom A a b) → A [ A [ ( α f g ) o (γ f g h) ] ≈ A [ h o α (A [ f o h ]) (A [ g o h ]) ] ] |
63 b3 : {a b : Obj A} (f g : Hom A a b) → (f=g : A [ f ≈ g ]) → A [ A [ α f g o δ f g f=g ] ≈ id1 A a ] | |
64 b4 : {a b d : Obj A} (f g : Hom A a b) → {k : Hom A d (equ f g)} → | |
65 A [ A [ γ f g ( A [ α f g o k ] ) o ( δ (A [ f o A [ α f g o k ] ] ) (A [ g o A [ α f g o k ] ] ) (f1=gh (b1 f g) ) )] ≈ k ] | |
956 | 66 β : { d a b : Obj A} → (f g : Hom A a b) → (h : Hom A d a ) → A [ A [ f o h ] ≈ A [ g o h ] ] → Hom A d (equ f g) |
67 β {d} {a} {b} f g h eq = A [ γ f g h o δ (A [ f o h ]) (A [ g o h ]) eq ] | |
68 | |
69 open Equalizer | |
70 open IsEqualizer | |
71 open Burroni | |
72 | |
255
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
73 ------------------------------- |
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
74 -- |
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
75 -- Every equalizer is monic |
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
76 -- |
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
77 -- e i = e j → i = j |
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
78 -- |
259 | 79 -- e eqa f g f |
300 | 80 -- c ---------→ a ------→b |
259 | 81 -- ^^ |
82 -- || | |
83 -- i||j | |
84 -- || | |
85 -- d | |
255
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
86 |
963 | 87 monic : { a b d : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A f g) |
954 | 88 → { i j : Hom A d (equalizer-c eqa) } |
255
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
89 → A [ A [ equalizer eqa o i ] ≈ A [ equalizer eqa o j ] ] → A [ i ≈ j ] |
963 | 90 monic {a} {b} {d} {f} {g} eqa {i} {j} ei=ej = let open ≈-Reasoning (A) in begin |
255
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
91 i |
443 | 92 ≈↑⟨ uniqueness (isEqualizer eqa) ( begin |
255
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
93 equalizer eqa o i |
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
94 ≈⟨ ei=ej ⟩ |
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
95 equalizer eqa o j |
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
96 ∎ )⟩ |
443 | 97 k (isEqualizer eqa) (equalizer eqa o j) ( f1=gh (fe=ge (isEqualizer eqa) ) ) |
98 ≈⟨ uniqueness (isEqualizer eqa) ( begin | |
257 | 99 equalizer eqa o j |
100 ≈⟨⟩ | |
101 equalizer eqa o j | |
102 ∎ )⟩ | |
255
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
103 j |
443 | 104 ∎ |
255
7e7b2c38dee1
every equalizer is monic
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
254
diff
changeset
|
105 |
251 | 106 -------------------------------- |
225 | 107 -- |
108 -- | |
259 | 109 -- Isomorphic arrows from c' to c makes another equalizer |
225 | 110 -- |
230 | 111 -- e eqa f g f |
300 | 112 -- c ---------→ a ------→b |
230 | 113 -- |^ |
114 -- || | |
222 | 115 -- h || h-1 |
230 | 116 -- v| |
117 -- c' | |
222 | 118 |
443 | 119 equalizer+iso : {a b c' : Obj A } {f g : Hom A a b } → |
1069 | 120 ( eqa : Equalizer A f g ) → (iso : Iso A c' (equalizer-c eqa) ) |
121 → IsEqualizer A (A [ equalizer eqa o Iso.≅→ iso ] ) f g -- h-1 | |
122 equalizer+iso {a} {b} {c'} {f} {g} eqa iso = record { | |
222 | 123 fe=ge = fe=ge1 ; |
443 | 124 k = λ j eq → A [ h o k (isEqualizer eqa) j eq ] ; |
230 | 125 ek=h = ek=h1 ; |
222 | 126 uniqueness = uniqueness1 |
127 } where | |
1069 | 128 h-1 : Hom A c' (equalizer-c eqa) |
129 h-1 = Iso.≅→ iso | |
130 h : Hom A (equalizer-c eqa) c' | |
131 h = Iso.≅← iso | |
443 | 132 e = equalizer eqa |
234 | 133 fe=ge1 : A [ A [ f o A [ e o h-1 ] ] ≈ A [ g o A [ e o h-1 ] ] ] |
443 | 134 fe=ge1 = f1=gh ( fe=ge (isEqualizer eqa) ) |
222 | 135 ek=h1 : {d : Obj A} {j : Hom A d a} {eq : A [ A [ f o j ] ≈ A [ g o j ] ]} → |
443 | 136 A [ A [ A [ e o h-1 ] o A [ h o k (isEqualizer eqa) j eq ] ] ≈ j ] |
222 | 137 ek=h1 {d} {j} {eq} = let open ≈-Reasoning (A) in |
138 begin | |
443 | 139 ( e o h-1 ) o ( h o k (isEqualizer eqa) j eq ) |
234 | 140 ≈↑⟨ assoc ⟩ |
443 | 141 e o ( h-1 o ( h o k (isEqualizer eqa) j eq ) ) |
234 | 142 ≈⟨ cdr assoc ⟩ |
443 | 143 e o (( h-1 o h) o k (isEqualizer eqa) j eq ) |
1069 | 144 ≈⟨ cdr (car ( Iso.iso← iso) ) ⟩ |
443 | 145 e o (id1 A (equalizer-c eqa) o k (isEqualizer eqa) j eq ) |
234 | 146 ≈⟨ cdr idL ⟩ |
443 | 147 e o k (isEqualizer eqa) j eq |
148 ≈⟨ ek=h (isEqualizer eqa) ⟩ | |
222 | 149 j |
443 | 150 ∎ |
222 | 151 uniqueness1 : {d : Obj A} {h' : Hom A d a} {eq : A [ A [ f o h' ] ≈ A [ g o h' ] ]} {j : Hom A d c'} → |
234 | 152 A [ A [ A [ e o h-1 ] o j ] ≈ h' ] → |
443 | 153 A [ A [ h o k (isEqualizer eqa) h' eq ] ≈ j ] |
222 | 154 uniqueness1 {d} {h'} {eq} {j} ej=h = let open ≈-Reasoning (A) in |
155 begin | |
443 | 156 h o k (isEqualizer eqa) h' eq |
157 ≈⟨ cdr (uniqueness (isEqualizer eqa) ( begin | |
234 | 158 e o ( h-1 o j ) |
159 ≈⟨ assoc ⟩ | |
160 (e o h-1 ) o j | |
161 ≈⟨ ej=h ⟩ | |
162 h' | |
163 ∎ )) ⟩ | |
164 h o ( h-1 o j ) | |
165 ≈⟨ assoc ⟩ | |
166 (h o h-1 ) o j | |
1069 | 167 ≈⟨ car (Iso.iso→ iso) ⟩ |
253 | 168 id c' o j |
234 | 169 ≈⟨ idL ⟩ |
222 | 170 j |
171 ∎ | |
172 | |
1018 | 173 |
174 equalizerIso : {a b c : Obj A} → (f g : Hom A a b ) → (equ : Equalizer A f g ) | |
1069 | 175 → (m : Hom A c a) → ( iso : Iso A c (equalizer-c equ)) |
176 → ( mm : A [ A [ equalizer equ o Iso.≅→ iso ] ≈ m ] ) | |
1018 | 177 → IsEqualizer A m f g |
1069 | 178 equalizerIso {a} {b} {c} f g equ m iso mm = record { |
1018 | 179 fe=ge = fe-ge |
1069 | 180 ; k = λ {d} h eq → A [ Iso.≅← iso o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ] |
1018 | 181 ; ek=h = ek=h1 |
182 ; uniqueness = uniqueness1 } where | |
183 ker : Hom A ( equalizer-c equ ) a | |
184 ker = equalizer equ | |
185 fe-ge : A [ A [ f o m ] ≈ A [ g o m ] ] | |
186 fe-ge = begin | |
187 f o m ≈↑⟨ cdr mm ⟩ | |
1069 | 188 f o (equalizer equ o Iso.≅→ iso) ≈⟨ assoc ⟩ |
189 (f o equalizer equ) o Iso.≅→ iso ≈⟨ car ( IsEqualizer.fe=ge (Equalizer.isEqualizer equ) ) ⟩ | |
190 (g o equalizer equ ) o Iso.≅→ iso ≈↑⟨ assoc ⟩ | |
191 g o (equalizer equ o Iso.≅→ iso) ≈⟨ cdr mm ⟩ | |
1018 | 192 g o m ∎ where open ≈-Reasoning A |
193 ek=h1 : {d : Obj A} {h : Hom A d a} | |
194 {eq : A [ A [ f o h ] ≈ A [ g o h ] ]} → | |
1069 | 195 A [ A [ m o (A Category.o Iso.≅← iso) (IsEqualizer.k (isEqualizer equ) h eq) ] ≈ h ] |
1018 | 196 ek=h1 {d} {h} {eq} = begin |
1069 | 197 m o ( Iso.≅← iso o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ) ≈↑⟨ car mm ⟩ |
198 (equalizer equ o Iso.≅→ iso) o ( Iso.≅← iso o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ) ≈↑⟨ assoc ⟩ | |
199 _ o (Iso.≅→ iso o ( Iso.≅← iso o IsEqualizer.k (Equalizer.isEqualizer equ) h eq )) ≈⟨ cdr assoc ⟩ | |
200 equalizer equ o ((Iso.≅→ iso o Iso.≅← iso) o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ) ≈⟨ cdr (car (Iso.iso← iso)) ⟩ | |
1018 | 201 equalizer equ o (id1 A _ o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ) ≈⟨ cdr idL ⟩ |
202 equalizer equ o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ≈⟨ IsEqualizer.ek=h (isEqualizer equ) ⟩ | |
203 h ∎ where open ≈-Reasoning A | |
204 uniqueness1 : {d : Obj A} {h : Hom A d a} | |
205 {eq : A [ A [ f o h ] ≈ A [ g o h ] ]} | |
206 {k' : Hom A d c} → A [ A [ m o k' ] ≈ h ] | |
1069 | 207 → A [ (A Category.o Iso.≅← iso) (IsEqualizer.k (isEqualizer equ) h eq) ≈ k' ] |
1018 | 208 uniqueness1 {d} {h} {eq} {k'} eqk = begin |
1069 | 209 Iso.≅← iso o (IsEqualizer.k (isEqualizer equ) h eq) ≈⟨ cdr ( IsEqualizer.uniqueness (Equalizer.isEqualizer equ) ( begin |
210 equalizer equ o ((Iso.≅→ iso) o k' ) ≈⟨ assoc ⟩ | |
211 (equalizer equ o Iso.≅→ iso) o k' ≈⟨ car mm ⟩ | |
1018 | 212 m o k' ≈⟨ eqk ⟩ |
213 h ∎ )) ⟩ | |
1069 | 214 Iso.≅← iso o ( Iso.≅→ iso o k' ) ≈⟨ assoc ⟩ |
215 (Iso.≅← iso o Iso.≅→ iso ) o k' ≈⟨ car (Iso.iso→ iso )⟩ | |
1018 | 216 id1 A _ o k' ≈⟨ idL ⟩ |
217 k' ∎ where open ≈-Reasoning A | |
218 mequ : Equalizer A f g | |
219 mequ = record { equalizer-c = c ; equalizer = m ; isEqualizer = record { | |
220 fe=ge = fe-ge | |
1069 | 221 ; k = λ {d} h fh=gh → A [ Iso.≅← iso o IsEqualizer.k (Equalizer.isEqualizer equ) h fh=gh ] |
1018 | 222 ; ek=h = ek=h1 |
223 ; uniqueness = uniqueness1 | |
224 } } | |
225 | |
251 | 226 -------------------------------- |
225 | 227 -- |
228 -- If we have two equalizers on c and c', there are isomorphic pair h, h' | |
229 -- | |
230 -- h : c → c' h' : c' → c | |
233
4bba19bc71be
e is now explict parameter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
232
diff
changeset
|
231 -- e' = h o e |
4bba19bc71be
e is now explict parameter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
232
diff
changeset
|
232 -- e = h' o e' |
259 | 233 -- |
234 -- | |
235 -- | |
236 -- e eqa f g f | |
300 | 237 -- c ---------→a ------→b |
259 | 238 -- ^ ^ g |
239 -- | | | |
240 -- |k = id c' | | |
241 -- v | | |
242 -- c'-----------+ | |
243 -- e eqa' f g | |
225 | 244 |
233
4bba19bc71be
e is now explict parameter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
232
diff
changeset
|
245 c-iso-l : { c c' a b : Obj A } {f g : Hom A a b } → {e : Hom A c a } { e' : Hom A c' a } |
443 | 246 ( eqa : IsEqualizer A e f g) → ( eqa' : IsEqualizer A e' f g ) |
258 | 247 → Hom A c c' |
443 | 248 c-iso-l {c} {c'} {a} {b} {f} {g} {e} eqa eqa' = k eqa' e ( fe=ge eqa ) |
223 | 249 |
258 | 250 c-iso-r : { c c' a b : Obj A } {f g : Hom A a b } → {e : Hom A c a } { e' : Hom A c' a } |
443 | 251 ( eqa : IsEqualizer A e f g) → ( eqa' : IsEqualizer A e' f g ) |
258 | 252 → Hom A c' c |
443 | 253 c-iso-r {c} {c'} {a} {b} {f} {g} {e} {e'} eqa eqa' = k eqa e' ( fe=ge eqa' ) |
228 | 254 |
258 | 255 c-iso-lr : { c c' a b : Obj A } {f g : Hom A a b } → {e : Hom A c a } { e' : Hom A c' a } |
443 | 256 ( eqa : IsEqualizer A e f g) → ( eqa' : IsEqualizer A e' f g ) → |
258 | 257 A [ A [ c-iso-l eqa eqa' o c-iso-r eqa eqa' ] ≈ id1 A c' ] |
258 c-iso-lr {c} {c'} {a} {b} {f} {g} {e} {e'} eqa eqa' = let open ≈-Reasoning (A) in begin | |
259 c-iso-l eqa eqa' o c-iso-r eqa eqa' | |
250 | 260 ≈⟨⟩ |
443 | 261 k eqa' e ( fe=ge eqa ) o k eqa e' ( fe=ge eqa' ) |
258 | 262 ≈↑⟨ uniqueness eqa' ( begin |
443 | 263 e' o ( k eqa' e (fe=ge eqa) o k eqa e' (fe=ge eqa') ) |
258 | 264 ≈⟨ assoc ⟩ |
443 | 265 ( e' o k eqa' e (fe=ge eqa) ) o k eqa e' (fe=ge eqa') |
258 | 266 ≈⟨ car (ek=h eqa') ⟩ |
443 | 267 e o k eqa e' (fe=ge eqa') |
258 | 268 ≈⟨ ek=h eqa ⟩ |
269 e' | |
270 ∎ )⟩ | |
271 k eqa' e' ( fe=ge eqa' ) | |
272 ≈⟨ uniqueness eqa' ( begin | |
273 e' o id c' | |
250 | 274 ≈⟨ idR ⟩ |
258 | 275 e' |
276 ∎ )⟩ | |
253 | 277 id c' |
229
68b2681ea9df
c in equalizer is equal up to iso done.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
228
diff
changeset
|
278 ∎ |
226 | 279 |
258 | 280 -- c-iso-rl is obvious from the symmetry |
234 | 281 |
1073 | 282 equ-iso : { c c' a b : Obj A } {f g : Hom A a b } → {e : Hom A c a } { e' : Hom A c' a } |
283 ( eqa : IsEqualizer A e f g) → ( eqa' : IsEqualizer A e' f g ) | |
284 → Iso A c c' | |
285 equ-iso eqa eqa' = record { | |
286 ≅→ = c-iso-l eqa eqa' | |
287 ; ≅← = c-iso-r eqa eqa' | |
288 ; iso→ = c-iso-lr eqa' eqa | |
289 ; iso← = c-iso-lr eqa eqa' | |
290 } | |
291 | |
1074 | 292 |
954 | 293 -- |
294 -- we cannot have equalizer ≈ id. we only have Iso A (equalizer-c equ) a | |
295 -- | |
296 equ-ff : {a b : Obj A} → (f : Hom A a b ) → IsEqualizer A (id1 A a) f f | |
297 equ-ff {a} {b} f = record { | |
298 fe=ge = ≈-Reasoning.refl-hom A ; | |
299 k = λ {d} h eq → h ; | |
300 ek=h = λ {d} {h} {eq} → ≈-Reasoning.idL A ; | |
301 uniqueness = λ {d} {h} {eq} {k'} ek=h → begin | |
302 h | |
303 ≈↑⟨ ek=h ⟩ | |
304 id1 A a o k' | |
305 ≈⟨ idL ⟩ | |
306 k' | |
307 ∎ | |
308 } where open ≈-Reasoning A | |
230 | 309 |
443 | 310 |
251 | 311 -------------------------------- |
225 | 312 ---- |
313 -- | |
254 | 314 -- Existence of equalizer satisfies Burroni equations |
225 | 315 -- |
316 ---- | |
317 | |
958 | 318 lemma-equ1 : ({a b : Obj A} (f g : Hom A a b) → Equalizer A f g ) → Burroni |
319 lemma-equ1 eqa = record { | |
955 | 320 equ = λ f g → equalizer-c (eqa f g) |
321 ; α = λ f g → equalizer (eqa f g) | |
322 ; γ = λ f g h → k (isEqualizer (eqa f g )) ( A [ h o (equalizer ( eqa (A [ f o h ] ) (A [ g o h ] ))) ] ) | |
956 | 323 (lemma-equ4 f g h) |
324 ; δ = λ {a} {b} f g f=g → k (isEqualizer (eqa {a} {b} f g )) {a} (id1 A a) (f1=g1 f=g _ ) | |
958 | 325 ; b1 = λ f g → fe=ge (isEqualizer (eqa f g )) |
956 | 326 ; b2 = lemma-b2 |
958 | 327 ; b3 = λ {a } {b} f g f=g → lemma-b3 f g f=g |
956 | 328 ; b4 = lemma-b4 |
329 } where | |
330 ieqa : {a b : Obj A} (f g : Hom A a b) → IsEqualizer A ( equalizer (eqa f g )) f g | |
331 ieqa f g = isEqualizer (eqa f g) | |
958 | 332 lemma-b3 : {a b : Obj A} (f g : Hom A a b ) |
956 | 333 → (f=g : A [ f ≈ g ] ) → A [ A [ equalizer (eqa f g ) o k (isEqualizer (eqa f g)) (id1 A a) (f1=g1 f=g _ ) ] ≈ id1 A a ] |
334 lemma-b3 {a} f g f=g = let open ≈-Reasoning (A) in | |
335 begin | |
336 equalizer (eqa f g) o k (isEqualizer (eqa f g)) (id a) (f1=g1 f=g _ ) | |
337 ≈⟨ ek=h (isEqualizer (eqa f g )) ⟩ | |
338 id a | |
339 ∎ | |
340 lemma-equ4 : {a b d : Obj A} → (f : Hom A a b) → (g : Hom A a b ) → (h : Hom A d a ) → | |
341 A [ A [ f o A [ h o equalizer (eqa (A [ f o h ]) (A [ g o h ])) ] ] ≈ A [ g o A [ h o equalizer (eqa (A [ f o h ]) (A [ g o h ])) ] ] ] | |
342 lemma-equ4 {a} {b} {d} f g h = let open ≈-Reasoning (A) in | |
343 begin | |
344 f o ( h o equalizer (eqa (f o h) ( g o h ))) | |
345 ≈⟨ assoc ⟩ | |
346 (f o h) o equalizer (eqa (f o h) ( g o h )) | |
347 ≈⟨ fe=ge (isEqualizer (eqa (A [ f o h ]) (A [ g o h ]))) ⟩ | |
348 (g o h) o equalizer (eqa (f o h) ( g o h )) | |
349 ≈↑⟨ assoc ⟩ | |
350 g o ( h o equalizer (eqa (f o h) ( g o h ))) | |
351 ∎ | |
958 | 352 lemma-b2 : {a b d : Obj A} {h : Hom A d a} → (f g : Hom A a b) → A [ |
956 | 353 A [ equalizer (eqa f g) o k (isEqualizer (eqa f g)) (A [ h o equalizer (eqa (A [ f o h ]) (A [ g o h ])) ]) (lemma-equ4 {a} {b} f g h) ] |
354 ≈ A [ h o equalizer (eqa (A [ f o h ]) (A [ g o h ])) ] ] | |
958 | 355 lemma-b2 {a} {b} {d} {h} f g = let open ≈-Reasoning (A) in |
956 | 356 begin |
357 equalizer (eqa f g) o k (isEqualizer (eqa f g)) (h o equalizer (eqa (f o h) (g o h))) (lemma-equ4 {a} {b} f g h) | |
358 ≈⟨ ek=h (isEqualizer (eqa f g)) ⟩ | |
359 h o equalizer (eqa (f o h ) ( g o h )) | |
360 ∎ | |
958 | 361 lemma-b4 : {a b d : Obj A} (f g : Hom A a b) → {j : Hom A d (equalizer-c (eqa f g))} → A [ |
956 | 362 A [ k (ieqa f g) (A [ A [ equalizer (eqa f g) o j ] o |
363 equalizer (eqa (A [ f o A [ equalizer (eqa f g ) o j ] ]) (A [ g o A [ equalizer (eqa f g ) o j ] ])) ]) | |
364 (lemma-equ4 {a} {b} {d} f g (A [ equalizer (eqa f g) o j ])) | |
365 o k (ieqa (A [ f o A [ equalizer (eqa f g) o j ] ]) (A [ g o A [ equalizer (eqa f g) o j ] ])) (id1 A _) | |
366 (f1=g1 (f1=gh (fe=ge (ieqa f g))) (id1 A _))] ≈ j ] | |
957 | 367 -- h = equalizer (eqa f g) o j |
958 | 368 lemma-b4 {a} {b} {d} f g {j} = |
956 | 369 begin |
958 | 370 k (ieqa f g) ( h o equalizer (eqa ( f o h ) ( g o h )) ) (lemma-equ4 {a} {b} {d} f g h) |
957 | 371 o k (ieqa (f o h) ( g o h)) (id1 A _) (f1=g1 (f1=gh (fe=ge (ieqa f g))) (id1 A _)) |
372 ≈↑⟨ uniqueness (ieqa f g) ( begin | |
373 equalizer (eqa f g) o ( k (ieqa f g) (( h o equalizer (eqa ( f o h ) ( g o h )) )) (lemma-equ4 {a} {b} {d} f g h) | |
374 o k (ieqa (f o h) ( g o h)) (id1 A _) (f1=g1 (f1=gh (fe=ge (ieqa f g))) (id1 A _)) ) | |
375 ≈⟨ assoc ⟩ | |
376 (equalizer (eqa f g) o ( k (ieqa f g) (( h o equalizer (eqa ( f o h ) ( g o h )) )) (lemma-equ4 {a} {b} {d} f g h))) | |
377 o k (ieqa (f o h) ( g o h)) (id1 A _) (f1=g1 (f1=gh (fe=ge (ieqa f g))) (id1 A _)) | |
378 ≈⟨ car (ek=h (ieqa f g) ) ⟩ | |
379 (( h o equalizer (eqa ( f o h ) ( g o h )) )) | |
380 o k (ieqa (f o h) ( g o h)) (id1 A _) (f1=g1 (f1=gh (fe=ge (ieqa f g))) (id1 A _)) | |
381 ≈↑⟨ assoc ⟩ | |
382 h o (equalizer (eqa ( f o h ) ( g o h )) o k (ieqa (f o h) ( g o h)) (id1 A _) (f1=g1 (f1=gh (fe=ge (ieqa f g))) (id1 A _))) | |
383 ≈⟨ cdr (ek=h (ieqa (f o h) ( g o h))) ⟩ | |
384 h o id1 A _ | |
385 ≈⟨ idR ⟩ | |
386 h | |
387 ∎ | |
388 ) ⟩ | |
389 k (ieqa f g) h (f1=gh (fe=ge (ieqa f g)) ) | |
390 ≈⟨ uniqueness (ieqa f g) refl-hom ⟩ | |
956 | 391 j |
957 | 392 ∎ where |
393 open ≈-Reasoning A | |
394 h : Hom A d a | |
395 h = equalizer (eqa f g) o j | |
1018 | 396 -- cong-γ1 : {a b c d : Obj A } → {f g : Hom A a b} {h h' : Hom A d a } → A [ h ≈ h' ] → |
397 -- A [ k (ieqa f g ) {_} ( A [ h o (equalizer1 ( ieqa (A [ f o h ] ) (A [ g o h ] ) )) ] ) (lemma-equ4 {a} {b} {d} f g h ) | |
398 -- ≈ A [ k (ieqa f g ) {_} ( A [ h' o (equalizer1 ( ieqa (A [ f o h' ] ) (A [ g o h' ] ) )) ] ) (lemma-equ4 {a} {b} {d} f g h' ) o {!!} ] ] | |
399 -- cong-γ1 {a} {b} {c} {d} {f} {g} {h} {h'} h=h' = let open ≈-Reasoning (A) in begin | |
400 -- k (ieqa f g ) {_} ( A [ h o (equalizer1 ( ieqa (A [ f o h ] ) (A [ g o h ] ))) ] ) (lemma-equ4 {a} {b} {d} f g h ) | |
401 -- ≈⟨ uniqueness (ieqa f g) {!!} ⟩ | |
402 -- {!!} -- k (ieqa f g ) {_} ( A [ h' o (equalizer1 ( ieqa (A [ f o h' ] ) (A [ g o h' ] ))) ] ) (lemma-equ4 {a} {b} {d} f g h' ) | |
403 -- ∎ | |
404 -- cong-δ1 : {a b c : Obj A} {e : Hom A c a } {f f' : Hom A a b} → A [ f ≈ f' ] → A [ k (ieqa f f ) (id1 A a) (f1=f1 f) ≈ | |
405 -- A [ {!!} o k (ieqa f' f' ) (id1 A a) (f1=f1 f') ] ] | |
406 -- cong-δ1 {a} {b} {c} {e} {f} {f'} f=f' = let open ≈-Reasoning (A) in | |
407 -- begin | |
408 -- k (ieqa f f ) (id a) (f1=f1 f) | |
409 -- ≈⟨ uniqueness (ieqa f f) {!!} ⟩ | |
410 -- {!!} -- k (ieqa f' f' ) (id a) (f1=f1 f') | |
411 -- ∎ | |
412 | |
956 | 413 |
211 | 414 |
251 | 415 -------------------------------- |
416 -- | |
417 -- Bourroni equations gives an Equalizer | |
418 -- | |
211 | 419 |
1110
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
420 -- emma-equ2 : {a b : Obj A} (f g : Hom A a b) → ( bur : Burroni ) → IsEqualizer A {equ bur f g} {a} {b} (α bur f g ) f g |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
421 -- emma-equ2 {a} {b} f g bur = record { |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
422 -- fe=ge = fe=ge1 ; |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
423 -- k = k1 ; |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
424 -- ek=h = λ {d} {h} {eq} → ek=h1 {d} {h} {eq} ; |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
425 -- uniqueness = λ {d} {h} {eq} {k'} ek=h → uniqueness1 {d} {h} {eq} {k'} ek=h |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
426 -- } where |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
427 -- c : Obj A |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
428 -- c = equ bur f g |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
429 -- e : Hom A c a |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
430 -- e = α bur f g |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
431 -- k1 : {d : Obj A} (h : Hom A d a) → A [ A [ f o h ] ≈ A [ g o h ] ] → Hom A d c |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
432 -- k1 {d} h fh=gh = β bur {d} {a} {b} f g h fh=gh |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
433 -- fe=ge1 : A [ A [ f o (α bur f g ) ] ≈ A [ g o (α bur f g ) ] ] |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
434 -- fe=ge1 = b1 bur f g |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
435 -- ek=h1 : {d : Obj A} → ∀ {h : Hom A d a} → {eq : A [ A [ f o h ] ≈ A [ g o h ] ] } → A [ A [ (α bur f g ) o k1 {d} h eq ] ≈ h ] |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
436 -- ek=h1 {d} {h} {eq} = let open ≈-Reasoning (A) in |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
437 -- begin |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
438 -- α bur f g o k1 h eq |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
439 -- ≈⟨ assoc ⟩ |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
440 -- (α bur f g o γ bur f g h) o δ bur (f o h) (g o h) eq |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
441 -- ≈⟨ car (b2 bur f g) ⟩ |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
442 -- ( h o α bur ( f o h ) ( g o h ) ) o δ bur (f o h) (g o h) eq |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
443 -- ≈↑⟨ assoc ⟩ |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
444 -- h o α bur (f o h) (g o h) o δ bur (f o h) (g o h) eq |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
445 -- ≈⟨ cdr ( b3 bur (f o h) (g o h) eq ) ⟩ |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
446 -- h o id d |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
447 -- ≈⟨ idR ⟩ |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
448 -- h |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
449 -- ∎ |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
450 -- |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
451 -- - e f |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
452 -- - c -------→ a ---------→ b |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
453 -- - ^ . ---------→ |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
454 -- - | . g |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
455 -- - |k . |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
456 -- - | . h |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
457 -- - d |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
458 -- |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
459 -- |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
460 -- uniqueness1 : {d : Obj A} → ∀ {h : Hom A d a} → {eq : A [ A [ f o h ] ≈ A [ g o h ] ] } → {k' : Hom A d c } → |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
461 -- A [ A [ (α bur f g ) o k' ] ≈ h ] → A [ k1 {d} h eq ≈ k' ] |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
462 -- uniqueness1 {d} {h} {eq} {k'} ek=h = |
962 | 463 -- begin |
464 -- k1 {d} h eq | |
465 -- ≈⟨⟩ | |
466 -- γ bur f g h o δ bur (f o h) (g o h) eq | |
467 -- ≈⟨ ? ⟩ -- without locality, we cannot simply replace h with (α bur f g o k' | |
468 -- γ bur f g (α bur f g o k' ) o (δ bur ( f o ( α bur f g o k' )) ( g o ( α bur f g o k' )) (f1=gh (b1 bur f g ))) | |
469 -- ≈⟨ b4 bur f g ⟩ | |
470 -- k' | |
1110
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
471 -- ∎ where open ≈-Reasoning A |
45de2b31bf02
add original library and fix for safe mode
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
1074
diff
changeset
|
472 -- |
225 | 473 -- end |
212 | 474 |
475 | |
476 | |
215 | 477 |
478 |