changeset 1016:bbbe97d2a5ea

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 23 Mar 2021 14:41:47 +0900
parents e01a1d29492b
children 90224a662c4e
files src/CCC.agda src/CCCSets.agda src/Polynominal.agda src/ToposEx.agda
diffstat 4 files changed, 38 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/src/CCC.agda	Sun Mar 21 10:16:57 2021 +0900
+++ b/src/CCC.agda	Tue Mar 23 14:41:47 2021 +0900
@@ -184,13 +184,14 @@
 --
 -- Sub Object Classifier as Topos
 -- pull back on
---             ○ b
---       b -----------→ 1
---       |              |
---     m |              | ⊤
---       ↓    char m    ↓
---       a -----------→ Ω
---             h
+--
+--     iso          ○ b
+--  e ⇐====⇒  b -----------→ 1
+--  |         |              |
+--  |       m |              | ⊤
+--  |         ↓    char m    ↓
+--  + ------→ a -----------→ Ω
+--     ker h        h
 --
 open Equalizer
 open import equalizer
@@ -201,6 +202,8 @@
 
 open Mono
 
+open import equalizer
+
 record IsTopos {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ) (c : CCC A) 
         ( Ω : Obj A )
         ( ⊤ : Hom A (CCC.1 c) Ω )
@@ -208,8 +211,27 @@
         (char : {a b : Obj A} → (m :  Hom A b a) → Mono A m  → Hom A a Ω) :  Set ( suc c₁  ⊔  suc c₂ ⊔ suc ℓ ) where
      field
          char-uniqueness  : {a b : Obj A } {h : Hom A a Ω}  (m :  Hom A b a) → (mono : Mono A m)  
-             → A [ char m mono  ≈ h ]
+             → A [ char (equalizer (Ker h)) (record { isMono = λ f g → monic (Ker h)}) ≈ h ]
          ker-iso : {a b : Obj A} →  (m :  Hom A b a) → (mono : Mono A m)  → IsoL A m (equalizer (Ker ( char m mono ))) 
+     ker : {a : Obj A} → ( h : Hom A a Ω )  → Hom A ( equalizer-c (Ker h) ) a
+     ker h = equalizer (Ker h)
+     mm : {a b : Obj A} → (m :  Hom A b a) → (mono : Mono A m ) → A [ A [ equalizer (Ker (char m mono)) o Iso.≅→ (IsoL.iso-L (ker-iso m mono)) ] ≈  m ]
+     mm m mono = IsoL.L≈iso  (ker-iso m mono)
+     mequ : {a b : Obj A} → (m :  Hom A b a) → (mono : Mono A m ) → Equalizer A (char m mono)  (A [ ⊤ o (CCC.○ c a) ])
+     mequ {a} {b} m mono = record { equalizer-c = b ; equalizer = m ; isEqualizer = 
+            subst (λ k → IsEqualizer A k _ _ ) {!!} -- 
+              ( equalizer+iso (Ker (char m mono)) (Iso.≅→ (IsoL.iso-L (ker-iso m mono)))
+                 (Iso.≅← (IsoL.iso-L (ker-iso m mono))) (Iso.iso→ (IsoL.iso-L (ker-iso m mono))) (Iso.iso← (IsoL.iso-L (ker-iso m mono))) ) }
+     char-m=⊤ :  {a b : Obj A} → (m :  Hom A b a) → (mono : Mono A m) → A [ A [ char m mono  o m ] ≈ A [ ⊤ o CCC.○ c b ] ]
+     char-m=⊤ {a} {b} m mono  = begin
+            char m mono  o m ≈⟨ {!!} ⟩
+            char (ker (char m mono) ) {!!} o m ≈⟨ {!!} ⟩
+            char m mono  o (ker (char m mono) o Iso.≅→ (IsoL.iso-L (ker-iso m mono))) ≈⟨ {!!} ⟩
+            (char m mono  o ker (char m mono) ) o Iso.≅→ (IsoL.iso-L (ker-iso m mono)) ≈⟨ {!!} ⟩
+            {!!} ≈⟨ {!!} ⟩
+            (⊤ o  CCC.○ c a) o m ≈↑⟨ assoc ⟩
+            ⊤ o  (CCC.○ c a o m ) ≈⟨ cdr (IsCCC.e2 (CCC.isCCC c)) ⟩
+            ⊤ o CCC.○ c b  ∎  where   open ≈-Reasoning A
 
 record Topos {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ)  (c : CCC A)  :  Set ( suc c₁  ⊔  suc c₂ ⊔ suc ℓ ) where
      field
@@ -218,16 +240,8 @@
          Ker : {a : Obj A} → ( h : Hom A a Ω ) → Equalizer A h (A [ ⊤ o (CCC.○ c a) ])
          char : {a b : Obj A} → (m : Hom A b a ) → Mono A m → Hom A a Ω
          isTopos : IsTopos A c Ω ⊤ Ker char
-     ker : {a : Obj A} → ( h : Hom A a Ω )  → Hom A ( equalizer-c (Ker h) ) a
-     ker h = equalizer (Ker h)
      Monik : {a : Obj A} (h : Hom A a Ω)  → Mono A (equalizer (Ker h))
      Monik h = record { isMono = λ f g → monic (Ker h ) } 
