annotate CCCGraph.agda @ 817:177162990879

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 28 Apr 2019 12:37:34 +0900
parents CCChom.agda@4e48b331020a
children bc244fc604c8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
779
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 open import Level
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 open import Category
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
3 module CCCgraph where
779
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import HomReasoning
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import cat-utility
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
7 open import Data.Product renaming (_×_ to _/\_ ) hiding ( <_,_> )
784
f27d966939f8 add CCC hom
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 783
diff changeset
8 open import Category.Constructions.Product
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
9 open import Relation.Binary.PropositionalEquality hiding ( [_] )
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
10 open import CCC
779
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 open Functor
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 -- ccc-1 : Hom A a 1 ≅ {*}
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 -- ccc-2 : Hom A c (a × b) ≅ (Hom A c a ) × ( Hom A c b )
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 -- ccc-3 : Hom A a (c ^ b) ≅ Hom A (a × b) c
6b4bd02efd80 CCC start
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
18 open import Category.Sets
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
19
815
bb9fd483f560 simpler proof of CCC from graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 814
diff changeset
20 -- Sets is a CCC
bb9fd483f560 simpler proof of CCC from graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 814
diff changeset
21
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
22 postulate extensionality : { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) → Relation.Binary.PropositionalEquality.Extensionality c₂ c₂
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
23
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
24 data One {l : Level} : Set l where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
25 OneObj : One -- () in Haskell ( or any one object set )
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
26
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
27 sets : {l : Level } → CCC (Sets {l})
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
28 sets {l} = record {
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
29 1 = One
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
30 ; ○ = λ _ → λ _ → OneObj
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
31 ; _∧_ = _∧_
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
32 ; <_,_> = <,>
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
33 ; π = π
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
34 ; π' = π'
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
35 ; _<=_ = _<=_
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
36 ; _* = _*
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
37 ; ε = ε
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
38 ; isCCC = isCCC
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
39 } where
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
40 1 : Obj Sets
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
41 1 = One
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
42 ○ : (a : Obj Sets ) → Hom Sets a 1
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
43 ○ a = λ _ → OneObj
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
44 _∧_ : Obj Sets → Obj Sets → Obj Sets
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
45 _∧_ a b = a /\ b
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
46 <,> : {a b c : Obj Sets } → Hom Sets c a → Hom Sets c b → Hom Sets c ( a ∧ b)
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
47 <,> f g = λ x → ( f x , g x )
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
48 π : {a b : Obj Sets } → Hom Sets (a ∧ b) a
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
49 π {a} {b} = proj₁
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
50 π' : {a b : Obj Sets } → Hom Sets (a ∧ b) b
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
51 π' {a} {b} = proj₂
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
52 _<=_ : (a b : Obj Sets ) → Obj Sets
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
53 a <= b = b → a
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
54 _* : {a b c : Obj Sets } → Hom Sets (a ∧ b) c → Hom Sets a (c <= b)
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
55 f * = λ x → λ y → f ( x , y )
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
56 ε : {a b : Obj Sets } → Hom Sets ((a <= b ) ∧ b) a
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
57 ε {a} {b} = λ x → ( proj₁ x ) ( proj₂ x )
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
58 isCCC : CCC.IsCCC Sets 1 ○ _∧_ <,> π π' _<=_ _* ε
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
59 isCCC = record {
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
60 e2 = e2
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
61 ; e3a = λ {a} {b} {c} {f} {g} → e3a {a} {b} {c} {f} {g}
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
62 ; e3b = λ {a} {b} {c} {f} {g} → e3b {a} {b} {c} {f} {g}
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
63 ; e3c = e3c
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
64 ; π-cong = π-cong
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
65 ; e4a = e4a
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
66 ; e4b = e4b
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
67 ; *-cong = *-cong
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
68 } where
793
f37f11e1b871 Hom a,b = Hom 1 b^a
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 790
diff changeset
69 e2 : {a : Obj Sets} {f : Hom Sets a 1} → Sets [ f ≈ ○ a ]
f37f11e1b871 Hom a,b = Hom 1 b^a
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 790
diff changeset
70 e2 {a} {f} = extensionality Sets ( λ x → e20 x )
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
71 where
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
72 e20 : (x : a ) → f x ≡ ○ a x
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
73 e20 x with f x
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
74 e20 x | OneObj = refl
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
75 e3a : {a b c : Obj Sets} {f : Hom Sets c a} {g : Hom Sets c b} →
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
76 Sets [ ( Sets [ π o ( <,> f g) ] ) ≈ f ]
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
77 e3a = refl
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
78 e3b : {a b c : Obj Sets} {f : Hom Sets c a} {g : Hom Sets c b} →
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
79 Sets [ Sets [ π' o ( <,> f g ) ] ≈ g ]
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
80 e3b = refl
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
81 e3c : {a b c : Obj Sets} {h : Hom Sets c (a ∧ b)} →
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
82 Sets [ <,> (Sets [ π o h ]) (Sets [ π' o h ]) ≈ h ]
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
83 e3c = refl
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
84 π-cong : {a b c : Obj Sets} {f f' : Hom Sets c a} {g g' : Hom Sets c b} →
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
85 Sets [ f ≈ f' ] → Sets [ g ≈ g' ] → Sets [ <,> f g ≈ <,> f' g' ]
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
86 π-cong refl refl = refl
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
87 e4a : {a b c : Obj Sets} {h : Hom Sets (c ∧ b) a} →
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
88 Sets [ Sets [ ε o <,> (Sets [ h * o π ]) π' ] ≈ h ]
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
89 e4a = refl
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
90 e4b : {a b c : Obj Sets} {k : Hom Sets c (a <= b)} →
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
91 Sets [ (Sets [ ε o <,> (Sets [ k o π ]) π' ]) * ≈ k ]
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
92 e4b = refl
795
030c5b87ed78 ccc to adjunction done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 794
diff changeset
93 *-cong : {a b c : Obj Sets} {f f' : Hom Sets (a ∧ b) c} →
790
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
94 Sets [ f ≈ f' ] → Sets [ f * ≈ f' * ]
1e7319868d77 Sets is CCC
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 789
diff changeset
95 *-cong refl = refl
787
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 786
diff changeset
96
803
984d20c10c87 simpler graph to category
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 802
diff changeset
97 module ccc-from-graph where
787
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 786
diff changeset
98
802
7bc41fc7b563 graph with positive logic to Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 801
diff changeset
99 open import Relation.Binary.PropositionalEquality renaming ( cong to ≡-cong ) hiding ( [_] )
801
aa4fbd007247 using setoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 800
diff changeset
100 open import discrete
809
0976d576f5f6 <_,_> as function on Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 808
diff changeset
101 open graphtocat
799
82a8c1ab4ef5 graph to category
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 795
diff changeset
102
803
984d20c10c87 simpler graph to category
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 802
diff changeset
103 open Graph
984d20c10c87 simpler graph to category
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 802
diff changeset
104
816
4e48b331020a simpler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 815
diff changeset
105 data Objs (G : Graph ) : Set where -- formula
812
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
106 atom : (vertex G) → Objs G
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
107 ⊤ : Objs G
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
108 _∧_ : Objs G → Objs G → Objs G
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
109 _<=_ : Objs G → Objs G → Objs G
803
984d20c10c87 simpler graph to category
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 802
diff changeset
110
816
4e48b331020a simpler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 815
diff changeset
111 data Arrow (G : Graph ) : Objs G → Objs G → Set where --- proof
812
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
112 arrow : {a b : vertex G} → (edge G) a b → Arrow G (atom a) (atom b)
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
113 ○ : (a : Objs G ) → Arrow G a ⊤
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
114 π : {a b : Objs G } → Arrow G ( a ∧ b ) a
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
115 π' : {a b : Objs G } → Arrow G ( a ∧ b ) b
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
116 ε : {a b : Objs G } → Arrow G ((a <= b) ∧ b ) a
814
e4986625ddd7 add <= and <,>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 812
diff changeset
117 <_,_> : {a b c : Objs G } → Arrow G c a → Arrow G c b → Arrow G c (a ∧ b)
e4986625ddd7 add <= and <,>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 812
diff changeset
118 _* : {a b c : Objs G } → Arrow G (c ∧ b ) a → Arrow G c ( a <= b )
803
984d20c10c87 simpler graph to category
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 802
diff changeset
119
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
120 record SM {v : Level} : Set (suc v) where
806
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
121 field
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
122 graph : Graph {v}
806
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
123 sobj : vertex graph → Set
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
124 smap : { a b : vertex graph } → edge graph a b → sobj a → sobj b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
125
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
126 open SM
803
984d20c10c87 simpler graph to category
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 802
diff changeset
127
802
7bc41fc7b563 graph with positive logic to Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 801
diff changeset
128 -- positive intutionistic calculus
811
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 810
diff changeset
129 PL : (G : SM) → Graph
812
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
130 PL G = record { vertex = Objs (graph G) ; edge = Arrow (graph G) }
806
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
131 DX : (G : SM) → Category Level.zero Level.zero Level.zero
811
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 810
diff changeset
132 DX G = GraphtoCat (PL G)
801
aa4fbd007247 using setoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 800
diff changeset
133
802
7bc41fc7b563 graph with positive logic to Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 801
diff changeset
134 -- open import Category.Sets
7bc41fc7b563 graph with positive logic to Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 801
diff changeset
135 -- postulate extensionality : { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) → Relation.Binary.PropositionalEquality.Extensionality c₂ c₂
801
aa4fbd007247 using setoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 800
diff changeset
136
812
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
137 fobj : {G : SM} ( a : Objs (graph G) ) → Set
806
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
138 fobj {G} (atom x) = sobj G x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
139 fobj {G} (a ∧ b) = (fobj {G} a ) /\ (fobj {G} b )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 805
diff changeset
140 fobj {G} (a <= b) = fobj {G} b → fobj {G} a
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
141 fobj ⊤ = One
812
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
142 amap : {G : SM} { a b : Objs (graph G) } → Arrow (graph G) a b → fobj {G} a → fobj {G} b
816
4e48b331020a simpler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 815
diff changeset
143 amap {G} (arrow x) = smap G x
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
144 amap (○ a) _ = OneObj
816
4e48b331020a simpler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 815
diff changeset
145 amap π ( x , _) = x
4e48b331020a simpler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 815
diff changeset
146 amap π'( _ , x) = x
4e48b331020a simpler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 815
diff changeset
147 amap ε ( f , x ) = f x
4e48b331020a simpler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 815
diff changeset
148 amap < f , g > x = (amap f x , amap g x)
4e48b331020a simpler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 815
diff changeset
149 amap (f *) x = λ y → amap f ( x , y )
812
4ff300e1e98c graph to CCC done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 811
diff changeset
150 fmap : {G : SM} { a b : Objs (graph G) } → Hom (DX G) a b → fobj {G} a → fobj {G} b
816
4e48b331020a simpler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 815
diff changeset
151 fmap {G} {a} (id a) = λ z → z
4e48b331020a simpler
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 815
diff changeset
152 fmap {G} (next x f ) = Sets [ amap {G} x o fmap f ]
805
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 804
diff changeset
153
815
bb9fd483f560 simpler proof of CCC from graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 814
diff changeset
154 -- CS is a map from Positive logic to Sets
bb9fd483f560 simpler proof of CCC from graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 814
diff changeset
155 -- Sets is CCC, so we have a cartesian closed category generated by a graph
bb9fd483f560 simpler proof of CCC from graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 814
diff changeset
156 -- as a sub category of Sets
bb9fd483f560 simpler proof of CCC from graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 814
diff changeset
157
809
0976d576f5f6 <_,_> as function on Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 808
diff changeset
158 CS : (G : SM ) → Functor (DX G) (Sets {Level.zero})
0976d576f5f6 <_,_> as function on Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 808
diff changeset
159 FObj (CS G) a = fobj a
0976d576f5f6 <_,_> as function on Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 808
diff changeset
160 FMap (CS G) {a} {b} f = fmap {G} {a} {b} f
0976d576f5f6 <_,_> as function on Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 808
diff changeset
161 isFunctor (CS G) = isf where
805
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 804
diff changeset
162 _++_ = Category._o_ (DX G)
811
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 810
diff changeset
163 ++idR = IsCategory.identityR ( Category.isCategory ( DX G ) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 810
diff changeset
164 distr : {a b c : Obj (DX G)} { f : Hom (DX G) a b } { g : Hom (DX G) b c } → (z : fobj {G} a ) → fmap (g ++ f) z ≡ fmap g (fmap f z)
815
bb9fd483f560 simpler proof of CCC from graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 814
diff changeset
165 distr {a} {b} {c} {f} {next {b} {d} {c} x g} z = adistr (distr {a} {b} {d} {f} {g} z ) x where
bb9fd483f560 simpler proof of CCC from graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 814
diff changeset
166 adistr : fmap (g ++ f) z ≡ fmap g (fmap f z) →
bb9fd483f560 simpler proof of CCC from graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 814
diff changeset
167 ( x : Arrow (graph G) d c ) → fmap ( next x (g ++ f) ) z ≡ fmap ( next x g ) (fmap f z )
bb9fd483f560 simpler proof of CCC from graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 814
diff changeset
168 adistr eq x = cong ( λ k → amap x k ) eq
811
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 810
diff changeset
169 distr {a} {b} {b} {f} {id b} z = refl
805
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 804
diff changeset
170 isf : IsFunctor (DX G) Sets fobj fmap
809
0976d576f5f6 <_,_> as function on Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 808
diff changeset
171 IsFunctor.identity isf = extensionality Sets ( λ x → refl )
802
7bc41fc7b563 graph with positive logic to Sets
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 801
diff changeset
172 IsFunctor.≈-cong isf refl = refl
811
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 810
diff changeset
173 IsFunctor.distr isf {a} {b} {c} {g} {f} = extensionality Sets ( λ z → distr {a} {b} {c} {g} {f} z )
801
aa4fbd007247 using setoid
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 800
diff changeset
174
817
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
175 --- record CCCObj { c₁ c₂ ℓ : Level} : Set (suc (c₁ ⊔ c₂ ⊔ ℓ)) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
176 --- field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
177 --- cat : Category c₁ c₂ ℓ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
178 --- ccc : CCC cat
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
179 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
180 --- open CCCObj
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
181 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
182 --- record CCCMap {c₁ c₂ ℓ : Level} (A B : CCCObj {c₁} {c₂} {ℓ} ) : Set (suc (c₁ ⊔ c₂ ⊔ ℓ )) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
183 --- field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
184 --- cmap : Functor (cat A ) (cat B )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
185 --- ccf : {A B : CCCObj {c₁} {c₂} {ℓ} } → CCC (cat A) → CCC (cat B)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
186 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
187 --- Cart : {c₁ c₂ ℓ : Level} → Category (suc (c₁ ⊔ c₂ ⊔ ℓ)) (suc (c₁ ⊔ c₂ ⊔ ℓ))(suc (c₁ ⊔ c₂ ⊔ ℓ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
188 --- Cart {c₁} {c₂} {ℓ} = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
189 --- Obj = CCCObj {c₁} {c₂} {ℓ}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
190 --- ; Hom = CCCMap
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
191 --- ; _o_ = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
192 --- ; _≈_ = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
193 --- ; Id = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
194 --- ; isCategory = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
195 --- identityL = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
196 --- ; identityR = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
197 --- ; o-resp-≈ = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
198 --- ; associative = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
199 --- }}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
200 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
201 --- open import discrete
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
202 --- open Graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
203 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
204 --- record Gmap {v : Level} (x y : Graph {v} ) : Set (suc v) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
205 --- vmap : vertex x → vertex y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
206 --- emap : {a b : vertex x} → edge x a b → edge y (vmap a) (vmap b)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
207 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
208 --- Grp : {v : Level} → Category (suc v) v v
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
209 --- Grp {v} = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
210 --- Obj = Graph {v}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
211 --- ; Hom = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
212 --- ; _o_ = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
213 --- ; _≈_ = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
214 --- ; Id = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
215 --- ; isCategory = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
216 --- identityL = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
217 --- ; identityR = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
218 --- ; o-resp-≈ = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
219 --- ; associative = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
220 --- }}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
221 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
222 --- UX : {c₁ c₂ ℓ : Level} → Functor (Cart {c₁} {c₂} {ℓ} ) (Grp {c₁})
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
223 --- UX = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
224 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
225 --- open ccc-from-graph
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
226 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
227 --- sm : {v : Level } → Graph {v} → SM {v}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
228 --- SM.graph (sm g) = g
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
229 --- SM.sobj (sm g) = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
230 --- SM.smap (sm g) = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
231 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
232 --- HX : {v : Level } ( x : Obj (Grp {v}) ) → Obj (Grp {v})
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
233 --- HX {v} x = {!!} -- FObj UX ( record { cat = Sets {v} ; ccc = sets } )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
234 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
235 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
236 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 816
diff changeset
237 ---