diff src/ToposEx.agda @ 986:e2e11014b0f8

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 04 Mar 2021 18:51:10 +0900
parents 949f83b3a8f0
children bbbe97d2a5ea
line wrap: on
line diff
--- a/src/ToposEx.agda	Wed Mar 03 16:30:40 2021 +0900
+++ b/src/ToposEx.agda	Thu Mar 04 18:51:10 2021 +0900
@@ -30,6 +30,10 @@
             ⊤ t o ( ○ a o p1 )          ≈⟨ assoc ⟩
            (⊤ t o ○ a ) o p1            ∎ 
 
+  ----
+  --
+  --  pull back from h
+  --
   topos-pullback :  {a : Obj A}  → (h : Hom A a (Ω t)) → Pullback A h (⊤ t)
   topos-pullback {a} h = record {
       ab = equalizer-c (Ker t h)         -- b
@@ -63,6 +67,10 @@
              IsEqualizer.k (isEqualizer (Ker t h)) p1' (mh=⊤ h p1' p2' eq)  ≈⟨ IsEqualizer.uniqueness  (isEqualizer (Ker t h)) pe1 ⟩
              p' ∎ 
 
+  ----
+  --
+  --  pull back from m
+  --
   topos-m-pullback : {a b : Obj A}  → (m : Hom A b a) → (mono : Mono A m ) → Pullback A (char t m mono )  (⊤ t)
   topos-m-pullback {a} {b} m mono  = record {
       ab = b     
@@ -76,15 +84,15 @@
          ;    uniqueness = uniq
       }
     } where
-        f← = Iso.≅← (IsoL.iso-L (IsTopos.ker-char (isTopos t) m mono ))
-        f→ = Iso.≅→ (IsoL.iso-L (IsTopos.ker-char (isTopos t) m mono ))
+        f← = Iso.≅← (IsoL.iso-L (IsTopos.ker-iso (isTopos t) m mono ))
+        f→ = Iso.≅→ (IsoL.iso-L (IsTopos.ker-iso (isTopos t) m mono ))
         k : {d : Obj A} (p1 : Hom A d a) → (p2 : Hom A d 1) →  A [ A [ char t m mono o p1 ] ≈ A [ ⊤ t o p2 ] ] → Hom A d (equalizer-c (Ker t (char t m mono)))
         k p1 p2 eq = IsEqualizer.k (isEqualizer (Ker t (char t m mono))) p1 (mh=⊤ (char t m mono) p1 p2 eq )
         lemma3 : {d : Obj A} (p1 : Hom A d a) → (p2 : Hom A d 1)
             →  (eq : A [ A [ char t m mono o p1 ] ≈ A [ ⊤ t o p2 ] ] ) → m o (f← o k p1 p2 eq ) ≈ p1 
         lemma3 {d} p1 p2 eq = begin
            m o (f← o k p1 p2 eq ) ≈⟨ assoc ⟩