-     char-m=⊤ :  {a b : Obj A} → (m :  Hom A b a) → (mono : Mono A m) → A [ A [ char m mono  o m ] ≈ A [ ⊤ o CCC.○ c b ] ]
-     char-m=⊤ {a} {b} m mono  = begin
-            char m mono  o m ≈⟨ car (IsTopos.char-uniqueness isTopos m mono) ⟩
-            (⊤ o  CCC.○ c a) o m ≈↑⟨ assoc ⟩
-            ⊤ o  (CCC.○ c a o m ) ≈⟨ cdr (IsCCC.e2 (CCC.isCCC c)) ⟩
-            ⊤ o CCC.○ c b  ∎  where   open ≈-Reasoning A
 
 record NatD {c₁ c₂ ℓ : Level} (A : Category c₁ c₂ ℓ)  ( 1 : Obj A) : Set ( suc c₁  ⊔  suc c₂ ⊔ suc ℓ ) where
      field
--- a/src/CCCSets.agda	Sun Mar 21 10:16:57 2021 +0900
+++ b/src/CCCSets.agda	Tue Mar 23 14:41:47 2021 +0900
@@ -121,7 +121,7 @@
       ;  Ker = tker
       ;  char = tchar
       ;  isTopos = record {
-                 char-uniqueness  = λ {a} {b} {h} m mono →  extensionality Sets ( λ x → uniq h m mono x )
+                 char-uniqueness  = λ {a} {b} {h} m mono →  {!!} -- extensionality Sets ( λ x → uniq h m mono x )
               ;  ker-iso = {!!}
          }
     } where
@@ -161,10 +161,12 @@
         uniq : {a : Obj (Sets {c})} {b : Obj Sets} (h : Hom Sets a Bool) (m : Hom Sets b a) (mono : Mono Sets m) (x : a) → true ≡ h x
         uniq {a} {b} h m mono x = begin
             true ≡⟨⟩
-            (λ × → true ) x ≡⟨ {!!} ⟩
-            {!!} ≡⟨ cong (λ k → h (k x)  ) (IsEqualizer.ek=h (Equalizer.isEqualizer (tker h)) {{!!}} {{!!}} )  ⟩
+            (λ × → true ) x ≡⟨ cong (λ k → {!!} ) (sym (IsEqualizer.fe=ge (Equalizer.isEqualizer (tker h)) ) ) ⟩
+            {!!} ≡⟨  {!!} ⟩
             h x  ∎  where
               open ≡-Reasoning 
+              yy : Sets [ (λ e → {!!} ) ≈ (λ e → true) ] 
+              yy = IsEqualizer.fe=ge (Equalizer.isEqualizer (tker h))
               yyy : {c : Obj Sets } → (f g : c → b ) → Sets [ Sets [ m o f ] ≈ Sets [ m o g ] ] → f ≡ g
               yyy f g eq = Mono.isMono mono f g eq
               yyy1 : {c : Obj Sets } → (f g : c → b ) → Sets [ Sets [ m o f ] ≈ Sets [ m o g ] ] → f ≡ g
--- a/src/Polynominal.agda	Sun Mar 21 10:16:57 2021 +0900
+++ b/src/Polynominal.agda	Tue Mar 23 14:41:47 2021 +0900
@@ -254,6 +254,7 @@
               f ∙  < π , π' >  ≈⟨ cdr (IsCCC.π-id isCCC) ⟩
               f ∙  id1 A _ ≈⟨ idR ⟩
               f ∎  ) where
+          -- fc1 may be wrong. is should be a field of PHom, and  k x {x ∙ ○ b} i may be proved standalone.
           fc1 : {b c : Obj A} (p : PHom b c) → A [ k x (phi p)  ≈ k x {hom p} i ]    -- it looks like (*) in page 60
           fc1 {b} {c} p = uniq record { hom =  hom p ; phi = i }  ( k x (phi p)) ( begin -- non terminating because of the record, which we may avoid
                k x (phi p) ∙ < x ∙ ○ b , id1 A b > ≈⟨ fc0 p ⟩
--- a/src/ToposEx.agda	Sun Mar 21 10:16:57 2021 +0900
+++ b/src/ToposEx.agda	Tue Mar 23 14:41:47 2021 +0900
@@ -77,7 +77,7 @@
     ; π1 = m    
     ; π2 = ○ b   
     ; isPullback = record {
-              commute = char-m=⊤ t m mono
+              commute = ? -- char-m=⊤ t m mono
          ;    pullback = λ {d} {p1} {p2} eq →  f← o k  p1 p2 eq
          ;    π1p=π1 = λ {d} {p1'} {p2'} {eq} → lemma3 p1' p2' eq
          ;    π2p=π2 = λ {d} {p1'} {p2'} {eq} → trans-hom (IsCCC.e2 isCCC) (sym (IsCCC.e2 isCCC))
@@ -149,7 +149,7 @@
             char t < id1 A b , id1 A b > δmono o < f , f >  ≈↑⟨ cdr ( IsCCC.π-cong isCCC idL idL ) ⟩
             char t < id1 A b , id1 A b > δmono o < id1 A _ o f , id1 A _ o f >    ≈↑⟨ cdr ( IsCCC.distr-π isCCC ) ⟩
             char t < id1 A b , id1 A b > δmono o (< id1 A _ , id1 A _ > o f)   ≈⟨ assoc ⟩
-           (char t < id1 A b , id1 A b > δmono o < id1 A b , id1 A b > ) o f  ≈⟨ car (char-m=⊤ t < id1 A b , id1 A b > δmono  ) ⟩
+           (char t < id1 A b , id1 A b > δmono o < id1 A b , id1 A b > ) o f  ≈⟨ car ? ⟩
             (⊤ t o  ○  b)  o f  ≈↑⟨ assoc ⟩
             ⊤ t o  (○  b  o f)  ≈⟨ cdr (IsCCC.e2 isCCC)  ⟩
             ⊤ t o  ○  a  ∎