Mercurial > hg > Members > kono > Proof > category
changeset 266:9e9f1e27e89f
iso on limit
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 22 Sep 2013 13:19:01 +0900 |
parents | 367e8fde93ee |
children | b1b728559d89 |
files | pullback.agda |
diffstat | 1 files changed, 67 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/pullback.agda Sun Sep 22 11:08:41 2013 +0900 +++ b/pullback.agda Sun Sep 22 13:19:01 2013 +0900 @@ -6,7 +6,7 @@ open import Category -- https://github.com/konn/category-agda open import Level -module pullback { c₁ c₂ ℓ : Level} { A : Category c₁ c₂ ℓ } where +module pullback { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ') ( Γ : Functor I A ) where open import HomReasoning open import cat-utility @@ -126,8 +126,16 @@ p' ∎ -K : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) ( Γ : Functor I A ) → ( a : Obj A ) → Functor I A -K I Γ a = record { +------ +-- +-- Limit +-- +----- + +-- Constancy Functor + +K : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) → ( a : Obj A ) → Functor I A +K I a = record { FObj = λ i → a ; FMap = λ f → id1 A a ; isFunctor = let open ≈-Reasoning (A) in record { @@ -140,11 +148,63 @@ open NTrans record Limit { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) ( Γ : Functor I A ) - ( a0 : Obj A ) ( t0 : NTrans I A ( K I Γ a0 ) Γ ) : Set (suc (c₁' ⊔ c₂' ⊔ ℓ' ⊔ c₁ ⊔ c₂ ⊔ ℓ )) where + ( a0 : Obj A ) ( t0 : NTrans I A ( K I a0 ) Γ ) : Set (suc (c₁' ⊔ c₂' ⊔ ℓ' ⊔ c₁ ⊔ c₂ ⊔ ℓ )) where field - limit : ( a : Obj A ) → ( t : NTrans I A ( K I Γ a ) Γ ) → Hom A a a0 - t0f=t : { a : Obj A } → { t : NTrans I A ( K I Γ a ) Γ } → ∀ { i : Obj I } → + limit : ( a : Obj A ) → ( t : NTrans I A ( K I a ) Γ ) → Hom A a a0 + t0f=t : { a : Obj A } → { t : NTrans I A ( K I a ) Γ } → ∀ { i : Obj I } → A [ A [ TMap t0 i o limit a t ] ≈ TMap t i ] - limit-uniqueness : { a : Obj A } → { t : NTrans I A ( K I Γ a ) Γ } → ( f : Hom A a a0 ) → ∀ { i : Obj I } → + limit-uniqueness : { a : Obj A } → { t : NTrans I A ( K I a ) Γ } → { f : Hom A a a0 } → ∀ ( i : Obj I ) → A [ A [ TMap t0 i o f ] ≈ TMap t i ] → A [ limit a t ≈ f ] +-------------------------------- +-- +-- If we have two limits on c and c', there are isomorphic pair h, h' + +open Limit + +iso-l : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) ( Γ : Functor I A ) + ( a0 a0' : Obj A ) ( t0 : NTrans I A ( K I a0 ) Γ ) ( t0' : NTrans I A ( K I a0' ) Γ ) + ( lim : Limit I Γ a0 t0 ) → ( lim' : Limit I Γ a0' t0' ) + → Hom A a0 a0' +iso-l I Γ a0 a0' t0 t0' lim lim' = limit lim' a0 t0 + +iso-r : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) ( Γ : Functor I A ) + ( a0 a0' : Obj A ) ( t0 : NTrans I A ( K I a0 ) Γ ) ( t0' : NTrans I A ( K I a0' ) Γ ) + ( lim : Limit I Γ a0 t0 ) → ( lim' : Limit I Γ a0' t0' ) + → Hom A a0' a0 +iso-r I Γ a0 a0' t0 t0' lim lim' = limit lim a0' t0' + + +iso-lr : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) ( Γ : Functor I A ) + ( a0 a0' : Obj A ) ( t0 : NTrans I A ( K I a0 ) Γ ) ( t0' : NTrans I A ( K I a0' ) Γ ) + ( lim : Limit I Γ a0 t0 ) → ( lim' : Limit I Γ a0' t0' ) → ∀{ i : Obj I } → + A [ A [ iso-l I Γ a0 a0' t0 t0' lim lim' o iso-r I Γ a0 a0' t0 t0' lim lim' ] ≈ id1 A a0' ] +iso-lr I Γ a0 a0' t0 t0' lim lim' {i} = let open ≈-Reasoning (A) in begin + limit lim' a0 t0 o limit lim a0' t0' + ≈↑⟨ limit-uniqueness lim' i ( begin + TMap t0' i o ( limit lim' a0 t0 o limit lim a0' t0' ) + ≈⟨ assoc ⟩ + ( TMap t0' i o limit lim' a0 t0 ) o limit lim a0' t0' + ≈⟨ car ( t0f=t lim' ) ⟩ + TMap t0 i o limit lim a0' t0' + ≈⟨ t0f=t lim ⟩ + TMap t0' i + ∎ ) ⟩ + limit lim' a0' t0' + ≈⟨ limit-uniqueness lim' i idR ⟩ + id a0' + ∎ + + +open import CatExponetial I A + +KI : { c₁' c₂' ℓ' : Level} ( I : Category c₁' c₂' ℓ' ) ( Γ : Functor I A ) → ( a : Obj A ) → Functor I A +KI I Γ a = record { + FObj = λ i → a ; + FMap = λ f → id1 A a ; + isFunctor = let open ≈-Reasoning (A) in record { + ≈-cong = λ f=g → refl-hom + ; identity = refl-hom + ; distr = sym idL + } + }