Mercurial > hg > Members > kono > Proof > category
changeset 964:0128a662eb02
Topos as pull back
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 23 Feb 2021 16:32:06 +0900 |
parents | 50d8750d32c0 |
children | 396bf884f5e7 |
files | src/ToposEx.agda |
diffstat | 1 files changed, 21 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ToposEx.agda Tue Feb 23 14:11:12 2021 +0900 +++ b/src/ToposEx.agda Tue Feb 23 16:32:06 2021 +0900 @@ -15,28 +15,30 @@ -- ↓ char m ↓ -- a -----------→ Ω -- h - +-- +-- Ker t h : Equalizer A h (A [ ⊤ o (○ a) ]) topos-pullback : {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) ( 1 : Obj A) (○ : (a : Obj A ) → Hom A a 1) → (e2 : {a : Obj A} → ∀ { f : Hom A a 1 } → A [ f ≈ ○ a ] ) → (t : Topos A 1 ○ ) → {a : Obj A} → (h : Hom A a (Ω t)) → Pullback A h (⊤ t) topos-pullback A 1 ○ e2 t {a} h = record { - -- Ker t h : Equalizer A h (A [ ⊤ o (○ a) ]) ab = equalizer-c (Ker t h) -- b ; π1 = equalizer (Ker t h) -- m ; π2 = ○ ( equalizer-c (Ker t h) ) -- ○ b ; isPullback = record { commute = comm ; pullback = λ {d} {p1} {p2} eq → IsEqualizer.k (isEqualizer (Ker t h)) p1 (lemma1 p1 p2 eq ) - ; π1p=π1 = {!!} - ; π2p=π2 = {!!} - ; uniqueness = {!!} + ; π1p=π1 = IsEqualizer.ek=h (isEqualizer (Ker t h)) + ; π2p=π2 = λ {d} {p1'} {p2'} {eq} → lemma2 eq + ; uniqueness = uniq } } where open ≈-Reasoning A comm : A [ A [ h o equalizer (Ker t h) ] ≈ A [ ⊤ t o ○ (equalizer-c (Ker t h)) ] ] comm = begin - h o equalizer (Ker t h) ≈⟨ {!!} ⟩ + h o equalizer (Ker t h) ≈⟨ IsEqualizer.fe=ge (isEqualizer (Ker t h)) ⟩ + (⊤ t o ○ a ) o equalizer (Ker t h) ≈↑⟨ assoc ⟩ + ⊤ t o (○ a o equalizer (Ker t h)) ≈⟨ cdr e2 ⟩ ⊤ t o ○ (equalizer-c (Ker t h)) ∎ lemma1 : {d : Obj A} (p1 : Hom A d a) (p2 : Hom A d 1) (eq : A [ A [ h o p1 ] ≈ A [ ⊤ t o p2 ] ] ) → A [ A [ h o p1 ] ≈ A [ A [ ⊤ t o ○ a ] o p1 ] ] @@ -46,4 +48,17 @@ ⊤ t o (○ d) ≈↑⟨ cdr e2 ⟩ ⊤ t o ( ○ a o p1 ) ≈⟨ assoc ⟩ (⊤ t o ○ a ) o p1 ∎ + lemma2 : {d : Obj A} {p1' : Hom A d a} {p2' : Hom A d 1} (eq : A [ A [ h o p1' ] ≈ A [ ⊤ t o p2' ] ] ) + → A [ A [ ○ (equalizer-c (Ker t h)) o IsEqualizer.k (isEqualizer (Ker t h)) p1'(lemma1 p1' p2' eq) ] ≈ p2' ] + lemma2 {d} {p1'} {p2'} eq = begin + ○ (equalizer-c (Ker t h)) o IsEqualizer.k (isEqualizer (Ker t h)) p1'(lemma1 p1' p2' eq) ≈⟨ e2 ⟩ + ○ d ≈↑⟨ e2 ⟩ + p2' ∎ + uniq : {d : Obj A} (p' : Hom A d (equalizer-c (Ker t h))) {π1' : Hom A d a} {π2' : Hom A d 1} {eq : A [ A [ h o π1' ] ≈ A [ ⊤ t o π2' ] ]} + {π1p=π1' : A [ A [ equalizer (Ker t h) o p' ] ≈ π1' ]} {π2p=π2' : A [ A [ ○ (equalizer-c (Ker t h)) o p' ] ≈ π2' ]} + → A [ IsEqualizer.k (isEqualizer (Ker t h)) π1' (lemma1 π1' π2' eq) ≈ p' ] + uniq {d} (p') {p1'} {p2'} {eq} {pe1} {pe2} = begin + IsEqualizer.k (isEqualizer (Ker t h)) p1' (lemma1 p1' p2' eq) ≈⟨ IsEqualizer.uniqueness (isEqualizer (Ker t h)) pe1 ⟩ + p' ∎ +