changeset 63:97eb12318048

cleanup
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 25 Jul 2013 12:09:01 +0900
parents c5277284919e
children 007d0c6e5d88
files nat.agda
diffstat 1 files changed, 17 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/nat.agda	Thu Jul 25 11:43:51 2013 +0900
+++ b/nat.agda	Thu Jul 25 12:09:01 2013 +0900
@@ -219,7 +219,7 @@
 --                  { η : NTrans A A identityFunctor T }
 --                  { μ : NTrans A A (T ○ T) T }
 --                  ( m : Monad A T η μ )
---                  { k : Kleisli A T η μ m} ->
+--                  { k : Kleisli A T η μ m} →
 --          IsCategory ( Obj A ) ( Hom A ) ( Category._≈_ A ) ( Kleisli-join ) Kleisli-id
 -- isKleisliCategory A {T} {η} m = record  { isEquivalence =  IsCategory.isEquivalence ( Category.isCategory A )
 --                     ; identityL =   {!!}
@@ -230,7 +230,7 @@
 --      where
 --          KidL : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) { T : Functor A A }
 --                  { η : NTrans A A identityFunctor T }
---                  { μ : NTrans A A (T ○ T) T } ( m : Monad A T η μ ) -> {!!}
+--                  { μ : NTrans A A (T ○ T) T } ( m : Monad A T η μ ) → {!!}
 --          KidL = {!!}
 --          KidR : {!!}
 --          KidR = {!!}
@@ -256,21 +256,24 @@
 --                                        }
 --                  }
 
-open Adjunction
+----
+--
+-- Adjunction to Monad
+--
+----
 
-lemma11 :  {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} {A : Category c₁ c₂ ℓ} {B : Category c₁' c₂' ℓ'}
-                 ( U : Functor B A ) ( F : Functor A B ) -> NTrans A A ( U ○  ((F  ○  U) ○  F )) ( U ○  (identityFunctor ○ F) ) 
-                         -> NTrans A A  (( U ○  F ) ○ ( U ○  F )) ( U ○  F )
-lemma11 U F n = record { TMap = \a -> TMap n a; isNTrans = record { naturality = IsNTrans.naturality ( isNTrans n ) }}
+open Adjunction
 
 UεF :  {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ')
                  ( U : Functor B A )
                  ( F : Functor A B )
                  ( ε : NTrans B B  ( F ○  U ) identityFunctor ) → NTrans A A  (( U ○  F ) ○ ( U ○  F )) ( U ○  F )
-UεF A B U F ε =  lemma11 U F (
-     Functor*Nat A {B} A U {( F ○ U) ○ F} {identityFunctor ○ F} ( Nat*Functor A {B} B { F ○  U} {identityFunctor} ε F)  )
+UεF A B U F ε =  lemma11  (
+     Functor*Nat A {B} A U {( F ○ U) ○ F} {identityFunctor ○ F} ( Nat*Functor A {B} B { F ○  U} {identityFunctor} ε F)  ) where
+         lemma11 :   NTrans A A   ( U ○ ((F  ○  U) ○  F )) ( U ○  (identityFunctor ○ F) ) 
+                  → NTrans A A  (( U ○  F ) ○ ( U ○  F )) ( U ○  F )
+         lemma11  n = record { TMap = \a → TMap n a; isNTrans = record { naturality = IsNTrans.naturality ( isNTrans n ) }}
 
--- ( \b -> FMap U ( TMap ε ( FObj F b))  )
 Adj2Monad : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ')
                  { U : Functor B A }
                  { F : Functor A B }
@@ -288,9 +291,9 @@
            T = U  ○ F
            μ : NTrans A A ( T ○ T ) T
            μ = UεF A B U F ε
-           lemma-assoc1 : (b : Obj B) → B [ B [ TMap ε b o TMap ε ( FObj F ( FObj U b)) ] ≈ 
-                                            B [ TMap ε b o FMap F  (FMap U (TMap ε b)) ] ] 
-           lemma-assoc1 b =  IsNTrans.naturality ( isNTrans ε )
+           lemma-assoc1 : {a b : Obj B} → ( f : Hom B a b) → 
+                 B [ B [ f o TMap ε a ] ≈ B [ TMap ε b o FMap F (FMap U f ) ] ] 
+           lemma-assoc1 f =  IsNTrans.naturality ( isNTrans ε )
            assoc1 : {a : Obj A} → A [ A [ TMap μ a o TMap μ ( FObj T a ) ] ≈  A [  TMap μ a o FMap T (TMap μ a) ] ]
            assoc1 {a} = let open ≈-Reasoning (A) in
              begin
@@ -299,7 +302,7 @@
                 (FMap U (TMap ε ( FObj F a ))) o (FMap U (TMap ε ( FObj F ( FObj U (FObj F  a )))))
              ≈⟨ sym (IsFunctor.distr (isFunctor U)) ⟩
                 FMap U (B [ TMap ε ( FObj F a )  o TMap ε ( FObj F ( FObj U (FObj F a ))) ] )
-             ≈⟨  (IsFunctor.≈-cong (isFunctor U)) (lemma-assoc1 ( FObj F a )) ⟩
+             ≈⟨  (IsFunctor.≈-cong (isFunctor U)) (lemma-assoc1 ( TMap ε (FObj F a ))) ⟩
                 FMap U (B [ (TMap ε ( FObj F a )) o FMap F (FMap U (TMap ε ( FObj F a ))) ] )
              ≈⟨ IsFunctor.distr (isFunctor U) ⟩
                 (FMap U (TMap ε ( FObj F a ))) o FMap U (FMap F (FMap U (TMap ε ( FObj F a ))))