-           (m o f← ) o k p1 p2 eq ≈⟨ car (IsoL.iso≈L (IsTopos.ker-char (isTopos t) m mono )) ⟩
+           (m o f← ) o k p1 p2 eq ≈⟨ car (IsoL.iso≈L (IsTopos.ker-iso (isTopos t) m mono )) ⟩
            equalizer (Ker t (char t m mono)) o k p1 p2 eq ≈⟨ IsEqualizer.ek=h (isEqualizer (Ker t (char t m mono))) ⟩
            p1 ∎
         uniq : {d : Obj A} (p' : Hom A d b) (π1' : Hom A d a) (π2' : Hom A d 1)
@@ -93,13 +101,13 @@
         uniq {d} p p1 p2 eq pe1 pe2 = begin
              f← o k p1 p2 eq ≈⟨ cdr ( IsEqualizer.uniqueness  (isEqualizer (Ker t  (char t m mono))) lemma4) ⟩
              f← o (f→ o p ) ≈⟨ assoc ⟩
-             (f← o f→ ) o p  ≈⟨ car (Iso.iso→ (IsoL.iso-L (IsTopos.ker-char (isTopos t) m mono ))) ⟩
+             (f← o f→ ) o p  ≈⟨ car (Iso.iso→ (IsoL.iso-L (IsTopos.ker-iso (isTopos t) m mono ))) ⟩
              id1 A _ o p  ≈⟨ idL ⟩
              p ∎ where
                 lemma4 : A [ A [ equalizer (Ker t (char t m mono)) o (f→ o p) ] ≈ p1 ]
                 lemma4 = begin
                   equalizer (Ker t (char t m mono)) o (f→ o p)  ≈⟨ assoc ⟩
-                  (equalizer (Ker t (char t m mono)) o f→ ) o p  ≈⟨ car (IsoL.L≈iso (IsTopos.ker-char (isTopos t) m mono )) ⟩
+                  (equalizer (Ker t (char t m mono)) o f→ ) o p  ≈⟨ car (IsoL.L≈iso (IsTopos.ker-iso (isTopos t) m mono )) ⟩
                   m o p  ≈⟨ pe1  ⟩
                   p1 ∎ where
 
@@ -120,6 +128,10 @@
             g ∎
 
 --
+--
+--   Hom equality and Ω
+--
+--
 --       a -----------→ +
 --     f||g     ○ a     |
 --      ↓↓              |
@@ -161,6 +173,11 @@
             < id1 A b , id1 A b > o k  ≈⟨ IsCCC.distr-π isCCC ⟩ 
             < id1 A b o k , id1 A b o k >   ≈⟨ IsCCC.π-cong isCCC idL idL ⟩ 
             < k , k >  ∎
+--
+--
+-- Initial Natural number diagram
+--
+--
 
   open NatD
   open ToposNat n
@@ -174,13 +191,13 @@
 --             <0,z>     <suc o π , h >
 
   N : Obj A
-  N = Nat TNat 
+  N = Nat iNat 
 
   record prop33   {a : Obj A} (f : Hom A 1 a ) ( h : Hom A (N  ∧ a) a )  : Set  ( suc c₁  ⊔  suc c₂ ⊔ suc ℓ ) where
      field 
        g :  Hom A N  a
-       g0=f : A [ A [ g o nzero TNat  ]  ≈ f ]
-       gs=h : A [ A [ g o nsuc  TNat  ]  ≈ A [ h o < id1 A _ , g > ] ]
+       g0=f : A [ A [ g o nzero iNat  ]  ≈ f ]
+       gs=h : A [ A [ g o nsuc  iNat  ]  ≈ A [ h o < id1 A _ , g > ] ]
        xnat : NatD A 1
 
   p33 : {a : Obj A} (z : Hom A 1 a ) ( h : Hom A (N  ∧ a) a )  → prop33  z h
@@ -191,54 +208,54 @@
       ; xnat = xnat
     } where
         xnat : NatD A 1
-        xnat = record { Nat = N ∧ a ; nzero = < nzero TNat , z > ; nsuc = < nsuc TNat o π , h > }
+        xnat = record { Nat = N ∧ a ; nzero = < nzero iNat , z > ; nsuc = < nsuc iNat o π , h > }
         fg : Hom A N (N ∧ a )
-        fg = gNat xnat -- < f , g >
+        fg = initialNat xnat -- < f , g >
         f : Hom A N N
         f = π o fg
         g : Hom A N a
         g = π' o fg
-        i : f o nzero TNat  ≈ nzero TNat
+        i : f o nzero iNat  ≈ nzero iNat
         i = begin
-            f o nzero TNat  ≈⟨⟩ 
-            (π  o fg) o  nzero TNat  ≈↑⟨ assoc ⟩ 
-            π  o (fg o  nzero TNat ) ≈⟨ cdr (IsToposNat.izero isToposN xnat ) ⟩ 
+            f o nzero iNat  ≈⟨⟩ 
+            (π  o fg) o  nzero iNat  ≈↑⟨ assoc ⟩ 
+            π  o (fg o  nzero iNat ) ≈⟨ cdr (IsToposNat.izero isToposN xnat ) ⟩ 
             π o nzero xnat ≈⟨ IsCCC.e3a isCCC ⟩ 
-            nzero TNat  ∎  
-        ii : f o nsuc TNat  ≈ nsuc  TNat o f
+            nzero iNat  ∎  
+        ii : f o nsuc iNat  ≈ nsuc  iNat o f
         ii = begin
