annotate pullback.agda @ 262:e1b08c5e4d2e

uniqueness remains
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 20 Sep 2013 18:58:32 +0900
parents a2477147dfec
children c1b3193097ce
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
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 module pullback { c₁ c₂ ℓ : Level} { A : Category c₁ c₂ ℓ } where
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 --
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 -- Pullback
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 -- |
262
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
24 -- | equalizer (f π1) (g π1) = ( π1' × π2' )
260
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 -- d
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 --
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
28 open Equalizer
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
29 open Product
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
30 open Pullback
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
31
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
32 pullback-from : (a b c ab d : Obj A)
260
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 ( 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
34 ( π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
35 ( 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
36 ( 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
37 ( 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
38 ( 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
39 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
40 commute = commute1 ;
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 p = p1 ;
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
42 π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
43 π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
44 uniqueness = uniqueness1
a87d3ea9efe4 pullback
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 } where
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
46 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
47 commute1 = let open ≈-Reasoning (A) in
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
48 begin
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
49 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
50 ≈⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
51 ( 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
52 ≈⟨ 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
53 ( 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
54 ≈↑⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
55 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
56
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
57 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
58 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
59 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
60 begin
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
61 ( f o π1 ) o (prod × π1') π2'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
62 ≈↑⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
63 f o ( π1 o (prod × π1') π2' )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
64 ≈⟨ cdr (π1fxg=f prod) ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
65 f o π1'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
66 ≈⟨ eq ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
67 g o π2'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
68 ≈↑⟨ cdr (π2fxg=g prod) ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
69 g o ( π2 o (prod × π1') π2' )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
70 ≈⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
71 ( g o π2 ) o (prod × π1') π2'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
72
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
73 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
74 p1 {d'} { π1' } { π2' } eq =
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
75 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
76 π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
77 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
78 π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
79 begin
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
80 ( π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
81 ≈⟨⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
82 ( π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
83 ≈↑⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
84 π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
85 ≈⟨ 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
86 π1 o (_×_ prod π1' π2' )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
87 ≈⟨ π1fxg=f prod ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
88 π1'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
89
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
90 -- π1fxg=f prod
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
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' ] ]} → 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
92 π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
93 begin
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
94 ( π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
95 ≈⟨⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
96 ( π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
97 ≈↑⟨ assoc ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
98 π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
99 ≈⟨ 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
100 π2 o (_×_ prod π1' π2' )
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
101 ≈⟨ π2fxg=g prod ⟩
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
102 π2'
e1b08c5e4d2e uniqueness remains
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
103
261
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
104 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
105 {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
106 {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
107 A [ p1 eq ≈ p' ]
a2477147dfec pull back continue
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 260
diff changeset
108 uniqueness1 = {!!}