diff freyd2.agda @ 608:7194ba55df56

freyd2
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 12 Jun 2017 10:50:02 +0900
parents 01a0dda67a8b
children d686d7ae38e0
line wrap: on
line diff
--- a/freyd2.agda	Thu Jun 08 19:48:02 2017 +0900
+++ b/freyd2.agda	Mon Jun 12 10:50:02 2017 +0900
@@ -18,6 +18,20 @@
 --
 
 -- A is Locally small
+
+----
+-- C is locally small i.e. Hom C i j is a set c₁
+--
+record Small  {  c₁ c₂ ℓ : Level} ( C : Category c₁ c₂ ℓ ) ( I :  Set  c₁ )
+                : Set (suc (c₁ ⊔ c₂ ⊔ ℓ )) where
+   field
+     hom→ : {i j : Obj C } →    Hom C i j →  I
+     hom← : {i j : Obj C } →  ( f : I ) →  Hom C i j
+     hom-iso : {i j : Obj C } →  { f : Hom C i j } →   hom← ( hom→ f )  ≡ f
+
+open Small
+
+
 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
@@ -66,7 +80,6 @@
              ∎ )
 
 
--- {*}↓U has preinitial full subcategory iff U is representable
 
 record Representable  { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) ( U : Functor A (Sets {c₂}) ) (b : Obj A) : Set  (suc ℓ ⊔ (suc (suc c₂) ⊔ suc c₁ ))  where
    field
@@ -77,56 +90,50 @@
 
          repr→ : NTrans A (Sets {c₂}) U (HomA A b )
          repr← : NTrans A (Sets {c₂}) (HomA A b)  U
-         representable→  :  {x : Obj A} →  Sets [ Sets [ TMap repr→ x  o  TMap repr← x ] ≈ id1 (Sets {c₂}) (FObj (HomA A b) x )]
-         representable←  :  {x : Obj A} →  Sets [ Sets [ TMap repr← x  o  TMap repr→ x ] ≈ id1 (Sets {c₂}) (FObj U x)]
+         reprId  :  {x : Obj A} →  Sets [ Sets [ TMap repr→ x  o  TMap repr← x ] ≈ id1 (Sets {c₂}) (FObj (HomA A b) x )]
+         reprId  :  {x : Obj A} →  Sets [ Sets [ TMap repr← x  o  TMap repr→ x ] ≈ id1 (Sets {c₂}) (FObj U x)]
+
+open import freyd
 
