changeset 678:867ea41b331c

extensionality remains
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 05 Nov 2017 13:22:59 +0900
parents 3b23eeecd4f8
children 20bdd2f5f708
files pullback.agda
diffstat 1 files changed, 74 insertions(+), 56 deletions(-) [+]
line wrap: on
line diff
--- a/pullback.agda	Sat Nov 04 15:49:26 2017 +0900
+++ b/pullback.agda	Sun Nov 05 13:22:59 2017 +0900
@@ -313,52 +313,54 @@
 --        p                                     |               |
 --        ^                    proj i o e = ε i |               | ε j = proj j o e
 --        |                                     |               |
---        | e = equalizer (id p) (id p)         |               |
+--        | e = equalizer f g                   |               |
 --        |                                     v               v
 --       lim <------------------ d'     a i = Γ i -----------→ Γ j = a j
 --         k ( product pi )                          Γ f
 --                                              Γ f o ε i = ε j 
 --
 
-equc : ( prod :  ( ai : Obj I → Obj A ) →  IProduct A (Obj I) ai )
-        ( eqa : {a b : Obj A} → (f g : Hom A a b)  → Equalizer A f g )
-            → Obj A
-equc prod eqa = equalizer-c (eqa p0id p0id)
-   where
-         p0id = let  open ≈-Reasoning (A) in id1 A (iprod (prod (FObj Γ)))
+-- homprod should be written by IProduct
+record homprod {c : Level } : Set (suc c₁' ⊔ suc c₂' ) where
+   field
+      hom-j : Obj I
+      hom-k : Obj I
+      hom : Hom I hom-j hom-k
+open homprod
+
+Fcod : homprod {c₁} → Obj A
+Fcod = λ  u →  FObj Γ ( hom-k u )
+
+equ-ε :
+     ( prod :  {c : Level} { I : Set c } → ( ai : I → Obj A ) →  IProduct A I ai )
+     ( eqa : {a b : Obj A} → (f g : Hom A a b)  → Equalizer A f g )
+         → Equalizer A
+           (iproduct (isIProduct (prod Fcod)) (λ u → A [ FMap Γ (hom u) o pi (prod (FObj Γ)) (hom-j u ) ] ))
+           (iproduct (isIProduct (prod Fcod)) (λ u → pi (prod (FObj Γ)) (hom-k u )))
+equ-ε prod eqa = eqa
+           (iproduct (isIProduct (prod Fcod)) (λ u → A [ FMap Γ (hom u) o pi (prod (FObj Γ)) (hom-j u ) ] ))
+           (iproduct (isIProduct (prod Fcod)) (λ u → pi (prod (FObj Γ)) (hom-k u )))
 
 limit-ε :
-     ( prod :  ( ai : Obj I → Obj A ) →  IProduct A (Obj I) ai )
-     ( aprod :  ( ai : { j k : Obj I} → (Hom I j k)  → Obj A  ) →  ∀{ i j : Obj I} → IProduct A (Hom I i j) ai )
+     ( prod :  {c : Level} { I : Set c } → ( ai : I → Obj A ) →  IProduct A I ai )
      ( eqa : {a b : Obj A} → (f g : Hom A a b)  → Equalizer A f g )
-          → NTrans I A (K A I (equc prod eqa )) Γ
-limit-ε = {!!}
-
-limit-ε' :
-     ( prod :  ( ai : Obj I → Obj A ) →  IProduct A (Obj I) ai )
-     ( aprod :  ( ai : { j k : Obj I} → (Hom I j k)  → Obj A  ) →  ∀{ i j : Obj I} → IProduct A (Hom I i j) ai )
-     ( eqa : {a b : Obj A} → (f g : Hom A a b)  → Equalizer A f g )
-          → NTrans I A (K A I {!!} ) Γ
-limit-ε' prod aprod eqa = record {
+          → NTrans I A (K A I (equalizer-c (equ-ε prod eqa  )) ) Γ
+limit-ε prod eqa = record {
        TMap = λ i → tmap i ; 
-       isNTrans = record { commute = {!!} }
+       isNTrans = record { commute = commute1 }
    } where
        p0 : Obj A
        p0 = iprod (prod (FObj Γ))