-            f o nsuc TNat  ≈⟨⟩ 
-            (π o fg ) o nsuc TNat  ≈↑⟨ assoc ⟩ 
-            π o ( fg  o nsuc TNat ) ≈⟨ cdr (IsToposNat.isuc isToposN xnat ) ⟩ 
-            π o (nsuc xnat o gNat xnat) ≈⟨ assoc ⟩ 
-            (π o  < nsuc TNat o π , h > ) o gNat xnat ≈⟨ car (IsCCC.e3a isCCC) ⟩ 
-            ( nsuc TNat o π ) o gNat xnat ≈↑⟨ assoc ⟩ 
-             nsuc TNat o ( π  o gNat xnat ) ≈⟨⟩ 
-             nsuc  TNat o f  ∎  
+            f o nsuc iNat  ≈⟨⟩ 
+            (π o fg ) o nsuc iNat  ≈↑⟨ assoc ⟩ 
+            π o ( fg  o nsuc iNat ) ≈⟨ cdr (IsToposNat.isuc isToposN xnat ) ⟩ 
+            π o (nsuc xnat o initialNat xnat) ≈⟨ assoc ⟩ 
+            (π o  < nsuc iNat o π , h > ) o initialNat xnat ≈⟨ car (IsCCC.e3a isCCC) ⟩ 
+            ( nsuc iNat o π ) o initialNat xnat ≈↑⟨ assoc ⟩ 
+             nsuc iNat o ( π  o initialNat xnat ) ≈⟨⟩ 
+             nsuc  iNat o f  ∎  
         ig : f ≈ id1 A N 
         ig  = begin
-           f   ≈⟨ nat-unique TNat i ii ⟩
-           gNat TNat   ≈↑⟨ nat-unique TNat idL (trans-hom idL (sym idR) ) ⟩
+           f   ≈⟨ nat-unique iNat i ii ⟩
+           initialNat iNat   ≈↑⟨ nat-unique iNat idL (trans-hom idL (sym idR) ) ⟩
            id1 A _  ∎
-        iii : g o nzero TNat ≈ z
+        iii : g o nzero iNat ≈ z
         iii = begin
