annotate src/bi-ccc.agda @ 965:396bf884f5e7

bi-cartesian
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 25 Feb 2021 02:01:37 +0900
parents
children cb970ab7c32b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
965
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 module bi-ccc where
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 open import Category
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import CCC
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import Level
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import HomReasoning
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import cat-utility
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 record IsBICCC {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ)
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 ( ⊥ : Obj A) -- 0
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 ( □ : (a : Obj A ) → Hom A ⊥ a )
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 ( _∨_ : Obj A → Obj A → Obj A )
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 ( [_,_] : {a b c : Obj A } → Hom A a c → Hom A b c → Hom A (a ∨ b) c )
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 ( κ : {a b : Obj A } → Hom A a (a ∨ b) )
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 ( κ' : {a b : Obj A } → Hom A b (a ∨ b) )
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 : Set ( c₁ ⊔ c₂ ⊔ ℓ ) where
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 field
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 e5 : {a : Obj A} → { f : Hom A ⊥ a } → A [ f ≈ □ a ]
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 e6a : {a b c : Obj A} → { f : Hom A a c }{ g : Hom A b c } → A [ A [ [ f , g ] o κ ] ≈ f ]
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 e6b : {a b c : Obj A} → { f : Hom A a c }{ g : Hom A b c } → A [ A [ [ f , g ] o κ' ] ≈ g ]
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 e6c : {a b c : Obj A} → { h : Hom A (a ∨ b ) c } → A [ [ A [ h o κ ] , A [ h o κ' ] ] ≈ h ]
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 κ-cong : {a b c : Obj A} → { f f' : Hom A a c }{ g g' : Hom A b c } → A [ f ≈ f' ] → A [ g ≈ g' ] → A [ [ f , g ] ≈ [ f' , g' ] ]
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 record BICCC {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) : Set ( c₁ ⊔ c₂ ⊔ ℓ ) where
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 field
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 ⊥ : Obj A
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 □ : (a : Obj A ) → Hom A ⊥ a
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 _∨_ : Obj A → Obj A → Obj A
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 [_,_] : {a b c : Obj A } → Hom A a c → Hom A b c → Hom A (a ∨ b) c
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 κ : {a b : Obj A } → Hom A a (a ∨ b)
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 κ' : {a b : Obj A } → Hom A b (a ∨ b)
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 isBICCC : IsBICCC A ⊥ □ _∨_ [_,_] κ κ'
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 bi-ccc-⊥ : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) → (C : CCC A ) → (B : BICCC A ) → {a : Obj A} → Hom A a (BICCC.⊥ B) → Iso A a (BICCC.⊥ B)
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 bi-ccc-⊥ A C B {a} f = record {
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 ≅→ = f
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 ; ≅← = □ a
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 ; iso→ = bi-ccc-1
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 ; iso← = bi-ccc-2 } where
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 open ≈-Reasoning A
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 open CCC.CCC C
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 open BICCC B
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 bi-ccc-0 : A [ A [ □ ( a ∧ ⊥ ) o π' ] ≈ id1 A ( a ∧ ⊥ ) ]
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 bi-ccc-0 = begin
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 □ ( a ∧ ⊥ ) o π'
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 ≈⟨ {!!} ⟩
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 id1 A ( a ∧ ⊥ )
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 bi-ccc-1 : A [ A [ □ a o f ] ≈ id1 A a ]
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 bi-ccc-1 = begin
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 □ a o f
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 ≈⟨ resp (sym (IsCCC.e3b isCCC) ) (sym ( IsBICCC.e5 isBICCC)) ⟩
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 (π o □ ( a ∧ ⊥ )) o (π' o < id1 A a , f > )
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 ≈⟨ sym assoc ⟩
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 π o ( □ ( a ∧ ⊥ ) o (π' o < id1 A a , f > ))
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 ≈⟨ cdr (assoc) ⟩
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 π o ( □ ( a ∧ ⊥ ) o π' ) o < id1 A a , f >
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 ≈⟨ cdr (car bi-ccc-0) ⟩
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 π o id1 A _ o < id1 A a , f >
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 ≈⟨ cdr idL ⟩
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 π o < id1 A a , f >
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 ≈⟨ IsCCC.e3a isCCC ⟩
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 id1 A a
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 bi-ccc-2 : A [ A [ f o □ a ] ≈ id1 A ⊥ ]
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 bi-ccc-2 = begin
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 f o □ a
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 ≈⟨ IsBICCC.e5 isBICCC ⟩
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 □ _
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 ≈↑⟨ IsBICCC.e5 isBICCC ⟩
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 id1 A ⊥
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
396bf884f5e7 bi-cartesian
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73