diff nat.agda @ 81:0404b2ba7db6

Resolution Adjoint proved.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 27 Jul 2013 13:03:02 +0900
parents e945c201364a
children bb95e780c68f
line wrap: on
line diff
--- a/nat.agda	Sat Jul 27 11:52:10 2013 +0900
+++ b/nat.agda	Sat Jul 27 13:03:02 2013 +0900
@@ -397,8 +397,8 @@
            FMap T f 
      ∎ )
 
--- Lemma11 :  T ≃  (U_T ○ F_T)
---Lemma11 = {!!} -- Lemma11-1
+Lemma11 :  T ≃  (U_T ○ F_T)
+Lemma11 f = Category.Cat.refl (Lemma11-1 f)
 
 nat-η : NTrans A A identityFunctor ( U_T ○ F_T ) 
 nat-η = record { TMap = \x -> TMap η x ; isNTrans = isNTrans1 } where
@@ -487,11 +487,41 @@
        } where
            adjoint1 :   { b : Obj KleisliCategory } →
                      A [ A [ ( FMap U_T ( TMap nat-ε b))  o ( TMap nat-η ( FObj U_T b )) ]  ≈ id1 A (FObj U_T b) ]
-           adjoint1 = {!!}
+           adjoint1 {b} =  let open ≈-Reasoning (A) in
+               begin
+                  ( FMap U_T ( TMap nat-ε b))  o ( TMap nat-η ( FObj U_T b ))
+               ≈⟨⟩
+                  (TMap μ (b)  o FMap T (id1 A (FObj T b )))  o ( TMap η ( FObj T b ))
+               ≈⟨ car ( cdr (IsFunctor.identity (isFunctor T))) ⟩
+                  (TMap μ (b)  o (id1 A (FObj T (FObj T b ))))  o ( TMap η ( FObj T b ))
+               ≈⟨ car idR ⟩
+                  TMap μ (b) o ( TMap η ( FObj T b ))
+               ≈⟨ IsMonad.unity1 (isMonad M) ⟩
+                  id1 A (FObj U_T b)
+               ∎ 
            adjoint2 :   {a : Obj A} →
                      KleisliCategory [ KleisliCategory [ ( TMap nat-ε ( FObj F_T a ))  o ( FMap F_T ( TMap nat-η a )) ]  
                             ≈ id1 KleisliCategory (FObj F_T a) ]
-           adjoint2 = {!!}
+           adjoint2 {a} =  let open ≈-Reasoning (A) in
+               begin
+                  KMap (( TMap nat-ε ( FObj F_T a )) * ( FMap F_T ( TMap nat-η a )) )
+               ≈⟨⟩
+                  TMap μ a o (FMap T (id1 A (FObj T a) ) o ((TMap η (FObj T a)) o (TMap η a)))
+               ≈⟨ cdr ( car ( IsFunctor.identity (isFunctor T))) ⟩
+                  TMap μ a o ((id1 A (FObj T (FObj T a) )) o ((TMap η (FObj T a)) o (TMap η a)))
+               ≈⟨ cdr ( idL ) ⟩
+                  TMap μ a o ((TMap η (FObj T a)) o (TMap η a))
+               ≈⟨ assoc  ⟩
+                  (TMap μ a o (TMap η (FObj T a))) o (TMap η a)
+               ≈⟨ car (IsMonad.unity1 (isMonad M)) ⟩
+                  id1 A (FObj T a) o (TMap η a)
+               ≈⟨ idL ⟩
+                  TMap η a
+               ≈⟨⟩
+                  TMap η (FObj F_T a)
+               ≈⟨⟩
+                  KMap (id1 KleisliCategory (FObj F_T a))
+              ∎