Mercurial > hg > Members > kono > Proof > category
comparison universal-mapping.agda @ 300:d6a6dd305da2
arrow and lambda fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 29 Sep 2013 14:01:07 +0900 |
parents | 63f6157a6a19 |
children | a5f2ca67e7c5 |
comparison
equal
deleted
inserted
replaced
299:8c72f5284bc8 | 300:d6a6dd305da2 |
---|---|
340 | 340 |
341 -- Assuming | 341 -- Assuming |
342 -- naturality of left (Φ) | 342 -- naturality of left (Φ) |
343 -- k = Hom A b b' ; f' = k o f h Hom A a' a ; f' = f o h | 343 -- k = Hom A b b' ; f' = k o f h Hom A a' a ; f' = f o h |
344 -- left left | 344 -- left left |
345 -- f : Hom A F(a) b --------> f* : Hom B a U(b) f' : Hom A F(a')b -------> f'* : Hom B a' U(b) | 345 -- f : Hom A F(a) b -------→ f* : Hom B a U(b) f' : Hom A F(a')b ------→ f'* : Hom B a' U(b) |
346 -- | | | | | 346 -- | | | | |
347 -- |k* |U(k*) |F(h*) |h* | 347 -- |k* |U(k*) |F(h*) |h* |
348 -- v v v v | 348 -- v v v v |
349 -- f': Hom A F(a) b'-------> f'* : Hom B a U(b') f: Hom A F(a) b ---------> f* : Hom B a U(b) | 349 -- f': Hom A F(a) b'------→ f'* : Hom B a U(b') f: Hom A F(a) b --------→ f* : Hom B a U(b) |
350 -- left left | 350 -- left left |
351 | 351 |
352 record UnityOfOppsite {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') | 352 record UnityOfOppsite {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') |
353 ( U : Functor B A ) | 353 ( U : Functor B A ) |
354 ( F : Functor A B ) | 354 ( F : Functor A B ) |
357 right : {a : Obj A} { b : Obj B } → Hom A a ( FObj U b ) → Hom B (FObj F a) b | 357 right : {a : Obj A} { b : Obj B } → Hom A a ( FObj U b ) → Hom B (FObj F a) b |
358 left : {a : Obj A} { b : Obj B } → Hom B (FObj F a) b → Hom A a ( FObj U b ) | 358 left : {a : Obj A} { b : Obj B } → Hom B (FObj F a) b → Hom A a ( FObj U b ) |
359 right-injective : {a : Obj A} { b : Obj B } → {f : Hom A a (FObj U b) } → A [ left ( right f ) ≈ f ] | 359 right-injective : {a : Obj A} { b : Obj B } → {f : Hom A a (FObj U b) } → A [ left ( right f ) ≈ f ] |
360 left-injective : {a : Obj A} { b : Obj B } → {f : Hom B (FObj F a) b } → B [ right ( left f ) ≈ f ] | 360 left-injective : {a : Obj A} { b : Obj B } → {f : Hom B (FObj F a) b } → B [ right ( left f ) ≈ f ] |
361 --- naturality of Φ | 361 --- naturality of Φ |
362 left-commute1 : {a : Obj A} {b b' : Obj B } -> | 362 left-commute1 : {a : Obj A} {b b' : Obj B } → |
363 { f : Hom B (FObj F a) b } -> { k : Hom B b b' } -> | 363 { f : Hom B (FObj F a) b } → { k : Hom B b b' } → |
364 A [ left ( B [ k o f ] ) ≈ A [ FMap U k o left f ] ] | 364 A [ left ( B [ k o f ] ) ≈ A [ FMap U k o left f ] ] |
365 left-commute2 : {a a' : Obj A} {b : Obj B } -> | 365 left-commute2 : {a a' : Obj A} {b : Obj B } → |
366 { f : Hom B (FObj F a) b } -> { h : Hom A a' a } -> | 366 { f : Hom B (FObj F a) b } → { h : Hom A a' a } → |
367 A [ left ( B [ f o FMap F h ] ) ≈ A [ left f o h ] ] | 367 A [ left ( B [ f o FMap F h ] ) ≈ A [ left f o h ] ] |
368 r-cong : {a : Obj A} { b : Obj B } → { f g : Hom A a ( FObj U b ) } → A [ f ≈ g ] → B [ right f ≈ right g ] | 368 r-cong : {a : Obj A} { b : Obj B } → { f g : Hom A a ( FObj U b ) } → A [ f ≈ g ] → B [ right f ≈ right g ] |
369 l-cong : {a : Obj A} { b : Obj B } → { f g : Hom B (FObj F a) b } → B [ f ≈ g ] → A [ left f ≈ left g ] | 369 l-cong : {a : Obj A} { b : Obj B } → { f g : Hom B (FObj F a) b } → B [ f ≈ g ] → A [ left f ≈ left g ] |
370 -- naturality of right (Φ-1) | 370 -- naturality of right (Φ-1) |
371 right-commute1 : {a : Obj A} {b b' : Obj B } -> | 371 right-commute1 : {a : Obj A} {b b' : Obj B } → |
372 { g : Hom A a (FObj U b)} -> { k : Hom B b b' } -> | 372 { g : Hom A a (FObj U b)} → { k : Hom B b b' } → |
373 B [ B [ k o right g ] ≈ right ( A [ FMap U k o g ] ) ] | 373 B [ B [ k o right g ] ≈ right ( A [ FMap U k o g ] ) ] |
374 right-commute1 {a} {b} {b'} {g} {k} = let open ≈-Reasoning (B) in | 374 right-commute1 {a} {b} {b'} {g} {k} = let open ≈-Reasoning (B) in |
375 begin | 375 begin |
376 k o right g | 376 k o right g |
377 ≈⟨ sym left-injective ⟩ | 377 ≈⟨ sym left-injective ⟩ |
379 ≈⟨ r-cong left-commute1 ⟩ | 379 ≈⟨ r-cong left-commute1 ⟩ |
380 right ( A [ FMap U k o left ( right g ) ] ) | 380 right ( A [ FMap U k o left ( right g ) ] ) |
381 ≈⟨ r-cong (lemma-1 g k) ⟩ | 381 ≈⟨ r-cong (lemma-1 g k) ⟩ |
382 right ( A [ FMap U k o g ] ) | 382 right ( A [ FMap U k o g ] ) |
383 ∎ where | 383 ∎ where |
384 lemma-1 : {a : Obj A} {b b' : Obj B } -> | 384 lemma-1 : {a : Obj A} {b b' : Obj B } → |
385 ( g : Hom A a (FObj U b)) -> ( k : Hom B b b' ) -> | 385 ( g : Hom A a (FObj U b)) → ( k : Hom B b b' ) → |
386 A [ A [ FMap U k o left ( right g ) ] ≈ A [ FMap U k o g ] ] | 386 A [ A [ FMap U k o left ( right g ) ] ≈ A [ FMap U k o g ] ] |
387 lemma-1 g k = let open ≈-Reasoning (A) in | 387 lemma-1 g k = let open ≈-Reasoning (A) in |
388 begin | 388 begin |
389 FMap U k o left ( right g ) | 389 FMap U k o left ( right g ) |
390 ≈⟨ cdr ( right-injective) ⟩ | 390 ≈⟨ cdr ( right-injective) ⟩ |
391 FMap U k o g | 391 FMap U k o g |
392 ∎ | 392 ∎ |
393 right-commute2 : {a a' : Obj A} {b : Obj B } -> | 393 right-commute2 : {a a' : Obj A} {b : Obj B } → |
394 { g : Hom A a (FObj U b) } -> { h : Hom A a' a } -> | 394 { g : Hom A a (FObj U b) } → { h : Hom A a' a } → |
395 B [ B [ right g o FMap F h ] ≈ right ( A [ g o h ] ) ] | 395 B [ B [ right g o FMap F h ] ≈ right ( A [ g o h ] ) ] |
396 right-commute2 {a} {a'} {b} {g} {h} = let open ≈-Reasoning (B) in | 396 right-commute2 {a} {a'} {b} {g} {h} = let open ≈-Reasoning (B) in |
397 begin | 397 begin |
398 right g o FMap F h | 398 right g o FMap F h |
399 ≈⟨ sym left-injective ⟩ | 399 ≈⟨ sym left-injective ⟩ |
401 ≈⟨ r-cong left-commute2 ⟩ | 401 ≈⟨ r-cong left-commute2 ⟩ |
402 right ( A [ left ( right g ) o h ] ) | 402 right ( A [ left ( right g ) o h ] ) |
403 ≈⟨ r-cong ( lemma-2 g h ) ⟩ | 403 ≈⟨ r-cong ( lemma-2 g h ) ⟩ |
404 right ( A [ g o h ] ) | 404 right ( A [ g o h ] ) |
405 ∎ where | 405 ∎ where |
406 lemma-2 : {a a' : Obj A} {b : Obj B } -> | 406 lemma-2 : {a a' : Obj A} {b : Obj B } → |
407 ( g : Hom A a (FObj U b)) -> ( h : Hom A a' a ) -> | 407 ( g : Hom A a (FObj U b)) → ( h : Hom A a' a ) → |
408 A [ A [ left ( right g ) o h ] ≈ A [ g o h ] ] | 408 A [ A [ left ( right g ) o h ] ≈ A [ g o h ] ] |
409 lemma-2 g h = let open ≈-Reasoning (A) in car ( right-injective ) | 409 lemma-2 g h = let open ≈-Reasoning (A) in car ( right-injective ) |
410 | 410 |
411 Adj2UO : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') | 411 Adj2UO : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') |
412 { U : Functor B A } | 412 { U : Functor B A } |
460 ≈⟨ cdr ( IsAdjunction.adjoint2 ( isAdjunction adj )) ⟩ | 460 ≈⟨ cdr ( IsAdjunction.adjoint2 ( isAdjunction adj )) ⟩ |
461 f o id1 B (FObj F a) | 461 f o id1 B (FObj F a) |
462 ≈⟨ idR ⟩ | 462 ≈⟨ idR ⟩ |
463 f | 463 f |
464 ∎ | 464 ∎ |
465 left-commute1 : {a : Obj A} {b b' : Obj B } -> | 465 left-commute1 : {a : Obj A} {b b' : Obj B } → |
466 { f : Hom B (FObj F a) b } -> { k : Hom B b b' } -> | 466 { f : Hom B (FObj F a) b } → { k : Hom B b b' } → |
467 A [ left ( B [ k o f ] ) ≈ A [ FMap U k o left f ] ] | 467 A [ left ( B [ k o f ] ) ≈ A [ FMap U k o left f ] ] |
468 left-commute1 {a} {b} {b'} {f} {k} = let open ≈-Reasoning (A) in | 468 left-commute1 {a} {b} {b'} {f} {k} = let open ≈-Reasoning (A) in |
469 begin | 469 begin |
470 left ( B [ k o f ] ) | 470 left ( B [ k o f ] ) |
471 ≈⟨⟩ | 471 ≈⟨⟩ |
475 ≈↑⟨ assoc ⟩ | 475 ≈↑⟨ assoc ⟩ |
476 FMap U k o ( FMap U f o (TMap η a) ) | 476 FMap U k o ( FMap U f o (TMap η a) ) |
477 ≈⟨⟩ | 477 ≈⟨⟩ |
478 FMap U k o left f | 478 FMap U k o left f |
479 ∎ | 479 ∎ |
480 left-commute2 : {a a' : Obj A} {b : Obj B } -> | 480 left-commute2 : {a a' : Obj A} {b : Obj B } → |
481 { f : Hom B (FObj F a) b } -> { h : Hom A a' a} -> | 481 { f : Hom B (FObj F a) b } → { h : Hom A a' a} → |
482 A [ left ( B [ f o FMap F h ] ) ≈ A [ left f o h ] ] | 482 A [ left ( B [ f o FMap F h ] ) ≈ A [ left f o h ] ] |
483 left-commute2 {a'} {a} {b} {f} {h} = let open ≈-Reasoning (A) in | 483 left-commute2 {a'} {a} {b} {f} {h} = let open ≈-Reasoning (A) in |
484 begin | 484 begin |
485 left ( B [ f o FMap F h ] ) | 485 left ( B [ f o FMap F h ] ) |
486 ≈⟨⟩ | 486 ≈⟨⟩ |
503 l-cong eq = let open ≈-Reasoning (A) in ( car ( fcong U eq ) ) | 503 l-cong eq = let open ≈-Reasoning (A) in ( car ( fcong U eq ) ) |
504 | 504 |
505 | 505 |
506 open UnityOfOppsite | 506 open UnityOfOppsite |
507 | 507 |
508 -- f : a -----------> U(b) | 508 -- f : a ----------→ U(b) |
509 -- 1_F(a) :F(a) ---------> F(a) | 509 -- 1_F(a) :F(a) --------→ F(a) |
510 -- ε(b) = right uo (1_F(a)) :UF(b)---------> a | 510 -- ε(b) = right uo (1_F(a)) :UF(b)--------→ a |
511 -- η(a) = left uo (1_U(a)) : a -----------> FU(a) | 511 -- η(a) = left uo (1_U(a)) : a ----------→ FU(a) |
512 | 512 |
513 | 513 |
514 uo-η-map : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') | 514 uo-η-map : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') |
515 ( U : Functor B A ) | 515 ( U : Functor B A ) |
516 ( F : Functor A B ) → | 516 ( F : Functor A B ) → |
524 uo-ε-map A B U F uo b = right uo ( id1 A (FObj U b) ) | 524 uo-ε-map A B U F uo b = right uo ( id1 A (FObj U b) ) |
525 | 525 |
526 uo-solution : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') | 526 uo-solution : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') |
527 ( U : Functor B A ) | 527 ( U : Functor B A ) |
528 ( F : Functor A B ) → | 528 ( F : Functor A B ) → |
529 ( uo : UnityOfOppsite A B U F) → {a : Obj A} {b : Obj B } -> | 529 ( uo : UnityOfOppsite A B U F) → {a : Obj A} {b : Obj B } → |
530 ( f : Hom A a (FObj U b )) -> Hom B (FObj F a) b | 530 ( f : Hom A a (FObj U b )) → Hom B (FObj F a) b |
531 uo-solution A B U F uo {a} {b} f = -- B [ right uo (id1 A (FObj U b)) o FMap F f ] | 531 uo-solution A B U F uo {a} {b} f = -- B [ right uo (id1 A (FObj U b)) o FMap F f ] |
532 right uo f | 532 right uo f |
533 | 533 |
534 -- F(ε(b)) o η(F(b)) | 534 -- F(ε(b)) o η(F(b)) |
535 -- F( right uo (id1 A (FObj U b)) ) o left uo (id1 B (FObj F a)) ] == 1 | 535 -- F( right uo (id1 A (FObj U b)) ) o left uo (id1 B (FObj F a)) ] == 1 |