-            g o nzero TNat  ≈⟨⟩ (π' o gNat xnat ) o nzero TNat  ≈↑⟨ assoc ⟩ 
-            π' o ( gNat xnat  o nzero TNat)  ≈⟨ cdr (IsToposNat.izero isToposN xnat) ⟩ 
-            π' o < nzero TNat , z >  ≈⟨ IsCCC.e3b isCCC ⟩ 
+            g o nzero iNat  ≈⟨⟩ (π' o initialNat xnat ) o nzero iNat  ≈↑⟨ assoc ⟩ 
+            π' o ( initialNat xnat  o nzero iNat)  ≈⟨ cdr (IsToposNat.izero isToposN xnat) ⟩ 
+            π' o < nzero iNat , z >  ≈⟨ IsCCC.e3b isCCC ⟩ 
             z  ∎  
-        iv : g o nsuc TNat ≈ h o < f , g >
+        iv : g o nsuc iNat ≈ h o < f , g >
         iv = begin 
-            g o nsuc TNat  ≈⟨⟩ 
-            (π' o gNat xnat) o nsuc TNat   ≈↑⟨ assoc ⟩ 
-            π' o (gNat xnat o nsuc TNat )  ≈⟨ cdr (IsToposNat.isuc isToposN xnat) ⟩ 
-            π' o  (nsuc xnat o gNat xnat ) ≈⟨ assoc ⟩ 
-            (π' o  nsuc xnat ) o gNat xnat  ≈⟨ car (IsCCC.e3b isCCC) ⟩ 
-            h o gNat xnat  ≈↑⟨ cdr (IsCCC.e3c isCCC) ⟩ 
+            g o nsuc iNat  ≈⟨⟩ 
+            (π' o initialNat xnat) o nsuc iNat   ≈↑⟨ assoc ⟩ 
+            π' o (initialNat xnat o nsuc iNat )  ≈⟨ cdr (IsToposNat.isuc isToposN xnat) ⟩ 
+            π' o  (nsuc xnat o initialNat xnat ) ≈⟨ assoc ⟩ 
+            (π' o  nsuc xnat ) o initialNat xnat  ≈⟨ car (IsCCC.e3b isCCC) ⟩ 
+            h o initialNat xnat  ≈↑⟨ cdr (IsCCC.e3c isCCC) ⟩ 
             h o < π o fg , π' o fg >  ≈⟨⟩ 
             h o < f , g >  ∎  
-        v : A [ A [ g o nsuc TNat ] ≈ A [ h o < id1 A N , g > ] ]
+        v : A [ A [ g o nsuc iNat ] ≈ A [ h o < id1 A N , g > ] ]
         v = begin
-            g o nsuc TNat   ≈⟨ iv  ⟩ 
+            g o nsuc iNat   ≈⟨ iv  ⟩ 
             h o < f , g >   ≈⟨ cdr ( IsCCC.π-cong isCCC ig refl-hom) ⟩ 
             h o < id1 A N , g >  ∎  
 
@@ -248,11 +265,11 @@
   --           /   ↓   \
   --         N --→ N ←-- a
   --
-  cor33  :  coProduct A 1 (Nat TNat ) --  N ≅ N + 1
+  cor33  :  coProduct A 1 (Nat iNat ) --  N ≅ N + 1
   cor33 = record {
         coproduct = N 
-      ; κ1 = nzero TNat 
-      ; κ2 = nsuc TNat 
+      ; κ1 = nzero iNat 
+      ; κ2 = nsuc iNat 
       ; isProduct = record {
               _+_ = λ {a} f g → prop33.g (p  f ( g o π ))  -- Hom A (N n ∧ a) a
            ;  κ1f+g=f = λ {a} {f} {g} → prop33.g0=f (p f (g o π ) )
@@ -263,55 +280,55 @@
     } where
         p :  {a : Obj A} (f  : Hom A 1 a) ( h : Hom A (N  ∧ a) a ) → prop33  f h
         p f h = p33  f h
-        k2 : {a : Obj A} {f  : Hom A 1 a} {g : Hom A (Nat TNat) a }
-           → A [ A [ prop33.g (p f (g o  π)) o nsuc TNat ] ≈ g ]
+        k2 : {a : Obj A} {f  : Hom A 1 a} {g : Hom A (Nat iNat) a }
+           → A [ A [ prop33.g (p f (g o  π)) o nsuc iNat ] ≈ g ]
         k2 {a} {f} {g} = begin
-            (prop33.g (p f (g o π)) o nsuc TNat)  ≈⟨ prop33.gs=h (p f (g o π ))   ⟩
+            (prop33.g (p f (g o π)) o nsuc iNat)  ≈⟨ prop33.gs=h (p f (g o π ))   ⟩
             ( g o π ) o  < id1 A N  , prop33.g (p f (g o π)) >   ≈⟨ sym assoc ⟩
             g o ( π  o   < id1 A N  , prop33.g (p f (g o π)) >)  ≈⟨ cdr (IsCCC.e3a isCCC ) ⟩
             g o id1 A N   ≈⟨ idR ⟩
             g  ∎
-        pp :  {c : Obj A} {h : Hom A (Nat TNat) c} → prop33 ( h o nzero TNat ) ( (h o nsuc TNat)  o π)
-        pp {c} {h} = p ( h o nzero TNat ) ( (h o nsuc TNat)  o π)
-        uniq :  {c : Obj A} {h : Hom A (Nat TNat) c} → 
+        pp :  {c : Obj A} {h : Hom A (Nat iNat) c} → prop33 ( h o nzero iNat ) ( (h o nsuc iNat)  o π)
+        pp {c} {h} = p ( h o nzero iNat ) ( (h o nsuc iNat)  o π)
+        uniq :  {c : Obj A} {h : Hom A (Nat iNat) c} → 
             prop33.g pp ≈ h 
         uniq {c} {h} = begin
             prop33.g pp  ≈⟨⟩
-            π' o gNat (prop33.xnat pp) ≈↑⟨ cdr (nat-unique (prop33.xnat pp) (
+            π' o initialNat (prop33.xnat pp) ≈↑⟨ cdr (nat-unique (prop33.xnat pp) (
                begin
-                  < id1 A _ , h > o nzero TNat ≈⟨ IsCCC.distr-π isCCC ⟩
-                  < id1 A _ o nzero TNat , h o nzero TNat > ≈⟨ IsCCC.π-cong isCCC idL refl-hom  ⟩
-                  < nzero TNat , h o nzero TNat > ≈⟨⟩
+                  < id1 A _ , h > o nzero iNat ≈⟨ IsCCC.distr-π isCCC ⟩
+                  < id1 A _ o nzero iNat , h o nzero iNat > ≈⟨ IsCCC.π-cong isCCC idL refl-hom  ⟩
+                  < nzero iNat , h o nzero iNat > ≈⟨⟩
                   nzero (prop33.xnat pp) ∎ )
                (begin
-                  < id1 A _ , h > o nsuc TNat ≈⟨  IsCCC.distr-π isCCC ⟩
-                  < id1 A _ o nsuc TNat   ,  h o nsuc TNat   > ≈⟨  IsCCC.π-cong isCCC idL refl-hom ⟩
-                  < nsuc TNat   ,  h o nsuc TNat   > ≈↑⟨  IsCCC.π-cong isCCC idR idR ⟩
-                  < nsuc TNat o   id1 A _  ,  (h o nsuc TNat ) o  id1 A _   > ≈↑⟨  IsCCC.π-cong isCCC (cdr (IsCCC.e3a isCCC)) (cdr (IsCCC.e3a isCCC))  ⟩
-                  < nsuc TNat o ( π  o  < id1 A _ , h > ) ,  (h o nsuc TNat ) o ( π   o < id1 A _ , h > ) > ≈⟨  IsCCC.π-cong isCCC assoc assoc ⟩
-                  < (nsuc TNat o π ) o  < id1 A _ , h > ,  ((h o nsuc TNat ) o π  )  o < id1 A _ , h > > ≈↑⟨  IsCCC.distr-π isCCC ⟩
-                  < nsuc TNat o π ,  (h o nsuc TNat ) o π  >  o < id1 A _ , h >  ≈⟨⟩
+                  < id1 A _ , h > o nsuc iNat ≈⟨  IsCCC.distr-π isCCC ⟩
+                  < id1 A _ o nsuc iNat   ,  h o nsuc iNat   > ≈⟨  IsCCC.π-cong isCCC idL refl-hom ⟩
+                  < nsuc iNat   ,  h o nsuc iNat   > ≈↑⟨  IsCCC.π-cong isCCC idR idR ⟩
+                  < nsuc iNat o   id1 A _  ,  (h o nsuc iNat ) o  id1 A _   > ≈↑⟨  IsCCC.π-cong isCCC (cdr (IsCCC.e3a isCCC)) (cdr (IsCCC.e3a isCCC))  ⟩
+                  < nsuc iNat o ( π  o  < id1 A _ , h > ) ,  (h o nsuc iNat ) o ( π   o < id1 A _ , h > ) > ≈⟨  IsCCC.π-cong isCCC assoc assoc ⟩
+                  < (nsuc iNat o π ) o  < id1 A _ , h > ,  ((h o nsuc iNat ) o π  )  o < id1 A _ , h > > ≈↑⟨  IsCCC.distr-π isCCC ⟩
+                  < nsuc iNat o π ,  (h o nsuc iNat ) o π  >  o < id1 A _ , h >  ≈⟨⟩
                   nsuc (prop33.xnat pp) o < id1 A _ , h > ∎  )) ⟩
             π' o < id1 A _ , h > ≈⟨ IsCCC.e3b isCCC ⟩
             h  ∎
-        pcong : {a : Obj A } {f f' : Hom A 1 a } {g g' : Hom A (Nat TNat) a } → (f=f' : f ≈ f' ) → ( g=g' : g ≈ g' )
+        pcong : {a : Obj A } {f f' : Hom A 1 a } {g g' : Hom A (Nat iNat) a } → (f=f' : f ≈ f' ) → ( g=g' : g ≈ g' )
             →  prop33.g (p f (g o π)) ≈ prop33.g (p f' (g' o π))
         pcong {a} {f} {f'} {g} {g'} f=f' g=g' = begin
              prop33.g (p f (g o π))   ≈⟨⟩
-             π' o (gNat (prop33.xnat (p f (g o π)))) ≈↑⟨  cdr (nat-unique (prop33.xnat (p f (g o π))) lem1 lem2 ) ⟩
-             π' o (gNat (prop33.xnat (p f' (g' o π)))) ≈⟨⟩
+             π' o (initialNat (prop33.xnat (p f (g o π)))) ≈↑⟨  cdr (nat-unique (prop33.xnat (p f (g o π))) lem1 lem2 ) ⟩
+             π' o (initialNat (prop33.xnat (p f' (g' o π)))) ≈⟨⟩
              prop33.g (p f' (g' o π))   ∎ where
-                lem1 :  A [ A [ gNat (prop33.xnat (p f' ((A Category.o g') π))) o nzero TNat ] ≈ nzero (prop33.xnat (p f ((A Category.o g) π))) ]
+                lem1 :  A [ A [ initialNat (prop33.xnat (p f' ((A Category.o g') π))) o nzero iNat ] ≈ nzero (prop33.xnat (p f ((A Category.o g) π))) ]
                 lem1 = begin
-                     gNat (prop33.xnat (p f' (g' o π))) o nzero TNat  ≈⟨ IsToposNat.izero isToposN _ ⟩
+                     initialNat (prop33.xnat (p f' (g' o π))) o nzero iNat  ≈⟨ IsToposNat.izero isToposN _ ⟩
                      nzero (prop33.xnat (p f' (g' o π)))  ≈⟨⟩
