annotate CatExponetial.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 d6a6dd305da2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 ----
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 --
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 -- B^A
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 -- Shinji KONO <kono@ie.u-ryukyu.ac.jp>
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 ----
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import Category -- https://github.com/konn/category-agda
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Level
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
9 module CatExponetial where
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
10
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
11 -- {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} {A : Category c₁ c₂ ℓ} {B : Category c₁' c₂' ℓ' }
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 open import HomReasoning
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 open import cat-utility
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 -- Object is a Functor : A → B
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 -- Hom is a natural transformation
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 open Functor
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
22 CObj = λ {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') → Functor A B
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
23 CHom = λ {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') (f g : CObj A B ) → NTrans A B f g
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 open NTrans
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
26 Cid : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ' ) {a : CObj A B } → CHom A B a a
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 267
diff changeset
27 Cid {c₁} {c₂} {ℓ} {c₁'} {c₂'} {ℓ'} A B {a} = record { TMap = λ x → id1 B (FObj a x) ; isNTrans = isNTrans1 {a} } where
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
28 commute : {a : CObj A B } {a₁ b : Obj A} {f : Hom A a₁ b} →
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 B [ B [ FMap a f o id1 B (FObj a a₁) ] ≈
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 B [ id1 B (FObj a b) o FMap a f ] ]
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 commute {a} {a₁} {b} {f} = let open ≈-Reasoning B in begin
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 FMap a f o id1 B (FObj a a₁)
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 ≈⟨ idR ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 FMap a f
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 ≈↑⟨ idL ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 id1 B (FObj a b) o FMap a f
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 267
diff changeset
38 isNTrans1 : {a : CObj A B } → IsNTrans A B a a (λ x → id1 B (FObj a x))
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 267
diff changeset
39 isNTrans1 {a} = record { commute = λ {a₁ b f} → commute {a} {a₁} {b} {f} }
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
41 _+_ : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} {A : Category c₁ c₂ ℓ} {B : Category c₁' c₂' ℓ' } {a b c : CObj A B }
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
42 → CHom A B b c → CHom A B a b → CHom A B a c
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
43 _+_ {c₁} {c₂} {ℓ} {c₁'} {c₂'} {ℓ'} {A} {B} {a} {b} {c} f g = record { TMap = λ x → B [ TMap f x o TMap g x ] ; isNTrans = isNTrans1 } where
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
44 commute1 : (a b c : CObj A B ) (f : CHom A B b c) (g : CHom A B a b )
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 (a₁ b₁ : Obj A) (h : Hom A a₁ b₁) →
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 B [ B [ FMap c h o B [ TMap f a₁ o TMap g a₁ ] ] ≈
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 B [ B [ TMap f b₁ o TMap g b₁ ] o FMap a h ] ]
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 commute1 a b c f g a₁ b₁ h = let open ≈-Reasoning B in begin
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 B [ FMap c h o B [ TMap f a₁ o TMap g a₁ ] ]
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 ≈⟨ assoc ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 B [ B [ FMap c h o TMap f a₁ ] o TMap g a₁ ]
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 ≈⟨ car (nat f) ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 B [ B [ TMap f b₁ o FMap b h ] o TMap g a₁ ]
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 ≈↑⟨ assoc ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 B [ TMap f b₁ o B [ FMap b h o TMap g a₁ ] ]
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 ≈⟨ cdr (nat g) ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 B [ TMap f b₁ o B [ TMap g b₁ o FMap a h ] ]
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 ≈⟨ assoc ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 B [ B [ TMap f b₁ o TMap g b₁ ] o FMap a h ]
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 isNTrans1 : IsNTrans A B a c (λ x → B [ TMap f x o TMap g x ])
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 isNTrans1 = record { commute = λ {a₁ b₁ h} → commute1 a b c f g a₁ b₁ h }
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
64 _==_ : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} {A : Category c₁ c₂ ℓ} {B : Category c₁' c₂' ℓ' } {a b : CObj A B } →
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
65 CHom A B a b → CHom A B a b → Set (ℓ' ⊔ c₁)
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
66 _==_ {c₁} {c₂} {ℓ} {c₁'} {c₂'} {ℓ'} {A} {B} {a} {b} f g = ∀{x} → B [ TMap f x ≈ TMap g x ]
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 infix 4 _==_
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 open import Relation.Binary.Core
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
71 isB^A : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ' ) → IsCategory (CObj A B) (CHom A B) _==_ _+_ (Cid A B)
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
72 isB^A {c₁} {c₂} {ℓ} {c₁'} {c₂'} {ℓ'} A B =
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 record { isEquivalence = record {refl = IsEquivalence.refl (IsCategory.isEquivalence ( Category.isCategory B ));
300
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 267
diff changeset
74 sym = λ {i j} → sym1 {_} {_} {i} {j} ;
d6a6dd305da2 arrow and lambda fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 267
diff changeset
75 trans = λ {i j k} → trans1 {_} {_} {i} {j} {k} }
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 ; identityL = IsCategory.identityL ( Category.isCategory B )
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 ; identityR = IsCategory.identityR ( Category.isCategory B )
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 ; o-resp-≈ = λ{a b c f g h i } → o-resp-≈1 {a} {b} {c} {f} {g} {h} {i}
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 ; associative = IsCategory.associative ( Category.isCategory B )
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 } where
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
81 sym1 : {a b : CObj A B } {i j : CHom A B a b } → i == j → j == i
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 sym1 {a} {b} {i} {j} eq {x} = let open ≈-Reasoning B in begin
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 TMap j x
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 ≈⟨ sym eq ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 TMap i x
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
87 trans1 : {a b : CObj A B } {i j k : CHom A B a b} → i == j → j == k → i == k
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 trans1 {a} {b} {i} {j} {k} i=j j=k {x} = let open ≈-Reasoning B in begin
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 TMap i x
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 ≈⟨ i=j ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 TMap j x
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 ≈⟨ j=k ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 TMap k x
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
95 o-resp-≈1 : {a b c : CObj A B } {f g : CHom A B a b} {h i : CHom A B b c } →
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 f == g → h == i → h + f == i + g
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 o-resp-≈1 {a} {b} {c} {f} {g} {h} {i} f=g h=i {x} = let open ≈-Reasoning B in begin
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 TMap h x o TMap f x
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 ≈⟨ resp f=g h=i ⟩
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 TMap i x o TMap g x
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
103 _^_ : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁' c₂' ℓ' ) (B : Category c₁ c₂ ℓ) →
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
104 Category (suc ℓ' ⊔ (suc c₂' ⊔ (suc c₁' ⊔ (suc ℓ ⊔ (suc c₂ ⊔ suc c₁)))))
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
105 (suc ℓ' ⊔ (suc c₂' ⊔ (suc c₁' ⊔ (suc ℓ ⊔ (suc c₂ ⊔ suc c₁)))))
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
106 (ℓ' ⊔ c₁)
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
107 _^_ {c₁} {c₂} {ℓ} {c₁'} {c₂'} {ℓ'} B A =
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
108 record { Obj = CObj A B
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
109 ; Hom = CHom A B
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 ; _o_ = _+_
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 ; _≈_ = _==_
267
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
112 ; Id = Cid A B
b1b728559d89 Constancy Functor
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 201
diff changeset
113 ; isCategory = isB^A A B
200
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 }
6e704f4d4f03 exponential
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115