Mercurial > hg > Members > kono > Proof > category
changeset 1073:785d8b2ba48f
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 08 May 2021 19:02:57 +0900 |
parents | cf92383daef5 |
children | 2755bac8d8b9 |
files | src/ToposIL.agda src/equalizer.agda |
diffstat | 2 files changed, 38 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ToposIL.agda Sat May 08 13:02:41 2021 +0900 +++ b/src/ToposIL.agda Sat May 08 19:02:57 2021 +0900 @@ -116,9 +116,17 @@ → p ⊢ q → q ⊢ p → A [ Poly.f p ≈ Poly.f q ] tl01 {a} {b} p q p<q q<p = begin Poly.f p ≈↑⟨ tt p ⟩ - char t (equalizer (Ker t (Poly.f p))) (mm p) ≈⟨ {!!} ⟩ - char t (equalizer (Ker t (Poly.f q))) (mm q) ≈⟨ tt q ⟩ + char t (equalizer (Ker t (Poly.f p))) (mm p) ≈↑⟨ IsTopos.char-iso (Topos.isTopos t) {!!} {!!} ⟩ + char t (equalizer (Ker t (Poly.f p)) ∙ {!!} ) {!!} ≈⟨ {!!} ⟩ + char t {!!} {!!} ≈⟨ IsTopos.char-iso (Topos.isTopos t) {!!} {!!} ⟩ + char t (equalizer (Ker t (Poly.f p)) + ∙ IsEqualizer.k (isEqualizer (Ker t (Poly.f p))) (equalizer (Ker t (Poly.f q))) ee1) {!!} ≈⟨ IsTopos.char-cong (Topos.isTopos t) ee ⟩ + char t (equalizer (Ker t (Poly.f q))) (mm q) ≈⟨ tt q ⟩ Poly.f q ∎ where + ep : Equalizer A (Poly.f p) (A [ (Topos.⊤ t) o ○ b ]) + ep = Ker t (Poly.f p) + eq : Equalizer A (Poly.f q) (A [ (Topos.⊤ t) o ○ b ]) + eq = Ker t (Poly.f q) pm : {c : Obj A} (h : Hom A c b ) → A [ Poly.f p ∙ h ≈ (Topos.⊤ t) ∙ ○ c ] → A [ Poly.f q ∙ h ≈ (Topos.⊤ t) ∙ ○ c ] pm h = p<q h qm : {c : Obj A} (h : Hom A c b ) → A [ Poly.f q ∙ h ≈ (Topos.⊤ t) ∙ ○ c ] → A [ Poly.f p ∙ h ≈ (Topos.⊤ t) ∙ ○ c ] @@ -126,8 +134,24 @@ pp : Hom A b (Topos.Ω t) pp = Poly.f q open import equalizer using ( monic ) - ee : A [ equalizer (Ker t (Poly.f p)) ∙ {!!} ≈ equalizer (Ker t (Poly.f q )) ] - ee = IsEqualizer.ek=h (Equalizer.isEqualizer (Ker t (Poly.f p))) {{!!}} {{!!}} {{!!}} + fp : A [ A [ Poly.f p o equalizer (Ker t (Poly.f p)) ] ≈ A [ A [ (Topos.⊤ t) o ○ b ] o equalizer (Ker t (Poly.f p)) ] ] + fp = IsEqualizer.fe=ge (Equalizer.isEqualizer (Ker t (Poly.f p))) + fq : A [ A [ Poly.f q o equalizer (Ker t (Poly.f q)) ] ≈ A [ A [ (Topos.⊤ t) o ○ b ] o equalizer (Ker t (Poly.f q)) ] ] + fq = IsEqualizer.fe=ge (Equalizer.isEqualizer (Ker t (Poly.f q))) + ee1 : A [ A [ Poly.f p o equalizer (Ker t (Poly.f q)) ] ≈ A [ A [ ⊤ t o ○ b ] o equalizer (Ker t (Poly.f q)) ] ] + ee1 = begin + Poly.f p o equalizer (Ker t (Poly.f q)) ≈⟨ q<p _ ( begin + Poly.f q ∙ equalizer (Ker t (Poly.f q)) ≈⟨ fq ⟩ + ( ⊤ t ∙ ○ b ) ∙ equalizer (Ker t (Poly.f q)) ≈↑⟨ assoc ⟩ + ⊤ t ∙ ( ○ b ∙ equalizer (Ker t (Poly.f q))) ≈⟨ cdr e2 ⟩ + ⊤ t ∙ ○ (equalizer-c (Ker t (Poly.f q))) ∎ ) ⟩ + ⊤ t ∙ ○ (equalizer-c (Ker t (Poly.f q))) ≈↑⟨ cdr e2 ⟩ + ⊤ t ∙ ( ○ b ∙ equalizer (Ker t (Poly.f q) )) ≈⟨ assoc ⟩ + (⊤ t ∙ ○ b) ∙ equalizer (Ker t (Poly.f q) ) ∎ where + ee : A [ equalizer (Ker t (Poly.f p)) ∙ + IsEqualizer.k (Equalizer.isEqualizer (Ker t (Poly.f p))) (equalizer (Ker t (Poly.f q ))) ee1 + ≈ equalizer (Ker t (Poly.f q )) ] + ee = IsEqualizer.ek=h (Equalizer.isEqualizer (Ker t (Poly.f p))) mm : (q : Poly a (Topos.Ω t) b ) → Mono A (equalizer (Ker t (Poly.f q))) mm q = record { isMono = λ f g → monic (Ker t (Poly.f q)) } tt : (q : Poly a (Topos.Ω t) b ) → A [ char t (equalizer (Ker t (Poly.f q))) (mm q) ≈ Poly.f q ]
--- a/src/equalizer.agda Sat May 08 13:02:41 2021 +0900 +++ b/src/equalizer.agda Sat May 08 19:02:57 2021 +0900 @@ -277,6 +277,16 @@ -- c-iso-rl is obvious from the symmetry +equ-iso : { c c' a b : Obj A } {f g : Hom A a b } → {e : Hom A c a } { e' : Hom A c' a } + ( eqa : IsEqualizer A e f g) → ( eqa' : IsEqualizer A e' f g ) + → Iso A c c' +equ-iso eqa eqa' = record { + ≅→ = c-iso-l eqa eqa' + ; ≅← = c-iso-r eqa eqa' + ; iso→ = c-iso-lr eqa' eqa + ; iso← = c-iso-lr eqa eqa' + } + -- -- we cannot have equalizer ≈ id. we only have Iso A (equalizer-c equ) a --