Mercurial > hg > Members > kono > Proof > category
comparison src/CCCSets.agda @ 1032:c3b3faa791fa sets-topos
topos of Sets done
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 30 Mar 2021 23:30:55 +0900 |
parents | 52c98490c877 |
children | 40c39d3e6a75 |
comparison
equal
deleted
inserted
replaced
1031:52c98490c877 | 1032:c3b3faa791fa |
---|---|
158 ; isEqualizer = SetsIsEqualizer _ _ _ _ } | 158 ; isEqualizer = SetsIsEqualizer _ _ _ _ } |
159 tchar : {a b : Obj Sets} (m : Hom Sets b a) → (mono : Mono Sets m ) → a → Bool {c} | 159 tchar : {a b : Obj Sets} (m : Hom Sets b a) → (mono : Mono Sets m ) → a → Bool {c} |
160 tchar {a} {b} m mono y with lem (image m y ) | 160 tchar {a} {b} m mono y with lem (image m y ) |
161 ... | case1 t = true | 161 ... | case1 t = true |
162 ... | case2 f = false | 162 ... | case2 f = false |
163 | |
163 open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ ) | 164 open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ ) |
164 img-cong : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (mono : Mono Sets m ) → (y y' : a) → y ≡ y' → (s : image m y ) (t : image m y') → s ≅ t | 165 img-cong : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (mono : Mono Sets m ) → (y y' : a) → y ≡ y' → (s : image m y ) (t : image m y') → s ≅ t |
165 img-cong {a} {b} m mono .(m x) .(m x₁) eq (isImage x) (isImage x₁) | 166 img-cong {a} {b} m mono .(m x) .(m x₁) eq (isImage x) (isImage x₁) |
166 with cong (λ k → k ! ) ( Mono.isMono mono {One} (λ _ → x) (λ _ → x₁ ) ( extensionality Sets ( λ _ → eq )) ) | 167 with cong (λ k → k ! ) ( Mono.isMono mono {One} (λ _ → x) (λ _ → x₁ ) ( extensionality Sets ( λ _ → eq )) ) |
167 ... | refl = HE.refl | 168 ... | refl = HE.refl |
168 image-iso : {a b : Obj (Sets {c})} (m : Hom Sets b a) → (mono : Mono Sets m ) (y : a) → (i0 i1 : image m y ) → i0 ≡ i1 | 169 image-uniq : {a b : Obj (Sets {c})} (m : Hom Sets b a) → (mono : Mono Sets m ) (y : a) → (i0 i1 : image m y ) → i0 ≡ i1 |
169 image-iso {a} {b} m mono y i0 i1 = HE.≅-to-≡ (img-cong m mono y y refl i0 i1) | 170 image-uniq {a} {b} m mono y i0 i1 = HE.≅-to-≡ (img-cong m mono y y refl i0 i1) |
170 tchar¬Img : {a b : Obj Sets} (m : Hom Sets b a) → (mono : Mono Sets m ) (y : a) → tchar m mono y ≡ false → ¬ image m y | 171 tchar¬Img : {a b : Obj Sets} (m : Hom Sets b a) → (mono : Mono Sets m ) (y : a) → tchar m mono y ≡ false → ¬ image m y |
171 tchar¬Img m mono y eq im with lem (image m y) | 172 tchar¬Img m mono y eq im with lem (image m y) |
172 ... | case2 n = n im | 173 ... | case2 n = n im |
173 b2i : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (x : b) → image m (m x) | 174 b2i : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (x : b) → image m (m x) |
174 b2i m x = isImage x | 175 b2i m x = isImage x |
175 i2b : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → {y : a} → image m y → b | 176 i2b : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → {y : a} → image m y → b |
176 i2b m (isImage x) = x | 177 i2b m (isImage x) = x |
178 img-mx=y : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → {y : a} → (im : image m y ) → m (i2b m im) ≡ y | |
179 img-mx=y m (isImage x) = refl | |
177 b2i-iso : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (x : b) → i2b m (b2i m x) ≡ x | 180 b2i-iso : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (x : b) → i2b m (b2i m x) ≡ x |
178 b2i-iso m x = refl | 181 b2i-iso m x = refl |
179 b2s : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (mono : Mono Sets m ) → (x : b) → sequ a Bool (tchar m mono) (λ _ → true ) | 182 b2s : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (mono : Mono Sets m ) → (x : b) → sequ a Bool (tchar m mono) (λ _ → true ) |
180 b2s m mono x with tchar m mono (m x) | inspect (tchar m mono) (m x) | 183 b2s m mono x with tchar m mono (m x) | inspect (tchar m mono) (m x) |
181 ... | true | record {eq = eq1} = elem (m x) eq1 | 184 ... | true | record {eq = eq1} = elem (m x) eq1 |
182 ... | false | record { eq = eq1 } with tchar¬Img m mono (m x) eq1 | 185 ... | false | record { eq = eq1 } with tchar¬Img m mono (m x) eq1 |
183 ... | t = ⊥-elim (t (isImage x)) | 186 ... | t = ⊥-elim (t (isImage x)) |
184 s2i : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (mono : Mono Sets m ) → (e : sequ a Bool (tchar m mono) (λ _ → true )) → image m (equ e) | 187 s2i : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (mono : Mono Sets m ) → (e : sequ a Bool (tchar m mono) (λ _ → true )) → image m (equ e) |
185 s2i {a} {b} m mono (elem y eq) with lem (image m y) | 188 s2i {a} {b} m mono (elem y eq) with lem (image m y) |
186 ... | case1 im = im | 189 ... | case1 im = im |
187 s2ii : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (mono : Mono Sets m ) → (x : b) → (eq1 : tchar m mono (m x) ≡ true) | |
188 → s2i m mono (elem (m x ) eq1) ≡ isImage x | |
189 s2ii m mono x eq1 with lem (image m (m x)) | |
190 ... | case1 im = s2ii0 where | |
191 s2ii0 : im ≡ isImage x | |
192 s2ii0 = image-iso m mono (m x) im (isImage x) | |
193 isol : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (mono : Mono Sets m ) → IsoL Sets m (λ (e : sequ a Bool (tchar m mono) (λ _ → true )) → equ e ) | 190 isol : {a b : Obj (Sets {c}) } (m : Hom Sets b a) → (mono : Mono Sets m ) → IsoL Sets m (λ (e : sequ a Bool (tchar m mono) (λ _ → true )) → equ e ) |
194 isol {a} {b} m mono = record { iso-L = record { ≅→ = b→s ; ≅← = b←s ; | 191 isol {a} {b} m mono = record { iso-L = record { ≅→ = b→s ; ≅← = b←s ; |
195 iso→ = extensionality Sets ( λ x → iso1 x ) | 192 iso→ = extensionality Sets ( λ x → iso1 x ) |
196 ; iso← = extensionality Sets ( λ x → iso2 x) } ; iso≈L = {!!} } where | 193 ; iso← = extensionality Sets ( λ x → iso2 x) } ; iso≈L = extensionality Sets ( λ s → iso3 s ) } where |
197 b→s : Hom Sets b (sequ a Bool (tchar m mono) (λ _ → true)) | 194 b→s : Hom Sets b (sequ a Bool (tchar m mono) (λ _ → true)) |
198 b→s x = b2s m mono x | 195 b→s x = b2s m mono x |
199 b←s : Hom Sets (sequ a Bool (tchar m mono) (λ _ → true)) b | 196 b←s : Hom Sets (sequ a Bool (tchar m mono) (λ _ → true)) b |
200 b←s (elem y eq) = i2b m (s2i m mono (elem y eq)) | 197 b←s (elem y eq) = i2b m (s2i m mono (elem y eq)) |
198 iso3 : (s : sequ a Bool (tchar m mono) (λ _ → true)) → m (b←s s) ≡ equ s | |
199 iso3 (elem y eq) with lem (image m y) | |
200 ... | case1 (isImage x) = refl | |
201 iso1 : (x : b) → b←s ( b→s x ) ≡ x | 201 iso1 : (x : b) → b←s ( b→s x ) ≡ x |
202 iso1 x with tchar m mono (m x) | inspect (tchar m mono ) (m x) | 202 iso1 x with tchar m mono (m x) | inspect (tchar m mono ) (m x) |
203 ... | true | record { eq = eq1 } = begin | 203 ... | true | record { eq = eq1 } = begin |
204 b←s ( elem (m x) eq1 ) ≡⟨⟩ | 204 b←s ( elem (m x) eq1 ) ≡⟨⟩ |
205 i2b m (s2i m mono (elem (m x ) eq1 )) ≡⟨ cong (λ k → i2b m k) (s2ii m mono x eq1 ) ⟩ | 205 i2b m (s2i m mono (elem (m x ) eq1 )) ≡⟨ cong (λ k → i2b m k) (image-uniq m mono (m x) (s2i m mono (elem (m x ) eq1 )) (isImage x) ) ⟩ |
206 i2b m (isImage x) ≡⟨⟩ | 206 i2b m (isImage x) ≡⟨⟩ |
207 x ∎ where open ≡-Reasoning | 207 x ∎ where open ≡-Reasoning |
208 iso1 x | false | record { eq = eq1 } = ⊥-elim ( tchar¬Img m mono (m x) eq1 (isImage x)) | 208 iso1 x | false | record { eq = eq1 } = ⊥-elim ( tchar¬Img m mono (m x) eq1 (isImage x)) |
209 iso2 : (x : sequ a Bool (tchar m mono) (λ _ → true) ) → (Sets [ b→s o b←s ]) x ≡ id1 Sets (sequ a Bool (tchar m mono) (λ _ → true)) x | 209 iso2 : (x : sequ a Bool (tchar m mono) (λ _ → true) ) → (Sets [ b→s o b←s ]) x ≡ id1 Sets (sequ a Bool (tchar m mono) (λ _ → true)) x |
210 iso2 (elem y eq) = {!!} | 210 iso2 (elem y eq) = begin |
211 b→s ( b←s (elem y eq)) ≡⟨⟩ | |
212 b2s m mono ( i2b m (s2i m mono (elem y eq))) ≡⟨⟩ | |
213 b2s m mono x ≡⟨ elm-cong _ _ (iso21 x ) ⟩ | |
214 elem (m x) eq1 ≡⟨ elm-cong _ _ mx=y ⟩ | |
215 elem y eq ∎ where | |
216 open ≡-Reasoning | |
217 x : b | |
218 x = i2b m (s2i m mono (elem y eq)) | |
219 eq1 : tchar m mono (m x) ≡ true | |
220 eq1 with lem (image m (m x)) | |
221 ... | case1 t = refl | |
222 ... | case2 n = ⊥-elim (n (isImage x)) | |
223 mx=y : m x ≡ y | |
224 mx=y = img-mx=y m (s2i m mono (elem y eq)) | |
225 iso21 : (x : b) → equ (b2s m mono x ) ≡ m x | |
226 iso21 x with tchar m mono (m x) | inspect (tchar m mono) (m x) | |
227 ... | true | record {eq = eq1} = refl | |
228 ... | false | record { eq = eq1 } with tchar¬Img m mono (m x) eq1 | |
229 ... | t = ⊥-elim (t (isImage x)) | |
211 imequ : {a b : Obj Sets} (m : Hom Sets b a) (mono : Mono Sets m) → IsEqualizer Sets m (tchar m mono) (Sets [ (λ _ → true ) o CCC.○ sets a ]) | 230 imequ : {a b : Obj Sets} (m : Hom Sets b a) (mono : Mono Sets m) → IsEqualizer Sets m (tchar m mono) (Sets [ (λ _ → true ) o CCC.○ sets a ]) |
212 imequ {a} {b} m mono = equalizerIso _ _ (tker (tchar m mono)) m (isol m mono) | 231 imequ {a} {b} m mono = equalizerIso _ _ (tker (tchar m mono)) m (isol m mono) |
213 uniq : {a : Obj (Sets {c})} {b : Obj Sets} (h : Hom Sets a Bool) (m : Hom Sets b a) (mono : Mono Sets m) (y : a) → | 232 uniq : {a : Obj (Sets {c})} {b : Obj Sets} (h : Hom Sets a Bool) (m : Hom Sets b a) (mono : Mono Sets m) (y : a) → |
214 tchar (Equalizer.equalizer (tker h)) (record { isMono = λ f g → monic (tker h) }) y ≡ h y | 233 tchar (Equalizer.equalizer (tker h)) (record { isMono = λ f g → monic (tker h) }) y ≡ h y |
215 uniq {a} {b} h m mono y with h y | inspect h y | lem (image (Equalizer.equalizer (tker h)) y ) | inspect (tchar (Equalizer.equalizer (tker h)) (record { isMono = λ f g → monic (tker h) })) y | 234 uniq {a} {b} h m mono y with h y | inspect h y | lem (image (Equalizer.equalizer (tker h)) y ) | inspect (tchar (Equalizer.equalizer (tker h)) (record { isMono = λ f g → monic (tker h) })) y |