comparison freyd2.agda @ 658:9242298cffa8

adjoint functor theorem done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 06 Jul 2017 13:50:45 +0900
parents 0d029674eb59
children 372205f40ab0
comparison
equal deleted inserted replaced
657:0d029674eb59 658:9242298cffa8
500 FMap U (A [ FMap (identityFunctor {_} {_} {_} {A}) f o arrow (initial (In (FObj U a)) 500 FMap U (A [ FMap (identityFunctor {_} {_} {_} {A}) f o arrow (initial (In (FObj U a))
501 (record { obj = a ; hom = id1 B (FObj U a) })) ] ) o tmap-η (FObj U a) 501 (record { obj = a ; hom = id1 B (FObj U a) })) ] ) o tmap-η (FObj U a)
502 ≈⟨ car (distr U) ⟩ 502 ≈⟨ car (distr U) ⟩
503 ( FMap U (FMap (identityFunctor {_} {_} {_} {A}) f) o FMap U (arrow (initial (In (FObj U a)) 503 ( FMap U (FMap (identityFunctor {_} {_} {_} {A}) f) o FMap U (arrow (initial (In (FObj U a))
504 (record { obj = a ; hom = id1 B (FObj U a) })))) o (tmap-η (FObj U a)) 504 (record { obj = a ; hom = id1 B (FObj U a) })))) o (tmap-η (FObj U a))
505 ≈⟨ {!!} ⟩ 505 ≈↑⟨ assoc ⟩
506 FMap U f 506 FMap U (FMap (identityFunctor {_} {_} {_} {A}) f) o (FMap U (arrow (initial (In (FObj U a))
507 ≈↑⟨ idR ⟩ 507 (record { obj = a ; hom = id1 B (FObj U a) }))) o tmap-η (FObj U a) )
508 ≈⟨ cdr ( univ (id1 B (FObj U a))) ⟩
509 FMap U (FMap (identityFunctor {_} {_} {_} {A}) f) o id1 B (FObj U a)
510 ≈⟨⟩
508 FMap U f o id1 B (FObj U a) 511 FMap U f o id1 B (FObj U a)
509 512
510 lemma-nat2 : {a b : Obj A} {f : Hom A a b} → 513 lemma-nat2 : {a b : Obj A} {f : Hom A a b} →
511 B [ B [ FMap U (A [ arrow (initial (In (FObj U b)) 514 B [ B [ FMap U (A [ arrow (initial (In (FObj U b))
512 (record { obj = b ; hom = id1 B (FObj U b) })) o FMap (F ○ U) f ] ) o tmap-η (FObj U a) ] 515 (record { obj = b ; hom = id1 B (FObj U b) })) o FMap (F ○ U) f ] ) o tmap-η (FObj U a) ]
513 ≈ B [ FMap U f o id1 B (FObj U a) ] ] 516 ≈ B [ FMap U f o id1 B (FObj U a) ] ]
514 lemma-nat2 {a} {b} {f} = let open ≈-Reasoning B in begin 517 lemma-nat2 {a} {b} {f} = let open ≈-Reasoning B in begin
515 FMap U (A [ arrow (initial (In (FObj U b)) 518 FMap U (A [ arrow (initial (In (FObj U b))
516 (record { obj = b ; hom = id1 B (FObj U b) })) o FMap (F ○ U) f ] ) o tmap-η (FObj U a) 519 (record { obj = b ; hom = id1 B (FObj U b) })) o FMap (F ○ U) f ] ) o tmap-η (FObj U a)
517 ≈⟨ {!!} ⟩ 520 ≈⟨ car (distr U) ⟩
521 ( FMap U (arrow (initial (In (FObj U b)) (record { obj = b ; hom = id1 B (FObj U b) })))
522 o FMap U ( FMap (F ○ U) f )) o tmap-η (FObj U a)
523 ≈↑⟨ assoc ⟩
524 FMap U (arrow (initial (In (FObj U b)) (record { obj = b ; hom = id1 B (FObj U b) })))
525 o ( FMap U ( FMap (F ○ U) f ) o tmap-η (FObj U a) )
526 ≈⟨ cdr ( univ ( tmap-η (FObj U b) o FMap U f ) ) ⟩
527 FMap U (arrow (initial (In (FObj U b)) (record { obj = b ; hom = id1 B (FObj U b) })))
528 o ( tmap-η (FObj U b) o FMap U f )
529 ≈⟨ assoc ⟩
530 ( FMap U (arrow (initial (In (FObj U b)) (record { obj = b ; hom = id1 B (FObj U b) })))
531 o tmap-η (FObj U b) ) o FMap U f
532 ≈⟨ car (univ (id1 B (FObj U b))) ⟩
533 id1 B (FObj U b) o FMap U f
534 ≈⟨ idL ⟩
535 FMap U f
536 ≈↑⟨ idR ⟩
518 FMap U f o id1 B (FObj U a) 537 FMap U f o id1 B (FObj U a)
519 538
520 comm1 : {a b : Obj A} {f : Hom A a b} → 539 comm1 : {a b : Obj A} {f : Hom A a b} →
521 A [ A [ FMap (identityFunctor {_} {_} {_} {A}) f o 540 A [ A [ FMap (identityFunctor {_} {_} {_} {A}) f o
522 arrow (initial (In (FObj U a)) (record { obj = a ; hom = id1 B (FObj U a) })) ] 541 arrow (initial (In (FObj U a)) (record { obj = a ; hom = id1 B (FObj U a) })) ]
549 FisLeftAdjoint = record { isAdjunction = record { 568 FisLeftAdjoint = record { isAdjunction = record {
550 adjoint1 = adjoint1 569 adjoint1 = adjoint1
551 ; adjoint2 = adjoint2 570 ; adjoint2 = adjoint2
552 } } where 571 } } where
553 adjoint1 : {b : Obj A} → B [ B [ FMap U (TMap nat-ε b) o TMap nat-η (FObj U b) ] ≈ id1 B (FObj U b) ] 572 adjoint1 : {b : Obj A} → B [ B [ FMap U (TMap nat-ε b) o TMap nat-η (FObj U b) ] ≈ id1 B (FObj U b) ]
554 adjoint1 = {!!} 573 adjoint1 {b} = let open ≈-Reasoning B in begin
574 FMap U (TMap nat-ε b) o TMap nat-η (FObj U b)
575 ≈⟨ univ (id1 B (FObj U b)) ⟩
576 id1 B (FObj U b)
577
578 adj2comm1 : {a : Obj B} → B [ B [ FMap U (A [ TMap nat-ε (FObj F a) o FMap F (TMap nat-η a) ]) o
579 tmap-η (FObj (identityFunctor {_} {_} {_} {B}) a) ] ≈ tmap-η a ]
580 adj2comm1 {a} = let open ≈-Reasoning B in begin
581 FMap U (A [ TMap nat-ε (FObj F a) o FMap F (TMap nat-η a) ]) o tmap-η a
582 ≈⟨ car (distr U) ⟩
583 (FMap U (TMap nat-ε (FObj F a)) o FMap U (FMap F (TMap nat-η a) )) o tmap-η a
584 ≈↑⟨ assoc ⟩
585 FMap U (TMap nat-ε (FObj F a)) o (FMap U (FMap F (TMap nat-η a) ) o tmap-η a )
586 ≈⟨ cdr ( univ (tmap-η (FObj U (obj (i a))) o tmap-η a )) ⟩
587 FMap U (TMap nat-ε (FObj F a)) o (tmap-η (FObj U (obj (i a))) o tmap-η a )
588 ≈⟨ assoc ⟩
589 ( FMap U (TMap nat-ε (FObj F a)) o tmap-η (FObj U (obj (i a)))) o tmap-η a
590 ≈⟨ car (univ (id1 B (FObj U (FObj F a)))) ⟩
591 id1 B (FObj U (FObj F a)) o tmap-η a
592 ≈⟨ idL ⟩
593 tmap-η a
594
595 adj2comm2 : {a : Obj B} → B [ B [ FMap U (id1 A (FObj F a)) o tmap-η a ] ≈ tmap-η a ]
596 adj2comm2 {a} = let open ≈-Reasoning B in begin
597 FMap U (id1 A (FObj F a)) o tmap-η a
598 ≈⟨ car (IsFunctor.identity (isFunctor U)) ⟩
599 id1 B (FObj U (obj (i a))) o tmap-η a
600 ≈⟨ idL ⟩
601 tmap-η a
602
555 adjoint2 : {a : Obj B} → A [ A [ TMap nat-ε (FObj F a) o FMap F (TMap nat-η a) ] ≈ id1 A (FObj F a) ] 603 adjoint2 : {a : Obj B} → A [ A [ TMap nat-ε (FObj F a) o FMap F (TMap nat-η a) ] ≈ id1 A (FObj F a) ]
556 adjoint2 = {!!} 604 adjoint2 {a} = let open ≈-Reasoning A in begin
605 TMap nat-ε (FObj F a) o FMap F (TMap nat-η a)
606 ≈↑⟨ unique adj2comm1 ⟩
607 arrow (solution ( tmap-η a ) )
608 ≈⟨ unique adj2comm2 ⟩
609 id1 A (FObj F a)
610