changeset 617:34540494fdcf

initital obj uniquness done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 19 Jun 2017 18:49:21 +0900
parents 7011165c118e
children 23ff2464f7ad
files freyd.agda freyd2.agda
diffstat 2 files changed, 39 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/freyd.agda	Wed Jun 14 11:37:48 2017 +0900
+++ b/freyd.agda	Mon Jun 19 18:49:21 2017 +0900
@@ -26,8 +26,8 @@
 record PreInitial {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) 
       (F : Functor A A )  : Set  (suc ℓ ⊔ (suc c₁ ⊔ suc c₂)) where
    field
-      preinitialObj : ∀{  a : Obj A } →  Obj A 
-      preinitialArrow : ∀{  a : Obj A } →  Hom A ( FObj F (preinitialObj {a} )) a 
+      preinitialObj : Obj A 
+      preinitialArrow : ∀{  a : Obj A } →  Hom A ( FObj F (preinitialObj)) a 
 
 -- initial object
 
@@ -71,8 +71,8 @@
       ep {a} {b} {f} {g} = equalizer-p comp f g
       ee :  {a b : Obj A} → {f g : Hom A a b}  → Hom A (ep {a} {b} {f} {g} ) a 
       ee {a} {b} {f} {g} = equalizer-e comp f g  
-      f : {a : Obj A} → Hom A  a00 (FObj F  (preinitialObj PI {a} ) ) 
-      f {a} = TMap u (preinitialObj PI {a} ) 
+      f : Hom A  a00 (FObj F  (preinitialObj PI ) ) 
+      f = TMap u (preinitialObj PI ) 
       initialArrow :  ∀( a : Obj A )  →  Hom A a00 a
       initialArrow a  = A [ preinitialArrow PI {a}  o f ]
       equ-fi : { a : Obj A} → {f' : Hom A a00 a} → 
--- a/freyd2.agda	Wed Jun 14 11:37:48 2017 +0900
+++ b/freyd2.agda	Mon Jun 19 18:49:21 2017 +0900
@@ -29,6 +29,7 @@
 
 open Small
 
+-- maybe this is a part of local smallness
 postulate ≈-≡ :  { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ )  {a b : Obj A } { x y : Hom A a b } →  (x≈y : A [ x ≈ y  ]) → x ≡ y
 
 import Relation.Binary.PropositionalEquality
@@ -38,7 +39,7 @@
 
 ----
 --
---  Hom ( a, - ) is Object mapping in co Yoneda Functor
+--  Hom ( a, - ) is Object mapping in Yoneda Functor
 --
 ----
 
@@ -111,7 +112,7 @@
 -- Representable Functor U preserve limit , so K{*}↓U is complete
 --
 --    Yoneda A b =  λ a → Hom A a b    : Functor A Sets
---                                   : Functor Sets A
+--                                     : Functor Sets A
 
 UpreserveLimit0 : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) (I : Category c₁ c₂ ℓ)
       (b : Obj A ) 
@@ -188,12 +189,14 @@
 -- K{*}↓U has preinitial full subcategory if U is representable
 --     if U is representable,  K{*}↓U has initial Object ( so it has preinitial full subcategory )
 
+open CommaHom
+
 KUhasInitialObj : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ)
       (a : Obj A )
       → HasInitialObject {c₁} {c₂} {ℓ}  ( K (Sets) A (FObj (Yoneda A a) a) ↓ (Yoneda A a) ) ( record  { obj = a ; hom = id1 Sets (FObj (Yoneda A a) a) } )
 KUhasInitialObj A a = record {
            initial =  λ b → initial0 b
-         ; uniqueness =  λ b f → {!!}
+         ; uniqueness =  λ b f → unique b f
      } where
          initial0com1 :  (b : Obj (K Sets A (FObj (Yoneda A a) a) ↓ (Yoneda A a))) → (x :  FObj (Yoneda A a) a )
             →  FMap (Yoneda A a) (hom b (id1 A a)) x ≡ hom b x
@@ -202,6 +205,8 @@
              ≈⟨⟩
                hom b (id1 A a ) o x
              ≈⟨ {!!} ⟩
+               hom b (id1 A a  o x )
+             ≈⟨ ≡-≈ ( cong (λ k → hom b k ) ( ≈-≡ A idL )  ) ⟩
                hom b x
              ∎ )
          initial0com :  (b : Obj (K Sets A (FObj (Yoneda A a) a) ↓ (Yoneda A a))) →
@@ -224,19 +229,40 @@
          initial0 b = record {
                 arrow = hom b (id1 A a) 
               ; comm = initial0com b }
+         comm-f :  (b : Obj (K Sets A (FObj (Yoneda A a) a) ↓ (Yoneda A a)))
+            (f : Hom (K Sets A (FObj (Yoneda A a) a) ↓ Yoneda A a) (record { obj = a ; hom = id1 Sets (FObj (Yoneda A a) a) }) b)
+            → Sets [ Sets [ FMap  (Yoneda A a) (arrow f) o id1 Sets (FObj (Yoneda A a) a) ]
+            ≈ Sets [ hom b  o  FMap  (K Sets A (FObj (Yoneda A a) a)) (arrow f) ]  ] 
+         comm-f b f = comm f
+         unique : (b : Obj (K Sets A (FObj (Yoneda A a) a) ↓ Yoneda A a))
+                (f : Hom (K Sets A (FObj (Yoneda A a) a) ↓ Yoneda A a) (record { obj = a ; hom = id1 Sets (FObj (Yoneda A a) a) }) b)
+                → (K Sets A (FObj (Yoneda A a) a) ↓ Yoneda A a) [ f ≈ initial0 b ]
+         unique b f = let open ≈-Reasoning A in begin
+                arrow f
+             ≈↑⟨ idR ⟩
+                arrow f o id1 A a
+             ≈⟨⟩
+                ( Sets [ FMap  (Yoneda A a) (arrow f) o id1 Sets (FObj (Yoneda A a) a)  ] ) (id1 A a)
+             ≈⟨ ≡-≈ ( cong (λ k → k (id1 A a)) (comm f ) ) ⟩
+               ( Sets [ hom b  o  FMap  (K Sets A (FObj (Yoneda A a) a)) (arrow f) ]  ) (id1 A a)
+             ≈⟨⟩
+                hom b (id1 A a)
+             ∎ 
             
 
 -- K{*}↓U has preinitial full subcategory then U is representable
 --    K{*}↓U is complete, so it has initial object
 
+open SmallFullSubcategory
+open PreInitial
+
 UisRepresentable : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ)
-      (comp : Complete A A)
       (U : Functor A (Sets {c₂}) )
-      (a : Obj Sets )
-      (x : Obj ( K (Sets) A a ↓ U) )
-      ( init : HasInitialObject {c₁} {c₂} {ℓ} ( K (Sets) A a ↓ U ) x )
-        → Representable A U (obj x)
-UisRepresentable A comp U a x init = record {
+      (a : Obj (Sets {c₂}))
+      (SFS : SmallFullSubcategory {c₁} {c₂} {ℓ} ( K (Sets {c₂}) A a ↓ U) )  
+      (PI : PreInitial {c₁} {c₂} {ℓ} ( K (Sets) A a ↓ U) (SFSF SFS )) 
+        → Representable A U (obj (preinitialObj PI ))
+UisRepresentable A U a SFS PI = record {
          repr→ = record { TMap = {!!} ; isNTrans = record { commute = {!!} } }
          ; repr← = record { TMap = {!!} ; isNTrans = record { commute = {!!} } }
          ; reprId→  = λ {y}  → ?