changeset 171:d25b0948e006

unity of oppsite
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 23 Aug 2013 10:11:58 +0900
parents 721cf9d9f5e3
children c7fef385330f
files cat-utility.agda universal-mapping.agda
diffstat 2 files changed, 123 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/cat-utility.agda	Wed Aug 21 18:33:03 2013 +0900
+++ b/cat-utility.agda	Fri Aug 23 10:11:58 2013 +0900
@@ -34,6 +34,16 @@
                _* :  { a : Obj A}{ b : Obj B} → ( Hom A a (FObj U b) ) →  Hom B (F a ) b 
                isUniversalMapping : IsUniversalMapping A B U F η _*
 
+        record UnityOfOppsite  {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') 
+                         ( U : Functor B A )
+                         ( F : Functor A B )
+                         : Set (suc (c₁ ⊔ c₂ ⊔ ℓ ⊔ c₁' ⊔ c₂' ⊔ ℓ' )) where
+           field
+               right  : {a : Obj A} { b : Obj B } → Hom A a ( FObj U b ) → Hom B (FObj F a) b
+               left   : {a : Obj A} { b : Obj B } → Hom B (FObj F a) b   → Hom A a ( FObj U b ) 
+               right-injective : {a : Obj A} { b : Obj B } → {f : Hom A a (FObj U b) }  → A [ left ( right f ) ≈ f ]
+               left-injective  : {a : Obj A} { b : Obj B } → {f : Hom B (FObj F a) b }  → B [ right ( left f ) ≈ f ]
+
         open NTrans
         open import Category.Cat
         record IsAdjunction  {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ') 
--- a/universal-mapping.agda	Wed Aug 21 18:33:03 2013 +0900
+++ b/universal-mapping.agda	Fri Aug 23 10:11:58 2013 +0900
@@ -330,5 +330,118 @@

 
 
+------
+--
+--   Hom(F(-),-) = Hom(-,U(-))
+--       Unity of opposite
+-----
+
+Adj2UO : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ')
+                 { U : Functor B A }
+                 { F : Functor A B }
+                 { η : NTrans A A identityFunctor ( U ○  F ) }
+                 { ε : NTrans B B  ( F ○  U ) identityFunctor } →
+                 ( adj : Adjunction A B U F η ε )  → UnityOfOppsite A B U F
+Adj2UO A B {U} {F} {η} {ε} adj = record {
+            right =  right ;
+            left  =  left ; 
+            right-injective =  right-injective  ;
+            left-injective = left-injective  
+      } where
+            right  : {a : Obj A} { b : Obj B } → Hom A a ( FObj U b ) → Hom B (FObj F a) b
+            right {a} {b} f = B [ TMap ε b o FMap F f ] 
+            left   : {a : Obj A} { b : Obj B } → Hom B (FObj F a) b   → Hom A a ( FObj U b )
+            left  {a} {b} f = A [ FMap U f o (TMap η a)  ]
+            right-injective : {a : Obj A} { b : Obj B } → {f : Hom A a (FObj U b) }  → A [ left ( right f ) ≈ f ]
+            right-injective {a} {b} {f} =  let open ≈-Reasoning (A) in
+                     begin
+                         FMap U (B [ TMap ε b o FMap F f ]) o (TMap η a)  
+                     ≈⟨ car ( distr U ) ⟩
+                         ( FMap U (TMap ε b) o FMap U (FMap F f )) o (TMap η a)  
+                     ≈↑⟨ assoc  ⟩
+                         FMap U (TMap ε b) o ( FMap U (FMap F f ) o (TMap η a) )
+                     ≈⟨ cdr ( nat η)  ⟩
+                         FMap U (TMap ε b) o ((TMap η (FObj U b))  o f ) 
+                     ≈⟨ assoc  ⟩
+                         (FMap U (TMap ε b) o (TMap η (FObj U b)))  o f  
+                     ≈⟨  car  ( IsAdjunction.adjoint1 ( isAdjunction adj )) ⟩
+                        id1 A (FObj U b) o f
+                     ≈⟨ idL  ⟩
+                        f
+                     ∎
+            left-injective  : {a : Obj A} { b : Obj B } → {f : Hom B (FObj F a) b }  → B [ right ( left f ) ≈ f ]
+            left-injective {a} {b} {f} =  let open ≈-Reasoning (B) in
+                     begin
+                         TMap ε b o FMap F ( A [ FMap U f o (TMap η a)  ]) 
+                     ≈⟨ cdr ( distr F ) ⟩
+                         TMap ε b o ( FMap F (FMap U f) o FMap F (TMap η a))
+                     ≈⟨ assoc  ⟩
+                         ( TMap ε b o FMap F (FMap U f)) o FMap F (TMap η a)
+                     ≈↑⟨ car (nat ε)  ⟩
+                         ( f  o TMap ε ( FObj F a )) o ( FMap F ( TMap η a ))
+                     ≈↑⟨ assoc  ⟩
+                          f  o ( TMap ε ( FObj F a ) o ( FMap F ( TMap η a )))
+                     ≈⟨  cdr  ( IsAdjunction.adjoint2 ( isAdjunction adj )) ⟩
+                        f o id1 B (FObj F a) 
+                     ≈⟨ idR  ⟩
+                        f
+                     ∎
+
+open UnityOfOppsite
+
+uo-η  : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} {A : Category c₁ c₂ ℓ} {B : Category c₁' c₂' ℓ'} 
+                 { U : Functor B A }
+                 { F : Functor A B } → 
+                 ( uo : UnityOfOppsite A B U F)  →  NTrans  A A identityFunctor ( U ○ F )
+uo-η {_} {_} {_} {_} {_} {_} {A} {B} {U} {F} uo = record {
+             TMap = η ; isNTrans = myIsNTrans
+       } where
+            η : (a : Obj A) → Hom A a ( FObj U (FObj F a) )  
+            η a = left uo ( id1 B (FObj F a) ) 
+            commute :  {a b : Obj A} {f : Hom A a b}
+              → A [ A [ (FMap U (FMap F f))  o  ( η a ) ]  ≈ A [ (η b ) o f ] ]
+            commute {a} {b} {f} =   let open ≈-Reasoning (A) in
+               begin
+                    (FMap U (FMap F f))  o  ( η a )
+               ≈⟨⟩
+                    (FMap U (FMap F f))  o left uo ( id1 B (FObj F a) )
+               ≈⟨ {!!} ⟩
+                    left uo ( id1 B (FObj F b)) o f
+               ≈⟨⟩
+                    (η b ) o f
+               ∎
+            myIsNTrans : IsNTrans A A identityFunctor ( U ○  F ) η
+            myIsNTrans = record { commute = commute }
+
+UO2UM  : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} {A : Category c₁ c₂ ℓ} {B : Category c₁' c₂' ℓ'} 
+                 { U : Functor B A }
+                 { F : Functor A B } → 
+                 ( uo : UnityOfOppsite A B U F)  → UniversalMapping A B U (FObj F) (TMap (uo-η uo) )
+UO2UM  = {!!}
+
+uo-ε  : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} {A : Category c₁ c₂ ℓ} {B : Category c₁' c₂' ℓ'}
+                 { U : Functor B A }
+                 { F : Functor A B }→  
+                 ( uo : UnityOfOppsite A B U F)  → NTrans B B  ( F ○  U ) identityFunctor  
+uo-ε = {!!}
+
+UO2Adj : {c₁ c₂ ℓ c₁' c₂' ℓ' : Level} (A : Category c₁ c₂ ℓ) (B : Category c₁' c₂' ℓ')
+                 { U : Functor B A }
+                 { F : Functor A B }
+                 ( uo : UnityOfOppsite A B U F)  → Adjunction A B U F (uo-η uo ) (uo-ε uo )
+UO2Adj A B {U} {F} uo = record {
+           isAdjunction = record {
+               adjoint1 = adjoint1 ; 
+               adjoint2 = adjoint2
+           } 
+       } where
+          adjoint1 :   { b : Obj B } →
+                     A [ A [ ( FMap U ( TMap (uo-ε uo) b ))  o ( TMap (uo-η uo) ( FObj U b )) ]  ≈ id1 A (FObj U b) ]
+          adjoint1  {b} = {!!}
+          adjoint2 :   {a : Obj A} →
+                     B [ B [ ( TMap (uo-ε uo) ( FObj F a ))  o ( FMap F ( TMap (uo-η uo) a )) ]  ≈ id1 B (FObj F a) ]
+          adjoint2 {a} = {!!}
+
+
 --  done!