annotate S.agda @ 790:1e7319868d77

Sets is CCC
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 19 Apr 2019 23:42:19 +0900
parents 749df4959d19
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
608
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 --I'd like to write the Limit in Sets Category using Agda. Assuming local smallness, a functor is a pair of map on Set OC and I, like this.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 -- sobj : OC → Set c₂
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 -- smap : { i j : OC } → (f : I ) → sobj i → sobj j
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 --A cone for the functor is a record with two fields. Using the record, commutativity of the cone and the propertiesy of the Limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 --are easity shown, except uniquness. The uniquness of the Limit turned out that congruence of the record with two fields.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 --In the following agda code, I'd like to prove snat-cong lemma.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 open import Level
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 module S where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 open import Relation.Binary.Core
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 open import Function
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 import Relation.Binary.PropositionalEquality
663
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
17 open import Relation.Binary.HeterogeneousEquality using (_≅_;refl)
608
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 record snat { c₂ } { I OC : Set c₂ } ( sobj : OC → Set c₂ )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 ( smap : { i j : OC } → (f : I ) → sobj i → sobj j ) : Set c₂ where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 snmap : ( i : OC ) → sobj i
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 sncommute : ( i j : OC ) → ( f : I ) → smap f ( snmap i ) ≡ snmap j
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 smap0 : { i j : OC } → (f : I ) → sobj i → sobj j
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 smap0 {i} {j} f x = smap f x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 open snat
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
672
749df4959d19 fix completeness
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 663
diff changeset
29 -- snat-cong' : { c : Level } { I OC : Set c } { SObj : OC → Set c } { SMap : { i j : OC } → (f : I )→ SObj i → SObj j }
749df4959d19 fix completeness
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 663
diff changeset
30 -- ( s t : snat SObj SMap )
749df4959d19 fix completeness
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 663
diff changeset
31 -- → ( ( λ i → snmap s i ) ≡ ( λ i → snmap t i ) )
749df4959d19 fix completeness
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 663
diff changeset
32 -- → ( ( λ i j f → smap0 s f ( snmap s i ) ≡ snmap s j ) ≡ ( ( λ i j f → smap0 t f ( snmap t i ) ≡ snmap t j ) ) )
749df4959d19 fix completeness
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 663
diff changeset
33 -- → s ≡ t
749df4959d19 fix completeness
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 663
diff changeset
34 -- snat-cong' s t refl refl = {!!}
663
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
35
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
36 snat-cong : {c : Level}
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
37 {I OC : Set c}
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
38 {sobj : OC → Set c}
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
39 {smap : {i j : OC} → (f : I) → sobj i → sobj j}
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
40 → (s t : snat sobj smap)
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
41 → (snmap-≡ : snmap s ≡ snmap t)
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
42 → (sncommute-≅ : sncommute s ≅ sncommute t)
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
43 → s ≡ t
855e497a9c8f introducd HeterogeneousEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 608
diff changeset
44 snat-cong _ _ refl refl = refl
608
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 --This is quite simlar to the answer of
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 -- Equality on dependent record types
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 -- https://stackoverflow.com/questions/37488098/equality-on-dependent-record-types
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 --So it should work something like
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 -- snat-cong s t refl refl = refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 --but it gives an error like this.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 -- .sncommute i j f != sncommute t i j f of type
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 -- .SMap f (snmap t i) ≡ snmap t j
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 --Is there any help?