annotate pullback.agda @ 272:5f2b8a5cc115

adjunction to limit
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 22 Sep 2013 21:27:03 +0900
parents 28278175d696
children fae4bb967d76
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
260
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 -- Pullback from product and equalizer
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 --
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 --
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 -- Shinji KONO <kono@ie.u-ryukyu.ac.jp>
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 ----
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import Category -- https://github.com/konn/category-agda
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Level
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
9 module pullback { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ') ( Γ : Functor I A ) where
260
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 open import HomReasoning
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 open import cat-utility
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 --
264
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
15 -- Pullback from equalizer and product
260
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 -- f
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 -- a -------> c
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 -- ^ ^
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 -- π1 | |g
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 -- | |
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 -- ab -------> b
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 -- ^ π2
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 -- |
264
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
24 -- | e = equalizer (f π1) (g π1)
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
25 -- |
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
26 -- d <------------------ d'
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
27 -- k (π1' × π2' )
260
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
29 open Equalizer
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
30 open Product
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
31 open Pullback
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
32
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
33 pullback-from : (a b c ab d : Obj A)
260
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 ( f : Hom A a c ) ( g : Hom A b c )
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
35 ( π1 : Hom A ab a ) ( π2 : Hom A ab b ) ( e : Hom A d ab )
260
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 ( eqa : {a b c : Obj A} → (f g : Hom A a b) → {e : Hom A c a } → Equalizer A e f g )
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
37 ( prod : Product A a b ab π1 π2 ) → Pullback A a b c d f g
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
38 ( A [ π1 o equalizer ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ){e} ) ] )
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
39 ( A [ π2 o equalizer ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ){e} ) ] )
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
40 pullback-from a b c ab d f g π1 π2 e eqa prod = record {
260
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 commute = commute1 ;
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 p = p1 ;
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
43 π1p=π1 = λ {d} {π1'} {π2'} {eq} → π1p=π11 {d} {π1'} {π2'} {eq} ;
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
44 π2p=π2 = λ {d} {π1'} {π2'} {eq} → π2p=π21 {d} {π1'} {π2'} {eq} ;
260
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 uniqueness = uniqueness1
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 } where
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
47 commute1 : A [ A [ f o A [ π1 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) ] ] ≈ A [ g o A [ π2 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) ] ] ]
262
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
48 commute1 = let open ≈-Reasoning (A) in
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
49 begin
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
50 f o ( π1 o equalizer (eqa ( f o π1 ) ( g o π2 )) )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
51 ≈⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
52 ( f o π1 ) o equalizer (eqa ( f o π1 ) ( g o π2 ))
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
53 ≈⟨ fe=ge (eqa (A [ f o π1 ]) (A [ g o π2 ])) ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
54 ( g o π2 ) o equalizer (eqa ( f o π1 ) ( g o π2 ))
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
55 ≈↑⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
56 g o ( π2 o equalizer (eqa ( f o π1 ) ( g o π2 )) )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
57
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
58 lemma1 : {d' : Obj A} {π1' : Hom A d' a} {π2' : Hom A d' b} → A [ A [ f o π1' ] ≈ A [ g o π2' ] ] →
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
59 A [ A [ A [ f o π1 ] o (prod × π1') π2' ] ≈ A [ A [ g o π2 ] o (prod × π1') π2' ] ]
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
60 lemma1 {d'} { π1' } { π2' } eq = let open ≈-Reasoning (A) in
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
61 begin
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
62 ( f o π1 ) o (prod × π1') π2'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
63 ≈↑⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
64 f o ( π1 o (prod × π1') π2' )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
65 ≈⟨ cdr (π1fxg=f prod) ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
66 f o π1'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
67 ≈⟨ eq ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
68 g o π2'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
69 ≈↑⟨ cdr (π2fxg=g prod) ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
70 g o ( π2 o (prod × π1') π2' )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
71 ≈⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
72 ( g o π2 ) o (prod × π1') π2'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
73
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
74 p1 : {d' : Obj A} {π1' : Hom A d' a} {π2' : Hom A d' b} → A [ A [ f o π1' ] ≈ A [ g o π2' ] ] → Hom A d' d
262
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
75 p1 {d'} { π1' } { π2' } eq =
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
76 let open ≈-Reasoning (A) in k ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e} ) (_×_ prod π1' π2' ) ( lemma1 eq )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
77 π1p=π11 : {d₁ : Obj A} {π1' : Hom A d₁ a} {π2' : Hom A d₁ b} {eq : A [ A [ f o π1' ] ≈ A [ g o π2' ] ]} →
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
78 A [ A [ A [ π1 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ]) {e} ) ] o p1 eq ] ≈ π1' ]
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
79 π1p=π11 {d'} {π1'} {π2'} {eq} = let open ≈-Reasoning (A) in
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
80 begin
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
81 ( π1 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ]) {e} ) ) o p1 eq
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
82 ≈⟨⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
83 ( π1 o e) o k ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e} ) (_×_ prod π1' π2' ) (lemma1 eq)
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
84 ≈↑⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
85 π1 o ( e o k ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e} ) (_×_ prod π1' π2' ) (lemma1 eq) )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
86 ≈⟨ cdr ( ek=h ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e} )) ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
87 π1 o (_×_ prod π1' π2' )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
88 ≈⟨ π1fxg=f prod ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
89 π1'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
90
263
c1b3193097ce on going ..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 262
diff changeset
91 π2p=π21 : {d₁ : Obj A} {π1' : Hom A d₁ a} {π2' : Hom A d₁ b} {eq : A [ A [ f o π1' ] ≈ A [ g o π2' ] ]} →
c1b3193097ce on going ..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 262
diff changeset
92 A [ A [ A [ π2 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ]) {e} ) ] o p1 eq ] ≈ π2' ]
262
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
93 π2p=π21 {d'} {π1'} {π2'} {eq} = let open ≈-Reasoning (A) in
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
94 begin
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
95 ( π2 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ]) {e} ) ) o p1 eq
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
96 ≈⟨⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
97 ( π2 o e) o k ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e} ) (_×_ prod π1' π2' ) (lemma1 eq)
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
98 ≈↑⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
99 π2 o ( e o k ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e} ) (_×_ prod π1' π2' ) (lemma1 eq) )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
100 ≈⟨ cdr ( ek=h ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e} )) ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
101 π2 o (_×_ prod π1' π2' )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
102 ≈⟨ π2fxg=g prod ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
103 π2'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
104
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
105 uniqueness1 : {d₁ : Obj A} (p' : Hom A d₁ d) {π1' : Hom A d₁ a} {π2' : Hom A d₁ b} {eq : A [ A [ f o π1' ] ≈ A [ g o π2' ] ]} →
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
106 {eq1 : A [ A [ A [ π1 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) ] o p' ] ≈ π1' ]} →
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
107 {eq2 : A [ A [ A [ π2 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) ] o p' ] ≈ π2' ]} →
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
108 A [ p1 eq ≈ p' ]
264
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
109 uniqueness1 {d'} p' {π1'} {π2'} {eq} {eq1} {eq2} = let open ≈-Reasoning (A) in
263
c1b3193097ce on going ..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 262
diff changeset
110 begin
c1b3193097ce on going ..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 262
diff changeset
111 p1 eq
c1b3193097ce on going ..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 262
diff changeset
112 ≈⟨⟩
c1b3193097ce on going ..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 262
diff changeset
113 k ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e} ) (_×_ prod π1' π2' ) (lemma1 eq)
264
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
114 ≈⟨ Equalizer.uniqueness (eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e}) ( begin
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
115 e o p'
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
116 ≈⟨⟩
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
117 equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) o p'
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
118 ≈↑⟨ Product.uniqueness prod ⟩
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
119 (prod × ( π1 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) o p') ) ( π2 o (equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) o p'))
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
120 ≈⟨ ×-cong prod (assoc) (assoc) ⟩
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
121 (prod × (A [ A [ π1 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) ] o p' ]))
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
122 (A [ A [ π2 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) ] o p' ])
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
123 ≈⟨ ×-cong prod eq1 eq2 ⟩
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
124 ((prod × π1') π2')
78ce12f8e6b6 pullback done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 263
diff changeset
125 ∎ ) ⟩
263
c1b3193097ce on going ..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 262
diff changeset
126 p'
c1b3193097ce on going ..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 262
diff changeset
127
c1b3193097ce on going ..
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 262
diff changeset
128
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
129 ------
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
130 --
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
131 -- Limit
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
132 --
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
133 -----
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
134
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
135 -- Constancy Functor
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
136
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
137 K : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) → ( a : Obj A ) → Functor I A
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
138 K I a = record {
265
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
139 FObj = λ i → a ;
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
140 FMap = λ f → id1 A a ;
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
141 isFunctor = let open ≈-Reasoning (A) in record {
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
142 ≈-cong = λ f=g → refl-hom
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
143 ; identity = refl-hom
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
144 ; distr = sym idL
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
145 }
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
146 }
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
147
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
148 open NTrans
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
149
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
150 record Limit { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) ( Γ : Functor I A )
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
151 ( a0 : Obj A ) ( t0 : NTrans I A ( K I a0 ) Γ ) : Set (suc (c₁' ⊔ c₂' ⊔ ℓ' ⊔ c₁ ⊔ c₂ ⊔ ℓ )) where
265
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
152 field
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
153 limit : ( a : Obj A ) → ( t : NTrans I A ( K I a ) Γ ) → Hom A a a0
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
154 t0f=t : { a : Obj A } → { t : NTrans I A ( K I a ) Γ } → ∀ { i : Obj I } →
265
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
155 A [ A [ TMap t0 i o limit a t ] ≈ TMap t i ]
271
28278175d696 limit2adjoint done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 270
diff changeset
156 limit-uniqueness : { a : Obj A } → { t : NTrans I A ( K I a ) Γ } → { f : Hom A a a0 } → ( ∀ { i : Obj I } →
28278175d696 limit2adjoint done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 270
diff changeset
157 A [ A [ TMap t0 i o f ] ≈ TMap t i ] ) → A [ limit a t ≈ f ]
270
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
158 A0 : Obj A
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
159 A0 = a0
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
160 T0 : NTrans I A ( K I a0 ) Γ
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
161 T0 = t0
265
367e8fde93ee add limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 264
diff changeset
162
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
163 --------------------------------
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
164 --
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
165 -- If we have two limits on c and c', there are isomorphic pair h, h'
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
166
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
167 open Limit
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
168
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
169 iso-l : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) ( Γ : Functor I A )
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
170 ( a0 a0' : Obj A ) ( t0 : NTrans I A ( K I a0 ) Γ ) ( t0' : NTrans I A ( K I a0' ) Γ )
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
171 ( lim : Limit I Γ a0 t0 ) → ( lim' : Limit I Γ a0' t0' )
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
172 → Hom A a0 a0'
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
173 iso-l I Γ a0 a0' t0 t0' lim lim' = limit lim' a0 t0
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
174
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
175 iso-r : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) ( Γ : Functor I A )
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
176 ( a0 a0' : Obj A ) ( t0 : NTrans I A ( K I a0 ) Γ ) ( t0' : NTrans I A ( K I a0' ) Γ )
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
177 ( lim : Limit I Γ a0 t0 ) → ( lim' : Limit I Γ a0' t0' )
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
178 → Hom A a0' a0
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
179 iso-r I Γ a0 a0' t0 t0' lim lim' = limit lim a0' t0'
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
180
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
181
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
182 iso-lr : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) ( Γ : Functor I A )
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
183 ( a0 a0' : Obj A ) ( t0 : NTrans I A ( K I a0 ) Γ ) ( t0' : NTrans I A ( K I a0' ) Γ )
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
184 ( lim : Limit I Γ a0 t0 ) → ( lim' : Limit I Γ a0' t0' ) → ∀{ i : Obj I } →
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
185 A [ A [ iso-l I Γ a0 a0' t0 t0' lim lim' o iso-r I Γ a0 a0' t0 t0' lim lim' ] ≈ id1 A a0' ]
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
186 iso-lr I Γ a0 a0' t0 t0' lim lim' {i} = let open ≈-Reasoning (A) in begin
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
187 limit lim' a0 t0 o limit lim a0' t0'
271
28278175d696 limit2adjoint done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 270
diff changeset
188 ≈↑⟨ limit-uniqueness lim' ( λ {i} → ( begin
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
189 TMap t0' i o ( limit lim' a0 t0 o limit lim a0' t0' )
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
190 ≈⟨ assoc ⟩
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
191 ( TMap t0' i o limit lim' a0 t0 ) o limit lim a0' t0'
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
192 ≈⟨ car ( t0f=t lim' ) ⟩
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
193 TMap t0 i o limit lim a0' t0'
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
194 ≈⟨ t0f=t lim ⟩
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
195 TMap t0' i
271
28278175d696 limit2adjoint done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 270
diff changeset
196 ∎) ) ⟩
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
197 limit lim' a0' t0'
271
28278175d696 limit2adjoint done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 270
diff changeset
198 ≈⟨ limit-uniqueness lim' idR ⟩
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
199 id a0'
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
200
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
201
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
202
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
203 open import CatExponetial
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
204
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
205 open Functor
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
206
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
207 --------------------------------
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
208 --
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
209 -- Contancy Functor
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
210
268
2ff44ee3cb32 co universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 267
diff changeset
211 KI : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) → Functor A ( A ^ I )
2ff44ee3cb32 co universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 267
diff changeset
212 KI { c₁'} {c₂'} {ℓ'} I = record {
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
213 FObj = λ a → K I a ;
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
214 FMap = λ f → record { -- NTrans I A (K I a) (K I b)
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
215 TMap = λ a → f ;
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
216 isNTrans = record {
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
217 commute = λ {a b f₁} → commute1 {a} {b} {f₁} f
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
218 }
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
219 } ;
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
220 isFunctor = let open ≈-Reasoning (A) in record {
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
221 ≈-cong = λ f=g {x} → f=g
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
222 ; identity = refl-hom
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
223 ; distr = refl-hom
266
9e9f1e27e89f iso on limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 265
diff changeset
224 }
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
225 } where
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
226 commute1 : {a b : Obj I} {f₁ : Hom I a b} → {a' b' : Obj A} → (f : Hom A a' b' ) →
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
227 A [ A [ FMap (K I b') f₁ o f ] ≈ A [ f o FMap (K I a') f₁ ] ]
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
228 commute1 {a} {b} {f₁} {a'} {b'} f = let open ≈-Reasoning (A) in begin
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
229 FMap (K I b') f₁ o f
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
230 ≈⟨ idL ⟩
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
231 f
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
232 ≈↑⟨ idR ⟩
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
233 f o FMap (K I a') f₁
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
234
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
235
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
236
268
2ff44ee3cb32 co universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 267
diff changeset
237 open import Function
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 266
diff changeset
238
272
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
239 ---------
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
240 --
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
241 -- limit gives co universal mapping ( i.e. adjunction )
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
242 --
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
243 -- F = KI I : Functor A (A ^ I)
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
244 -- U = λ b → A0 (lim b {a0 b} {t0 b}
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
245 -- ε = λ b → T0 ( lim b {a0 b} {t0 b} )
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
246
270
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
247 limit2adjoint :
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
248 ( lim : ( Γ : Functor I A ) → { a0 : Obj A } { t0 : NTrans I A ( K I a0 ) Γ } → Limit I Γ a0 t0 )
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
249 → ( a0 : ( b : Functor I A ) → Obj A ) ( t0 : ( b : Functor I A ) → NTrans I A ( K I (a0 b) ) b )
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
250 → coUniversalMapping A ( A ^ I ) (KI I) (λ b → A0 (lim b {a0 b} {t0 b} ) ) ( λ b → T0 ( lim b {a0 b} {t0 b} ) )
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
251 limit2adjoint lim a0 t0 = record {
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
252 _*' = λ {b} {a} k → limit (lim b {a0 b} {t0 b} ) a k ;
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
253 iscoUniversalMapping = record {
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
254 couniversalMapping = λ{ b a f} → couniversalMapping1 {b} {a} {f} ;
271
28278175d696 limit2adjoint done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 270
diff changeset
255 couniquness = couniquness2
270
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
256 }
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
257 } where
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
258 couniversalMapping1 : {b : Obj (A ^ I)} {a : Obj A} {f : Hom (A ^ I) (FObj (KI I) a) b} →
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
259 A ^ I [ A ^ I [ T0 (lim b {a0 b} {t0 b}) o FMap (KI I) (limit (lim b {a0 b} {t0 b}) a f) ] ≈ f ]
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
260 couniversalMapping1 {b} {a} {f} {i} = let open ≈-Reasoning (A) in begin
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
261 TMap (T0 (lim b {a0 b} {t0 b})) i o TMap ( FMap (KI I) (limit (lim b {a0 b} {t0 b}) a f) ) i
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
262 ≈⟨⟩
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
263 TMap (t0 b) i o (limit (lim b) a f)
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
264 ≈⟨ t0f=t (lim b) ⟩
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
265 TMap f i -- i comes from ∀{i} → B [ TMap f i ≈ TMap g i ]
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
266
271
28278175d696 limit2adjoint done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 270
diff changeset
267 couniquness2 : {b : Obj (A ^ I)} {a : Obj A} {f : Hom (A ^ I) (FObj (KI I) a) b} {g : Hom A a (A0 (lim b {a0 b} {t0 b} ))} →
272
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
268 ( ∀ { i : Obj I } → A [ A [ TMap (T0 (lim b {a0 b} {t0 b} )) i o TMap ( FMap (KI I) g) i ] ≈ TMap f i ] )
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
269 → A [ limit (lim b {a0 b} {t0 b} ) a f ≈ g ]
271
28278175d696 limit2adjoint done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 270
diff changeset
270 couniquness2 {b} {a} {f} {g} lim-g=f = let open ≈-Reasoning (A) in begin
270
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
271 limit (lim b {a0 b} {t0 b} ) a f
271
28278175d696 limit2adjoint done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 270
diff changeset
272 ≈⟨ limit-uniqueness ( lim b {a0 b} {t0 b} ) lim-g=f ⟩
270
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
273 g
8ba03259a177 one yellow remain on ∀{x} → B [ TMap f x ≈ TMap g x ]
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 269
diff changeset
274
268
2ff44ee3cb32 co universal mapping
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 267
diff changeset
275
272
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
276 open import Category.Cat
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
277
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
278 adjoint2limit :
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
279 ( U : Functor (A ^ I) A ) ( η : NTrans A A identityFunctor ( U ○ (KI I) ) )
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
280 ( ε : NTrans (A ^ I) (A ^ I) ( (KI I) ○ U ) identityFunctor )
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
281 ( adj : Adjunction A (A ^ I) U (KI I) η ε ) →
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
282 ( Γ : Functor I A ) → { a0 : Obj A } { t0 : NTrans I A ( K I a0 ) Γ } → Limit I Γ a0 t0
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
283 adjoint2limit U η ε adj Γ {a0} {t0} = record {
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
284 limit = λ a t → limit1 a t ;
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
285 t0f=t = λ {a t i } → t0f=t1 {a} {t} {i} ;
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
286 limit-uniqueness = λ {a} {t} {f} t=f → limit-uniqueness1 {a} {t} {f} t=f
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
287 } where
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
288 limit1 : ( a : Obj A ) → ( t : NTrans I A ( K I a ) Γ ) → Hom A a a0
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
289 limit1 a t = {!!}
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
290 t0f=t1 : { a : Obj A } → { t : NTrans I A ( K I a ) Γ } → ∀ { i : Obj I } →
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
291 A [ A [ TMap t0 i o limit1 a t ] ≈ TMap t i ]
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
292 t0f=t1 = {!!}
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
293 limit-uniqueness1 : { a : Obj A } → { t : NTrans I A ( K I a ) Γ } → { f : Hom A a a0 } → ( ∀ { i : Obj I } →
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
294 A [ A [ TMap t0 i o f ] ≈ TMap t i ] ) → A [ limit1 a t ≈ f ]
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
295 limit-uniqueness1 = {!!}
269
6056a995964b adjoint form limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 268
diff changeset
296
271
28278175d696 limit2adjoint done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 270
diff changeset
297
272
5f2b8a5cc115 adjunction to limit
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 271
diff changeset
298