-                     < nzero TNat , f' > ≈⟨  IsCCC.π-cong isCCC refl-hom (sym f=f') ⟩
-                     < nzero TNat , f > ≈⟨⟩
+                     < nzero iNat , f' > ≈⟨  IsCCC.π-cong isCCC refl-hom (sym f=f') ⟩
+                     < nzero iNat , f > ≈⟨⟩
                      nzero (prop33.xnat (p f (g o π)))   ∎
-                lem2 :   A [ A [ gNat (prop33.xnat (p f' (g' o π))) o nsuc TNat ] ≈ A [ nsuc (prop33.xnat (p f (g o π))) o gNat (prop33.xnat (p f' (g' o π))) ] ]
+                lem2 :   A [ A [ initialNat (prop33.xnat (p f' (g' o π))) o nsuc iNat ] ≈ A [ nsuc (prop33.xnat (p f (g o π))) o initialNat (prop33.xnat (p f' (g' o π))) ] ]
                 lem2 = begin
-                     gNat (prop33.xnat (p f' (g' o π))) o nsuc TNat ≈⟨  IsToposNat.isuc isToposN _ ⟩
-                     nsuc (prop33.xnat (p f' (g' o π))) o gNat (prop33.xnat (p f' (g' o π))) ≈⟨⟩
-                     < (nsuc TNat) o π ,  g' o π > o gNat (prop33.xnat (p f' (g' o π))) ≈⟨ car ( IsCCC.π-cong isCCC refl-hom (car (sym g=g')) ) ⟩
-                     < (nsuc TNat) o π ,  g  o π > o gNat (prop33.xnat (p f' (g' o π))) ≈⟨⟩
-                     nsuc (prop33.xnat (p f (g o π))) o gNat (prop33.xnat (p f' (g' o π))) ∎
+                     initialNat (prop33.xnat (p f' (g' o π))) o nsuc iNat ≈⟨  IsToposNat.isuc isToposN _ ⟩
+                     nsuc (prop33.xnat (p f' (g' o π))) o initialNat (prop33.xnat (p f' (g' o π))) ≈⟨⟩
+                     < (nsuc iNat) o π ,  g' o π > o initialNat (prop33.xnat (p f' (g' o π))) ≈⟨ car ( IsCCC.π-cong isCCC refl-hom (car (sym g=g')) ) ⟩
+                     < (nsuc iNat) o π ,  g  o π > o initialNat (prop33.xnat (p f' (g' o π))) ≈⟨⟩
+                     nsuc (prop33.xnat (p f (g o π))) o initialNat (prop33.xnat (p f' (g' o π))) ∎