comparison nat.agda @ 76:6c6c3dd8ef12

U done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 26 Jul 2013 20:54:41 +0900
parents 8e665152c306
children 528c7e27af91
comparison
equal deleted inserted replaced
75:8e665152c306 76:6c6c3dd8ef12
268 FObj = FObj T 268 FObj = FObj T
269 ; FMap = ufmap 269 ; FMap = ufmap
270 ; isFunctor = record 270 ; isFunctor = record
271 { ≈-cong = ≈-cong 271 { ≈-cong = ≈-cong
272 ; identity = identity 272 ; identity = identity
273 ; distr = distr 273 ; distr = distr1
274 } 274 }
275 } where 275 } where
276 ufmap : {a b : Obj A} (f : KHom a b ) -> Hom A (FObj T a) (FObj T b) 276 ufmap : {a b : Obj A} (f : KHom a b ) -> Hom A (FObj T a) (FObj T b)
277 ufmap {a} {b} f = A [ TMap μ (b) o FMap T (KMap f) ] 277 ufmap {a} {b} f = A [ TMap μ (b) o FMap T (KMap f) ]
278 identity : {a : Obj A} → A [ ufmap (K-id {a}) ≈ id1 A (FObj T a) ] 278 identity : {a : Obj A} → A [ ufmap (K-id {a}) ≈ id1 A (FObj T a) ]
287 begin 287 begin
288 TMap μ (b) o FMap T (KMap f) 288 TMap μ (b) o FMap T (KMap f)
289 ≈⟨ cdr (fcong T f≈g) ⟩ 289 ≈⟨ cdr (fcong T f≈g) ⟩
290 TMap μ (b) o FMap T (KMap g) 290 TMap μ (b) o FMap T (KMap g)
291 291
292 distr : {a b c : Obj A} {f : KHom a b} {g : KHom b c} → A [ ufmap (g * f) ≈ (A [ ufmap g o ufmap f ] )] 292 distr1 : {a b c : Obj A} {f : KHom a b} {g : KHom b c} → A [ ufmap (g * f) ≈ (A [ ufmap g o ufmap f ] )]
293 distr {_} {_} {c} {f} {g} = let open ≈-Reasoning (A) in 293 distr1 {a} {b} {c} {f} {g} = let open ≈-Reasoning (A) in
294 begin 294 begin
295 ufmap (g * f) 295 ufmap (g * f)
296 -- ≈⟨⟩ 296 ≈⟨⟩
297 -- TMap μ (FObj T c) o FMap T ( (TMap μ (c) o FMap T (KMap g)) o (KMap f)) 297 ufmap {a} {c} ( record { KMap = TMap μ (c) o (FMap T (KMap g) o (KMap f)) } )
298 ≈⟨ {!!} ⟩ 298 ≈⟨⟩
299 TMap μ (c) o FMap T ( TMap μ (c) o (FMap T (KMap g) o (KMap f)))
300 ≈⟨ cdr ( distr T) ⟩
301 TMap μ (c) o (( FMap T ( TMap μ (c)) o FMap T (FMap T (KMap g) o (KMap f))))
302 ≈⟨ assoc ⟩
303 (TMap μ (c) o ( FMap T ( TMap μ (c)))) o FMap T (FMap T (KMap g) o (KMap f))
304 ≈⟨ car (sym (IsMonad.assoc (isMonad M))) ⟩
305 (TMap μ (c) o ( TMap μ (FObj T c))) o FMap T (FMap T (KMap g) o (KMap f))
306 ≈⟨ sym assoc ⟩
307 TMap μ (c) o (( TMap μ (FObj T c)) o FMap T (FMap T (KMap g) o (KMap f)))
308 ≈⟨ cdr (cdr (distr T)) ⟩
309 TMap μ (c) o (( TMap μ (FObj T c)) o (FMap T (FMap T (KMap g)) o FMap T (KMap f)))
310 ≈⟨ cdr (assoc) ⟩
311 TMap μ (c) o ((( TMap μ (FObj T c)) o (FMap T (FMap T (KMap g)))) o FMap T (KMap f))
312 ≈⟨ sym (cdr (car (nat μ ))) ⟩
313 TMap μ (c) o ((FMap T (KMap g ) o TMap μ (b)) o FMap T (KMap f ))
314 ≈⟨ cdr (sym assoc) ⟩
315 TMap μ (c) o (FMap T (KMap g ) o ( TMap μ (b) o FMap T (KMap f )))
316 ≈⟨ assoc ⟩
317 ( TMap μ (c) o FMap T (KMap g ) ) o ( TMap μ (b) o FMap T (KMap f ) )
318 ≈⟨⟩
299 ufmap g o ufmap f 319 ufmap g o ufmap f
300 320
301 321
302 322
303 ffmap : {a b : Obj A} (f : Hom A a b) -> KHom a b 323 ffmap : {a b : Obj A} (f : Hom A a b) -> KHom a b
308 FObj = \a -> a 328 FObj = \a -> a
309 ; FMap = ffmap 329 ; FMap = ffmap
310 ; isFunctor = record 330 ; isFunctor = record
311 { ≈-cong = ≈-cong 331 { ≈-cong = ≈-cong
312 ; identity = identity 332 ; identity = identity
313 ; distr = distr 333 ; distr = distr1
314 } 334 }
315 } where 335 } where
316 identity : {a : Obj A} → A [ A [ TMap η a o id1 A a ] ≈ TMap η a ] 336 identity : {a : Obj A} → A [ A [ TMap η a o id1 A a ] ≈ TMap η a ]
317 identity {a} = IsCategory.identityR ( Category.isCategory A) 337 identity {a} = IsCategory.identityR ( Category.isCategory A)
318 lemma1 : {a b : Obj A} {f g : Hom A a b} → A [ f ≈ g ] → A [ TMap η b ≈ TMap η b ] 338 lemma1 : {a b : Obj A} {f g : Hom A a b} → A [ f ≈ g ] → A [ TMap η b ≈ TMap η b ]
319 lemma1 f≈g = IsEquivalence.refl (IsCategory.isEquivalence ( Category.isCategory A )) 339 lemma1 f≈g = IsEquivalence.refl (IsCategory.isEquivalence ( Category.isCategory A ))
320 ≈-cong : {a b : Obj A} {f g : Hom A a b} → A [ f ≈ g ] → A [ A [ TMap η (Category.cod A f) o f ] ≈ A [ TMap η (Category.cod A g) o g ] ] 340 ≈-cong : {a b : Obj A} {f g : Hom A a b} → A [ f ≈ g ] → A [ A [ TMap η (Category.cod A f) o f ] ≈ A [ TMap η (Category.cod A g) o g ] ]
321 ≈-cong f≈g = (IsCategory.o-resp-≈ (Category.isCategory A)) f≈g ( lemma1 f≈g ) 341 ≈-cong f≈g = (IsCategory.o-resp-≈ (Category.isCategory A)) f≈g ( lemma1 f≈g )
322 distr : {a b c : Obj A} {f : Hom A a b} {g : Hom A b c} → 342 distr1 : {a b c : Obj A} {f : Hom A a b} {g : Hom A b c} →
323 ( ffmap (A [ g o f ]) ⋍ ( ffmap g * ffmap f ) ) 343 ( ffmap (A [ g o f ]) ⋍ ( ffmap g * ffmap f ) )
324 distr {_} {_} {_} {f} {g} = let open ≈-Reasoning (A) in 344 distr1 {_} {_} {_} {f} {g} = let open ≈-Reasoning (A) in
325 begin 345 begin
326 KMap (ffmap (A [ g o f ])) 346 KMap (ffmap (A [ g o f ]))
327 ≈⟨ {!!} ⟩ 347 ≈⟨ {!!} ⟩
328 KMap ( ffmap g * ffmap f ) 348 KMap ( ffmap g * ffmap f )
329 349