Mercurial > hg > Members > kono > Proof > category
changeset 950:bd32a37784b0 current
Topos start
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 19 Feb 2021 09:52:31 +0900 |
parents | ac53803b3b2a |
children | ae3551ded289 |
files | CategoryExcercise.agda-lib CategoryExcercise.agda-pkg src/CCC.agda |
diffstat | 3 files changed, 40 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/CategoryExcercise.agda-lib Mon Dec 21 16:40:15 2020 +0900 +++ b/CategoryExcercise.agda-lib Fri Feb 19 09:52:31 2021 +0900 @@ -1,6 +1,6 @@ -- File generated by Agda-Pkg name: CategoryExcercise -depend: standard-library Category +depend: standard-library category-agda include: src -- End
--- a/CategoryExcercise.agda-pkg Mon Dec 21 16:40:15 2020 +0900 +++ b/CategoryExcercise.agda-pkg Fri Feb 19 09:52:31 2021 +0900 @@ -11,7 +11,7 @@ description: CategoryExcercise is an Agda library ... depend: - standard-library - - Category + - category-agda include: - src # End
--- a/src/CCC.agda Mon Dec 21 16:40:15 2020 +0900 +++ b/src/CCC.agda Fri Feb 19 09:52:31 2021 +0900 @@ -1,7 +1,8 @@ open import Level -open import Category +open import Category module CCC where + open import HomReasoning open import cat-utility open import Relation.Binary.PropositionalEquality @@ -121,7 +122,43 @@ ε : {a b : Obj A } → Hom A ((a <= b ) ∧ b) a isCCC : IsCCC A 1 ○ _∧_ <_,_> π π' _<=_ _* ε +open Equalizer + +mono : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) {a b c : Obj A} (m : Hom A b c) → ( f g : Hom A a b ) → Set ( c₁ ⊔ c₂ ⊔ ℓ ) +mono A m f g = A [ A [ m o f ] ≈ A [ m o g ] ] → A [ f ≈ g ] + +record IsTopos {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) ( 1 : Obj A) (○ : (a : Obj A ) → Hom A a 1) + (Ker : {a : Obj A} → ( h : Hom A a Ω ) → Equalizer A h (A [ ⊤ o (○ a) ])) + (char : {a b : Obj A} → ( m : Hom A b a ) → mono A m → Hom A a Ω) where + field + char-ker-id : {a : Obj A } {h : Hom A a Ω} → A [ char ( equalizer (Ker h)) ≈ h ] + ker-char-iso : {a b : Obj A} → ( m : Hom A b a ) → mono A m → Iso A b ( equalizer (Ker ( char m ))) + +record Topos {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) : Set ( c₁ ⊔ c₂ ⊔ ℓ ) where + field + 1 : Obj A + ○ : (a : Obj A ) → Hom A a 1 + _∧_ : Obj A → Obj A → Obj A + <_,_> : {a b c : Obj A } → Hom A c a → Hom A c b → Hom A c (a ∧ b) + π : {a b : Obj A } → Hom A (a ∧ b) a + π' : {a b : Obj A } → Hom A (a ∧ b) b + _<=_ : (a b : Obj A ) → Obj A + _* : {a b c : Obj A } → Hom A (a ∧ b) c → Hom A a (c <= b) + ε : {a b : Obj A } → Hom A ((a <= b ) ∧ b) a + isCCC : IsCCC A 1 ○ _∧_ <_,_> π π' _<=_ _* ε + + Ω : Obj A + ⊤ : Hom A 1 Ω + Ker : {a : Obj A} → ( h : Hom A a Ω ) → Equalizer A h (A [ ⊤ o (○ a) ]) + char : {a b : Obj A} → ( m : Hom A b a ) → mono A m → Hom A a Ω + isTopos : IsTopos A 1 ○ Ker char + ker : {a : Obj A} → ( h : Hom A a Ω ) → Hom A ( equalizer-c (Ker h) ) a + ker h = equalizer (Ker h) + + + +