-       Fcod : { j k : Obj I } ( u : Hom I j k ) → Obj A
-       Fcod = λ  u →  FObj Γ (Category.cod I u)
-       equ : ∀{ j k : Obj I } → Equalizer A
-           (iproduct (isIProduct (aprod Fcod {j} {k})) (λ h → A [ FMap Γ h o pi (prod (FObj Γ)) j ] ))
-           (iproduct (isIProduct (aprod Fcod {j} {k})) (λ h → pi (prod (FObj Γ)) k ))
-       equ {j} {k} = let  open ≈-Reasoning (A) in
-           eqa (iproduct (isIProduct (aprod Fcod {j} {k})) (λ h → A [ FMap Γ h o pi (prod (FObj Γ)) j ] ))
-           (iproduct (isIProduct (aprod Fcod {j} {k})) (λ h → pi (prod (FObj Γ)) k ))
-       d : ∀{ j k : Obj I } → Obj A
-       d {j} {k} = equalizer-c (equ {j} {k} )
-       e : ∀{ j k : Obj I } → Hom A d p0
-       e {j} {k} = equalizer (equ {j} {k} )
+       d :  Obj A
+       d  = equalizer-c (equ-ε prod eqa ) 
+       e :  Hom A d p0
+       e = equalizer (equ-ε prod eqa ) 
        proj : (i : Obj I) → Hom A p0 (FObj Γ i)
        proj = pi ( prod  (FObj Γ) )
+       f : Hom A p0 (iprod (prod Fcod))
+       f =  (iproduct (isIProduct (prod Fcod)) (λ u → pi (prod (FObj Γ)) (hom-k u )))
+       g : Hom A p0 (iprod (prod Fcod))
+       g =  (iproduct (isIProduct (prod Fcod)) (λ u → A [ FMap Γ (hom u) o pi (prod (FObj Γ)) (hom-j u ) ] ))
        tmap : (i : Obj I) → Hom A (FObj (K A I d) i) (FObj Γ i)
        tmap i = A [ proj i o e ] 
        commute1 :  {j k : Obj I} {u : Hom I j k} →
@@ -369,16 +371,16 @@
               FMap Γ u o ( proj j o e )
          ≈⟨ assoc ⟩
               ( FMap Γ u o  pi (prod (FObj Γ)) j ) o e 
-         ≈↑⟨ car (car ( pif=q (isIProduct (aprod Fcod )))  ) ⟩
-             (( pi (aprod Fcod ) u o iproduct (isIProduct (aprod Fcod)) (FMap Γ)) o  pi (prod (FObj Γ)) j ) o e 
-         ≈⟨ {!!} ⟩
-             (( pi (aprod Fcod ) u o iproduct (isIProduct (aprod Fcod)) (FMap Γ)) o  pi (prod (FObj Γ)) j ) o e 
-         ≈⟨ {!!} ⟩
-             (( pi (aprod Fcod ) u o iproduct (isIProduct (aprod Fcod)) (λ e → id1 A (FObj Γ (Category.cod I e)))) o  pi (prod (FObj Γ)) k ) o e 
-         ≈⟨ car (car ( pif=q (isIProduct (aprod Fcod )))  ) ⟩
-              ( id1 A (FObj Γ k) o pi (prod (FObj Γ)) k  ) o e 
-         ≈⟨ {!!} ⟩
-              ( pi (prod (FObj Γ)) k ) o e 
+         ≈↑⟨ car ( pif=q (isIProduct (prod Fcod )) ) ⟩
+             ( pi (prod Fcod ) (record {hom-j = j ; hom-k = k ; hom = u} ) o g ) o e 
+         ≈↑⟨ assoc ⟩
+               pi (prod Fcod ) (record {hom-j = j ; hom-k = k ; hom = u} ) o (g  o e )
+         ≈⟨ cdr ( fe=ge (isEqualizer (equ-ε prod eqa ))) ⟩
+               pi (prod Fcod ) (record {hom-j = j ; hom-k = k ; hom = u} ) o (f  o e )
+         ≈⟨ assoc ⟩
+             ( pi (prod Fcod ) (record {hom-j = j ; hom-k = k ; hom = u} ) o f ) o e 
+         ≈⟨ car ( pif=q (isIProduct (prod Fcod )))   ⟩
+               pi (prod (FObj Γ)) k o e 
          ≈⟨⟩
               proj k o e 
          ≈↑⟨ idR ⟩
@@ -388,12 +390,12 @@

 
 limit-from :
-     ( prod :  ( ai : Obj I → Obj A ) →  IProduct A (Obj I) ai )
+     ( prod :  {c : Level} { I : Set c } → ( ai : I → Obj A ) →  IProduct A I ai )
      ( eqa : {a b : Obj A} → (f g : Hom A a b)  → Equalizer A f g )
       → Limit A I Γ 
 limit-from prod eqa = record {
-     a0 = equalizer-c p0equ ;
-     t0 = limit-ε prod {!!} eqa ; 
+     a0 = lim ;
+     t0 = limit-ε prod eqa ; 
      isLimit = record {
              limit = λ a t → limit1 a t ;
              t0f=t = λ {a t i } → t0f=t1  {a} {t} {i} ;
@@ -401,36 +403,52 @@
      }
     }  where
          lim : Obj A 
-         lim = equc prod eqa 
+         lim = equalizer-c ( equ-ε prod eqa )
          p0 = iprod (prod (FObj Γ))
