annotate src/ToposEx.agda @ 973:5f76e5cf3d49

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 28 Feb 2021 17:31:13 +0900
parents e05eb6029b5b
children 5731ffd6cf7a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
963
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 module ToposEx where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 open import CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 open import Level
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import Category
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import cat-utility
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import HomReasoning
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open Topos
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 open Equalizer
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 -- ○ b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 -- b -----------→ 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 -- | |
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 -- m | | ⊤
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 -- ↓ char m ↓
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 -- a -----------→ Ω
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 -- h
964
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
18 --
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
19 -- Ker t h : Equalizer A h (A [ ⊤ o (○ a) ])
963
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 topos-pullback : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) ( 1 : Obj A) (○ : (a : Obj A ) → Hom A a 1)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 → (e2 : {a : Obj A} → ∀ { f : Hom A a 1 } → A [ f ≈ ○ a ] )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 → (t : Topos A 1 ○ ) → {a : Obj A} → (h : Hom A a (Ω t)) → Pullback A h (⊤ t)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 topos-pullback A 1 ○ e2 t {a} h = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 ab = equalizer-c (Ker t h) -- b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 ; π1 = equalizer (Ker t h) -- m
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 ; π2 = ○ ( equalizer-c (Ker t h) ) -- ○ b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 ; isPullback = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 commute = comm
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 ; pullback = λ {d} {p1} {p2} eq → IsEqualizer.k (isEqualizer (Ker t h)) p1 (lemma1 p1 p2 eq )
964
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
31 ; π1p=π1 = IsEqualizer.ek=h (isEqualizer (Ker t h))
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
32 ; π2p=π2 = λ {d} {p1'} {p2'} {eq} → lemma2 eq
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
33 ; uniqueness = uniq
963
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 open ≈-Reasoning A
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 comm : A [ A [ h o equalizer (Ker t h) ] ≈ A [ ⊤ t o ○ (equalizer-c (Ker t h)) ] ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 comm = begin
964
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
39 h o equalizer (Ker t h) ≈⟨ IsEqualizer.fe=ge (isEqualizer (Ker t h)) ⟩
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
40 (⊤ t o ○ a ) o equalizer (Ker t h) ≈↑⟨ assoc ⟩
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
41 ⊤ t o (○ a o equalizer (Ker t h)) ≈⟨ cdr e2 ⟩
963
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 ⊤ t o ○ (equalizer-c (Ker t h)) ∎
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 lemma1 : {d : Obj A} (p1 : Hom A d a) (p2 : Hom A d 1) (eq : A [ A [ h o p1 ] ≈ A [ ⊤ t o p2 ] ] )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 → A [ A [ h o p1 ] ≈ A [ A [ ⊤ t o ○ a ] o p1 ] ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 lemma1 {d} p1 p2 eq = begin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 h o p1 ≈⟨ eq ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 ⊤ t o p2 ≈⟨ cdr e2 ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 ⊤ t o (○ d) ≈↑⟨ cdr e2 ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 ⊤ t o ( ○ a o p1 ) ≈⟨ assoc ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 (⊤ t o ○ a ) o p1 ∎
964
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
51 lemma2 : {d : Obj A} {p1' : Hom A d a} {p2' : Hom A d 1} (eq : A [ A [ h o p1' ] ≈ A [ ⊤ t o p2' ] ] )
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
52 → A [ A [ ○ (equalizer-c (Ker t h)) o IsEqualizer.k (isEqualizer (Ker t h)) p1'(lemma1 p1' p2' eq) ] ≈ p2' ]
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
53 lemma2 {d} {p1'} {p2'} eq = begin
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
54 ○ (equalizer-c (Ker t h)) o IsEqualizer.k (isEqualizer (Ker t h)) p1'(lemma1 p1' p2' eq) ≈⟨ e2 ⟩
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
55 ○ d ≈↑⟨ e2 ⟩
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
56 p2' ∎
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
57 uniq : {d : Obj A} (p' : Hom A d (equalizer-c (Ker t h))) {π1' : Hom A d a} {π2' : Hom A d 1} {eq : A [ A [ h o π1' ] ≈ A [ ⊤ t o π2' ] ]}
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
58 {π1p=π1' : A [ A [ equalizer (Ker t h) o p' ] ≈ π1' ]} {π2p=π2' : A [ A [ ○ (equalizer-c (Ker t h)) o p' ] ≈ π2' ]}
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
59 → A [ IsEqualizer.k (isEqualizer (Ker t h)) π1' (lemma1 π1' π2' eq) ≈ p' ]
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
60 uniq {d} (p') {p1'} {p2'} {eq} {pe1} {pe2} = begin
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
61 IsEqualizer.k (isEqualizer (Ker t h)) p1' (lemma1 p1' p2' eq) ≈⟨ IsEqualizer.uniqueness (isEqualizer (Ker t h)) pe1 ⟩
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
62 p' ∎
963
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
965
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
64 topos-m-pullback : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) ( 1 : Obj A) (○ : (a : Obj A ) → Hom A a 1)
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
65 → (e2 : {a : Obj A} → ∀ { f : Hom A a 1 } → A [ f ≈ ○ a ] )
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
66 → (t : Topos A 1 ○ ) → {a b : Obj A} → (m : Hom A b a) → (mono : Mono A m ) → Pullback A (char t m mono ) (⊤ t)
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
67 topos-m-pullback A 1 ○ e2 t {a} {b} m mono = topos-pullback A 1 ○ e2 t {a} (char t m mono)
964
0128a662eb02 Topos as pull back
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 963
diff changeset
68
965
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
69 ---
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
70 ---
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
71 ---
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
72
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
73 -- SubObjectFunctor : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) → ( 1 : Obj A) (○ : (a : Obj A ) → Hom A a 1)
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
74 -- → (e2 : {a : Obj A} → ∀ { f : Hom A a 1 } → A [ f ≈ ○ a ] ) → (t : Topos A 1 ○ ) → Functor A A
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
75 -- SubObjectFunctor A 1 ○ e2 t = record {
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
76 -- FObj = λ x → Ω t
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
77 -- ; FMap = {!!}
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
78 -- ; isFunctor = record {
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
79 -- identity = {!!}
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
80 -- ; distr = {!!}
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
81 -- ; ≈-cong = {!!}
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
82 -- }
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
83 -- }
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
84
971
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
85 module _ {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) (c : CCC A) (t : Topos A (CCC.1 c) (CCC.○ c) ) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
86 open ≈-Reasoning A
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
87 open CCC.CCC c
965
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
88
971
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
89 δmono : {b : Obj A } → Mono A < id1 A b , id1 A b >
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
90 δmono = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
91 isMono = m1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
92 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
93 m1 : {d b : Obj A} (f g : Hom A d b) → A [ A [ < id1 A b , id1 A b > o f ] ≈ A [ < id1 A b , id1 A b > o g ] ] → A [ f ≈ g ]
972
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
94 m1 {d} {b} f g eq = begin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
95 f ≈↑⟨ idL ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
96 id1 A _ o f ≈↑⟨ car (IsCCC.e3a isCCC) ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
97 (π o < id1 A b , id1 A b >) o f ≈↑⟨ assoc ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
98 π o (< id1 A b , id1 A b > o f) ≈⟨ cdr eq ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
99 π o (< id1 A b , id1 A b > o g) ≈⟨ assoc ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
100 (π o < id1 A b , id1 A b >) o g ≈⟨ car (IsCCC.e3a isCCC) ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
101 id1 A _ o g ≈⟨ idL ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
102 g ∎
965
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 964
diff changeset
103
973
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
104 open Equalizer
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
105 open import equalizer
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
106
971
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
107 prop32→ : {a b : Obj A}→ (f g : Hom A a b )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
108 → A [ f ≈ g ] → A [ A [ char t < id1 A b , id1 A b > δmono o < f , g > ] ≈ A [ ⊤ t o ○ a ] ]
972
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
109 prop32→ {a} {b} f g f=g = begin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
110 char t < id1 A b , id1 A b > δmono o < f , g > ≈⟨ cdr ( IsCCC.π-cong isCCC refl-hom (sym f=g)) ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
111 char t < id1 A b , id1 A b > δmono o < f , f > ≈↑⟨ cdr ( IsCCC.π-cong isCCC idL idL ) ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
112 char t < id1 A b , id1 A b > δmono o < id1 A _ o f , id1 A _ o f > ≈↑⟨ cdr ( IsCCC.distr-π isCCC ) ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
113 char t < id1 A b , id1 A b > δmono o (< id1 A _ , id1 A _ > o f) ≈⟨ assoc ⟩
973
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
114 (char t < id1 A b , id1 A b > δmono o < id1 A _ , id1 A _ > ) o f ≈⟨ car lem1 ⟩
972
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
115 (⊤ t o ○ b) o f ≈↑⟨ assoc ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
116 ⊤ t o (○ b o f) ≈⟨ cdr (IsCCC.e2 isCCC) ⟩
973
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
117 ⊤ t o ○ a ∎ where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
118 i = char t < id1 A b , id1 A b > δmono o < id1 A _ , id1 A _ >
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
119 e = Ker t ( ⊤ t o ○ b)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
120 ki = IsEqualizer.k (isEqualizer e) (id1 A _) refl-hom
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
121 lem1 : (char t < id1 A b , id1 A b > δmono o < id1 A _ , id1 A _ > ) ≈ ( ⊤ t o ○ b )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
122 lem1 = begin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
123 i ≈↑⟨ idR ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
124 i o id1 A _ ≈↑⟨ cdr (IsEqualizer.ek=h (isEqualizer e) ) ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
125 i o (equalizer e o ki ) ≈⟨ assoc ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
126 (i o equalizer e ) o ki ≈⟨ {!!} ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
127 (((⊤ t) o (○ b)) o equalizer e ) o ki ≈⟨ car (IsEqualizer.fe=ge (isEqualizer e)) ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
128 ((⊤ t o ○ b) o equalizer e ) o ki ≈↑⟨ assoc ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
129 (⊤ t o ○ b) o (equalizer e o ki ) ≈⟨ cdr (IsEqualizer.ek=h (isEqualizer e) )⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
130 (⊤ t o ○ b) o id1 A _ ≈⟨ idR ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
131 ⊤ t o ○ b ∎
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 972
diff changeset
132
971
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
133
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
134 prop23→ : {a b : Obj A}→ (f g : Hom A a b )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
135 → A [ A [ char t < id1 A b , id1 A b > δmono o < f , g > ] ≈ A [ ⊤ t o ○ a ] ] → A [ f ≈ g ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
136 prop23→ = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
137
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
138 N : (n : ToposNat A 1 ) → Obj A
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
139 N n = NatD.Nat (ToposNat.TNat n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
140
972
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
141 record prop33 (n : ToposNat A 1 ) : Set ( suc c₁ ⊔ suc c₂ ⊔ suc ℓ ) where
971
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
142 field
972
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
143 g : {a : Obj A} (f : Hom A 1 a ) ( h : Hom A (N n ∧ a) a ) → Hom A (N n) a
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
144 g0=f : {a : Obj A} (f : Hom A 1 a ) ( h : Hom A (N n ∧ a) a ) → A [ A [ g f h o NatD.nzero (ToposNat.TNat n) ] ≈ f ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
145 gs=h : {a : Obj A} (f : Hom A 1 a ) ( h : Hom A (N n ∧ a) a ) → A [ A [ g f h o NatD.nsuc (ToposNat.TNat n) ] ≈ A [ h o < id1 A _ , g f h > ] ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
146 g-cong : {a : Obj A} {f f' : Hom A 1 a } { h h' : Hom A (N n ∧ a) a } → A [ f ≈ f' ] → A [ h ≈ h' ] → A [ g f h ≈ g f' h' ]
971
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
147
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
148 cor33 : (n : ToposNat A 1 )
972
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
149 → prop33 n
971
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
150 → coProduct A 1 ( NatD.Nat (ToposNat.TNat n) ) -- N ≅ N + 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
151 cor33 n p = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
152 coproduct = N n
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
153 ; κ1 = NatD.nzero (ToposNat.TNat n)
972
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
154 ; κ2 = NatD.nsuc (ToposNat.TNat n)
971
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
155 ; isProduct = record {
972
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
156 _+_ = λ {a} f g → prop33.g p f ( g o π ) -- Hom A (N n ∧ a) a
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
157 ; κ1f+g=f = λ {a} {f} {g} → prop33.g0=f p f (g o π )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
158 ; κ2f+g=g = k2
971
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
159 ; uniqueness = {!!}
972
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
160 ; +-cong = λ f=f' g=g' → prop33.g-cong p f=f' (resp refl-hom g=g' )
971
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
161
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 965
diff changeset
162 }
972
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
163 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
164 k2 : {a : Obj A} {f : Hom A 1 a} {g : Hom A (NatD.Nat (ToposNat.TNat n)) a }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
165 → A [ A [ prop33.g p f ((A Category.o g) π) o NatD.nsuc (ToposNat.TNat n) ] ≈ g ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
166 k2 {a} {f} {g} = begin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
167 (prop33.g p f ((A Category.o g) π) o NatD.nsuc (ToposNat.TNat n)) ≈⟨ prop33.gs=h p f (g o π ) ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
168 ( g o π ) o < id1 A (N n) , prop33.g p f (g o π) > ≈⟨ sym assoc ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
169 g o ( π o < id1 A (N n) , prop33.g p f (g o π) >) ≈⟨ cdr (IsCCC.e3a isCCC ) ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
170 g o id1 A (N n) ≈⟨ idR ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
171 g ∎
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
172
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
173
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 971
diff changeset
174