comparison nat.agda @ 73:b75b5792bd81

on going
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 26 Jul 2013 15:52:24 +0900
parents cbc30519e961
children 49e6eb3ef9c0
comparison
equal deleted inserted replaced
72:cbc30519e961 73:b75b5792bd81
90 let open ≈-Reasoning ( L ) in 90 let open ≈-Reasoning ( L ) in
91 begin L [ x o y ] ∎ 91 begin L [ x o y ] ∎
92 92
93 open Kleisli 93 open Kleisli
94 -- η(b) ○ f = f 94 -- η(b) ○ f = f
95 Lemma7 : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) → 95 Lemma7 : { a : Obj A } { b : Obj A } ( f : Hom A a ( FObj T b) )
96 { T : Functor A A } 96 → A [ join K (TMap η b) f ≈ f ]
97 ( η : NTrans A A identityFunctor T ) 97 Lemma7 {_} {b} f =
98 { μ : NTrans A A (T ○ T) T } 98 let open ≈-Reasoning (A) in
99 { a : Obj A } ( b : Obj A )
100 ( f : Hom A a ( FObj T b) )
101 ( m : Monad A T η μ )
102 { k : Kleisli A T η μ m}
103 → A [ join k (TMap η b) f ≈ f ]
104 Lemma7 c {T} η b f m {k} =
105 let open ≈-Reasoning (c)
106 μ = mu ( monad k )
107 in
108 begin 99 begin
109 join k (TMap η b) f 100 join K (TMap η b) f
110 ≈⟨ refl-hom ⟩ 101 ≈⟨ refl-hom ⟩
111 c [ TMap μ b o c [ FMap T ((TMap η b)) o f ] ] 102 A [ TMap μ b o A [ FMap T ((TMap η b)) o f ] ]
112 ≈⟨ IsCategory.associative (Category.isCategory c) ⟩ 103 ≈⟨ IsCategory.associative (Category.isCategory A) ⟩
113 c [ c [ TMap μ b o FMap T ((TMap η b)) ] o f ] 104 A [ A [ TMap μ b o FMap T ((TMap η b)) ] o f ]
114 ≈⟨ car ( IsMonad.unity2 ( isMonad ( monad k )) ) ⟩ 105 ≈⟨ car ( IsMonad.unity2 ( isMonad ( monad K )) ) ⟩
115 c [ id (FObj T b) o f ] 106 A [ id (FObj T b) o f ]
116 ≈⟨ IsCategory.identityL (Category.isCategory c) ⟩ 107 ≈⟨ IsCategory.identityL (Category.isCategory A) ⟩
117 f 108 f
118 109
119 110
120 -- f ○ η(a) = f 111 -- f ○ η(a) = f
121 Lemma8 : ( a : Obj A ) ( b : Obj A ) 112 Lemma8 : { a : Obj A } { b : Obj A }
122 ( f : Hom A a ( FObj T b) ) 113 ( f : Hom A a ( FObj T b) )
123 → A [ join K f (TMap η a) ≈ f ] 114 → A [ join K f (TMap η a) ≈ f ]
124 Lemma8 a b f = 115 Lemma8 {a} {b} f =
125 begin 116 begin
126 join K f (TMap η a) 117 join K f (TMap η a)
127 ≈⟨ refl-hom ⟩ 118 ≈⟨ refl-hom ⟩
128 A [ TMap μ b o A [ FMap T f o (TMap η a) ] ] 119 A [ TMap μ b o A [ FMap T f o (TMap η a) ] ]
129 ≈⟨ cdr ( nat η ) ⟩ 120 ≈⟨ cdr ( nat η ) ⟩
137 ∎ where 128 ∎ where
138 open ≈-Reasoning (A) 129 open ≈-Reasoning (A)
139 130
140 -- h ○ (g ○ f) = (h ○ g) ○ f 131 -- h ○ (g ○ f) = (h ○ g) ○ f
141 Lemma9 : { a b c d : Obj A } 132 Lemma9 : { a b c d : Obj A }
133 ( h : Hom A c ( FObj T d) )
134 ( g : Hom A b ( FObj T c) )
142 ( f : Hom A a ( FObj T b) ) 135 ( f : Hom A a ( FObj T b) )
143 ( g : Hom A b ( FObj T c) )
144 ( h : Hom A c ( FObj T d) )
145 → A [ join K h (join K g f) ≈ join K ( join K h g) f ] 136 → A [ join K h (join K g f) ≈ join K ( join K h g) f ]
146 Lemma9 {a} {b} {c} {d} f g h = 137 Lemma9 {a} {b} {c} {d} h g f =
147 begin 138 begin
148 join K h (join K g f) 139 join K h (join K g f)
149 ≈⟨⟩ 140 ≈⟨⟩
150 join K h ( ( TMap μ c o ( FMap T g o f ) ) ) 141 join K h ( ( TMap μ c o ( FMap T g o f ) ) )
151 ≈⟨ refl-hom ⟩ 142 ≈⟨ refl-hom ⟩
195 join K ( ( TMap μ d o ( FMap T h o g ) ) ) f 186 join K ( ( TMap μ d o ( FMap T h o g ) ) ) f
196 ≈⟨ refl-hom ⟩ 187 ≈⟨ refl-hom ⟩
197 join K ( join K h g) f 188 join K ( join K h g) f
198 ∎ where open ≈-Reasoning (A) 189 ∎ where open ≈-Reasoning (A)
199 190
200 KHom1 : (a : Obj A) → (b : Obj A) -> Set (c₂ ⊔ c₁)
201 KHom1 = {!!}
202
203 record KHom (a : Obj A) (b : Obj A) 191 record KHom (a : Obj A) (b : Obj A)
204 : Set (suc (c₂ ⊔ c₁)) where 192 : Set (suc (c₂ ⊔ c₁)) where
205 field 193 field
206 KMap : Hom A a ( FObj T b ) 194 KMap : Hom A a ( FObj T b )
207 195
208 K-id : {a : Obj A} → KHom a a 196 K-id : {a : Obj A} → KHom a a
209 K-id {a = a} = record { KMap = TMap η a } 197 K-id {a = a} = record { KMap = TMap η a }
210 198
211 open import Relation.Binary.Core 199 open import Relation.Binary.Core
212
213 _⋍_ :
214 { a : Obj A } { b : Obj A } (f g : KHom a b ) -> Set (suc ((c₂ ⊔ c₁) ⊔ ℓ))
215 _⋍_ = {!!}
216
217 open KHom 200 open KHom
201
202 _⋍_ : { a : Obj A } { b : Obj A } (f g : KHom a b ) -> Set ℓ -- (suc ((c₂ ⊔ c₁) ⊔ ℓ))
203 _⋍_ {a} {b} f g = A [ KMap f ≈ KMap g ]
218 204
219 _*_ : { a b : Obj A } → { c : Obj A } → 205 _*_ : { a b : Obj A } → { c : Obj A } →
220 ( KHom b c) → ( KHom a b) → KHom a c 206 ( KHom b c) → ( KHom a b) → KHom a c
221 _*_ {a} {b} {c} g f = record { KMap = join K {a} {b} {c} (KMap g) (KMap f) } 207 _*_ {a} {b} {c} g f = record { KMap = join K {a} {b} {c} (KMap g) (KMap f) }
222 208
226 ; identityR = KidR 212 ; identityR = KidR
227 ; o-resp-≈ = Ko-resp 213 ; o-resp-≈ = Ko-resp
228 ; associative = Kassoc 214 ; associative = Kassoc
229 } 215 }
230 where 216 where
217 open ≈-Reasoning (A)
231 isEquivalence : { a b : Obj A } -> 218 isEquivalence : { a b : Obj A } ->
232 IsEquivalence {_} {_} {KHom a b} _⋍_ 219 IsEquivalence {_} {_} {KHom a b} _⋍_
233 isEquivalence {C} {D} = 220 isEquivalence {C} {D} =
234 record { refl = λ {F} → ⋍-refl {F} 221 record { refl = λ {F} → ⋍-refl {F}
235 ; sym = λ {F} {G} → ⋍-sym {F} {G} 222 ; sym = λ {F} {G} → ⋍-sym {F} {G}
236 ; trans = λ {F} {G} {H} → ⋍-trans {F} {G} {H} 223 ; trans = λ {F} {G} {H} → ⋍-trans {F} {G} {H}
237 } where 224 } where
238 ⋍-refl : {F : KHom C D} → F ⋍ F 225 ⋍-refl : {F : KHom C D} → F ⋍ F
239 ⋍-refl = {!!} 226 ⋍-refl = refl-hom
240 ⋍-sym : {F G : KHom C D} → F ⋍ G → G ⋍ F 227 ⋍-sym : {F G : KHom C D} → F ⋍ G → G ⋍ F
241 ⋍-sym = {!!} 228 ⋍-sym = sym
242 ⋍-trans : {F G H : KHom C D} → F ⋍ G → G ⋍ H → F ⋍ H 229 ⋍-trans : {F G H : KHom C D} → F ⋍ G → G ⋍ H → F ⋍ H
243 ⋍-trans = {!!} 230 ⋍-trans = trans-hom
244 KidL : {C D : Obj A} -> {f : KHom C D} → (K-id * f) ⋍ f 231 KidL : {C D : Obj A} -> {f : KHom C D} → (K-id * f) ⋍ f
245 KidL = {!!} 232 KidL {_} {_} {f} = Lemma7 (KMap f)
246 KidR : {C D : Obj A} -> {f : KHom C D} → (f * K-id) ⋍ f 233 KidR : {C D : Obj A} -> {f : KHom C D} → (f * K-id) ⋍ f
247 KidR = {!!} 234 KidR {_} {_} {f} = Lemma8 (KMap f)
248 Ko-resp : {a b c : Obj A} -> {f g : KHom a b } → {h i : KHom b c } → 235 Ko-resp : {a b c : Obj A} -> {f g : KHom a b } → {h i : KHom b c } →
249 f ⋍ g → h ⋍ i → (h * f) ⋍ (i * g) 236 f ⋍ g → h ⋍ i → (h * f) ⋍ (i * g)
250 Ko-resp = {!!} 237 Ko-resp = {!!}
251 Kassoc : {a b c d : Obj A} -> {f : KHom c d } → {g : KHom b c } → {h : KHom a b } → 238 Kassoc : {a b c d : Obj A} -> {f : KHom c d } → {g : KHom b c } → {h : KHom a b } →
252 (f * (g * h)) ⋍ ((f * g) * h) 239 (f * (g * h)) ⋍ ((f * g) * h)
253 Kassoc = {!!} 240 Kassoc {_} {_} {_} {_} {f} {g} {h} = Lemma9 (KMap f) (KMap g) (KMap h)
254 241
255 242