-         p0id = let  open ≈-Reasoning (A) in id1 A p0 
-         p0equ = eqa p0id p0id
-         e = let  open ≈-Reasoning (A) in equalizer ( eqa (id1 A p0 ) ( id1 A p0 ) )
-         equ = isEqualizer (eqa (id1 A p0) (id1 A p0 ))
+         e = let  open ≈-Reasoning (A) in equalizer ( equ-ε prod eqa )
+         equ = isEqualizer  ( equ-ε prod eqa )
          proj = pi ( prod  (FObj Γ) )
          prodΓ = isIProduct ( prod (FObj Γ) ) 
+         open import Relation.Binary.Core
+         import Relation.Binary.PropositionalEquality
+         postulate extensionality : {c : Level} {U : Set c} {x y  : Obj A } {f g : U  → Hom A x y } → ( ∀ (u : U)  → A [ f u ≈  g u ] ) → ( λ u → f u ) ≡ ( λ u → g u ) 
+         comm : (a : Obj A) → (t : NTrans I A (K A I a) Γ ) →
+            A [ A [ iproduct (isIProduct (prod Fcod)) (λ u → A [ FMap Γ (hom u) o pi (prod (FObj Γ)) (hom-j u) ])
+                  o iproduct prodΓ (TMap t) ]
+              ≈ A [ iproduct (isIProduct (prod Fcod)) (λ u → pi (prod (FObj Γ)) (hom-k u))
+                  o iproduct prodΓ (TMap t) ] ]
+         comm a t = let  open ≈-Reasoning (A) in begin
+                  iproduct (isIProduct (prod Fcod)) (λ u → ( FMap Γ (hom u) o pi (prod (FObj Γ)) (hom-j u))) o iproduct prodΓ (TMap t) 
+                ≈⟨ car ( ip-cong (isIProduct (prod Fcod)) ( extensionality  ( λ u →   begin
+                        FMap Γ (hom u) o pi (prod (FObj Γ)) (hom-j u)
+                     ≈⟨ ? ⟩
+                        pi (prod (FObj Γ)) (hom-k u)
+                     ∎
+                    ))) ⟩
+                  iproduct (isIProduct (prod Fcod)) (λ u → pi (prod (FObj Γ)) (hom-k u)) o iproduct prodΓ (TMap t) 
+                ∎
          limit1 :  (a : Obj A) → NTrans I A (K A I a) Γ → Hom A a lim
-         limit1 a t = let  open ≈-Reasoning (A) in k equ (iproduct prodΓ (TMap t) ) refl-hom
+         limit1 a t = let  open ≈-Reasoning (A) in k equ (iproduct prodΓ (TMap t) ) ( comm a t )
          t0f=t1 :  {a : Obj A} {t : NTrans I A (K A I a) Γ} {i : Obj I} →
-                A [ A [ TMap (limit-ε prod {!!} eqa ) i o limit1 a t ] ≈ TMap t i ]
+                A [ A [ TMap (limit-ε prod eqa ) i o limit1 a t ] ≈ TMap t i ]
          t0f=t1 {a} {t} {i} = let  open ≈-Reasoning (A) in begin
-                   TMap (limit-ε prod {!!} eqa ) i o limit1 a t 
+                   TMap (limit-ε prod eqa ) i o limit1 a t 
                 ≈⟨⟩
-                   ( ( proj i )  o e ) o  k equ (iproduct prodΓ (TMap t) ) refl-hom
+                   ( ( proj i )  o e ) o  k equ (iproduct prodΓ (TMap t) ) (comm a t)
                 ≈↑⟨ assoc  ⟩
-                    proj i  o ( e  o  k equ (iproduct prodΓ (TMap t) ) refl-hom )
+                    proj i  o ( e  o  k equ (iproduct prodΓ (TMap t) ) (comm a t ) )
                 ≈⟨ cdr ( ek=h equ) ⟩
                     proj i  o iproduct prodΓ (TMap t)
                 ≈⟨ pif=q prodΓ ⟩
                    TMap t i 

          limit-uniqueness1 :  {a : Obj A} {t : NTrans I A (K A I a) Γ} {f : Hom A a lim} 
-                → ({i : Obj I} → A [ A [ TMap (limit-ε prod {!!} eqa ) i o f ] ≈ TMap t i ]) →
+                → ({i : Obj I} → A [ A [ TMap (limit-ε prod eqa ) i o f ] ≈ TMap t i ]) →
                 A [ limit1 a t ≈ f ]
          limit-uniqueness1 {a} {t} {f} lim=t = let  open ≈-Reasoning (A) in begin
                     limit1 a t
                 ≈⟨⟩
-                    k equ (iproduct prodΓ (TMap t) ) refl-hom
+                    k equ (iproduct prodΓ (TMap t) ) (comm a t)
                 ≈⟨ IsEqualizer.uniqueness  equ ( begin
                       e o f 
                 ≈↑⟨ ip-uniqueness prodΓ ⟩