--- HpreseveLimit : { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) →  (b : Obj A)
---       { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' )
---       → LimitPreserve A I (Sets  {c₂}) ( HomA A b )
--- HpreseveLimit {_} { c₂} A b I =  record {
---        preserve = λ Γ limita → record {
---              limit = λ a t → limitu a Γ t limita
---              ; t0f=t = λ { a  t i }  → t0f=tu {a} Γ t limita {i}
---              ; limit-uniqueness = λ { a t f } t=f  → limit-uniquenessu {a} Γ limita t  f t=f
---        }
---    } where
---       limitu :   ( a : Obj Sets ) → (Γ : Functor I A )  ( t :  NTrans I Sets ( K Sets I a ) ((HomA A b) ○ Γ) ) →   ( limita : Limit A I Γ  ) →   
---           Hom Sets a (FObj (HomA A b) (a0 limita))
---       limitu  = {!!}
---       t0f=tu :    { a : Obj  Sets } → (Γ : Functor I A ) ( t : NTrans I Sets ( K Sets I a ) ((HomA A b) ○ Γ) ) →  ( limita : Limit A I Γ  ) → 
---            ∀ { i : Obj I } →  Sets [ Sets [ TMap (LimitNat A I Sets Γ (a0 limita) (t0 limita) (HomA A b)) i o limitu a Γ t limita ] ≈ TMap t i ]
---       t0f=tu  = {!!}
---       limit-uniquenessu :    { a : Obj Sets } → (Γ : Functor I A ) 
---            →   ( limita : Limit A I Γ  ) →
---           ( t : NTrans I Sets ( K Sets I a ) ((HomA A b) ○ Γ) ) → ( f :  Hom Sets a (FObj (HomA A b) (a0 limita)) ) 
---            →  (  ∀ { i : Obj I } →  (Sets [ TMap (LimitNat A I Sets Γ (a0 limita) (t0 limita) (HomA A b)) i o f ] ≡ TMap t i ) )
---            →  Sets [ limitu a Γ t limita ≈ f ]
---       limit-uniquenessu = {!!}
+_↓_ :  { c₁ c₂ ℓ : Level}  { c₁' c₂' ℓ' : Level} { A : Category c₁ c₂ ℓ } { B : Category c₁' c₂' ℓ' }
+    →  ( F G : Functor A B )
+    →  Category  (c₂' ⊔ c₁) (ℓ' ⊔ c₂) ℓ
+_↓_   { c₁} {c₂} {ℓ} {c₁'} {c₂'} {ℓ'}  { A } { B } F G  = CommaCategory
+         where open import Comma1 F G
 
 
+open import freyd
 
---
--- 
--- UpreseveLimit : { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) → ( U : Functor A (Sets {c₂}) ) (b : Obj A)
---       { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' )
---      ( rep :  Representable A U b ) → LimitPreserve A I (Sets  {c₂}) U 
--- UpreseveLimit {_} { c₂} A U b I rep =  record {
---        preserve = λ Γ limita → record {
---              limit = λ a t → limitu a Γ t limita
---              ; t0f=t = λ { a  t i }  → t0f=tu {a} Γ t limita {i}
---              ; limit-uniqueness = λ { a t f } t=f  → limit-uniquenessu {a} Γ limita t  f t=f
---        }
---    } where
---       limitu :   ( a : Obj (Sets  {c₂}) ) → (Γ : Functor I A )  ( t :  NTrans I Sets ( K Sets I a ) (U ○ Γ) ) →   ( limita : Limit A I Γ  ) →   
---           Hom Sets a (FObj U (a0 limita))
---       limitu  = {!!}
---       t0f=tu :    { a : Obj  (Sets  {c₂}) } → (Γ : Functor I A ) ( t : NTrans I Sets ( K Sets I a ) (U ○ Γ) ) →  ( limita : Limit A I Γ  ) → 
---            ∀ { i : Obj I } →  Sets [ Sets [ TMap (LimitNat A I Sets Γ (a0 limita) (t0 limita) U) i o limitu a Γ t limita ] ≈ TMap t i ]
---       t0f=tu  = {!!}
---       limit-uniquenessu :    { a : Obj  (Sets  {c₂}) } → (Γ : Functor I A ) 
---            →   ( limita : Limit A I Γ  ) →
---           ( t : NTrans I Sets ( K Sets I a ) (U ○ Γ) ) → ( f :  Hom Sets a (FObj U (a0 limita)) ) 
---            →  (  ∀ { i : Obj I } →  (Sets [ TMap (LimitNat A I Sets Γ (a0 limita) (t0 limita) U) i o f ] ≡ TMap t i ) )
---            →  Sets [ limitu a Γ t limita ≈ f ]
---       limit-uniquenessu = {!!}
--- 
+-- K{*}↓U has preinitial full subcategory then U is representable
+
+open SmallFullSubcategory
+open Complete
+open PreInitial
+
+data OneObject : Set where
+  * : OneObject
+
+UisRepresentable : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ)
+      (comp : Complete A A)
+      (U : Functor A (Sets) )
+      (SFS : SmallFullSubcategory ( K (Sets) {!!} {!!} ↓ U )) → 
+      (PI : PreInitial {!!} (SFSF SFS )) → Representable A U {!!}
+UisRepresentable = {!!}
+
+-- K{*}↓U has preinitial full subcategory if U is representable
+
+KUhasSFS : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ)
+      (comp : Complete A A)
+      (U : Functor A (Sets) )
+      (a : Obj A )
+      (R : Representable A U a ) →
+      SmallFullSubcategory {!!}
+KUhasSFS = {!!}
+
+KUhasPreinitial : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ)
+      (comp : Complete A A)
+      (U : Functor A (Sets) )
+      (a : Obj A )
+      (R : Representable A U a ) →
+      PreInitial {!!} (SFSF (KUhasSFS A comp U a R ) )
+KUhasPreinitial = {!!}