changeset 264:78ce12f8e6b6

pullback done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 20 Sep 2013 21:21:48 +0900
parents c1b3193097ce
children 367e8fde93ee
files cat-utility.agda pullback.agda
diffstat 2 files changed, 25 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/cat-utility.agda	Fri Sep 20 19:03:57 2013 +0900
+++ b/cat-utility.agda	Fri Sep 20 21:21:48 2013 +0900
@@ -152,12 +152,12 @@
         -- 
         -- Product
         --
-        --
-        --                 
-        --
-        --
-        --
-        --
+        --                c
+        --        f       |        g
+        --                |f×g
+        --                v
+        --    a <-------- ab ----------> b
+        --         π1            π2
 
 
         record Product { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ )  (a b ab : Obj A) 
@@ -169,6 +169,7 @@
               π1fxg=f : {c : Obj A} { f : Hom A c a } → { g : Hom A c b } → A [ A [ π1  o ( f × g )  ] ≈  f ]
               π2fxg=g : {c : Obj A} { f : Hom A c a } → { g : Hom A c b } → A [ A [ π2  o ( f × g )  ] ≈  g ]
               uniqueness : {c : Obj A} { h : Hom A c ab }  → A [  ( A [ π1  o h  ] ) × ( A [ π2  o h  ] ) ≈  h ]
+              ×-cong : {c : Obj A} { f f' : Hom A c a } → { g g' : Hom A c b } → A [ f ≈ f' ] → A [ g ≈ g' ] → A [ f × g ≈ f' × g' ] 
            axb : Obj A
            axb = ab
 
--- a/pullback.agda	Fri Sep 20 19:03:57 2013 +0900
+++ b/pullback.agda	Fri Sep 20 21:21:48 2013 +0900
@@ -12,7 +12,7 @@
 open import cat-utility
 
 -- 
--- Pullback
+-- Pullback from equalizer and product
 --         f
 --     a -------> c
 --     ^          ^                 
@@ -21,9 +21,10 @@
 --    ab -------> b
 --     ^   π2
 --     |
---     | equalizer (f π1) (g π1) = ( π1' × π2' )
---     d   
---
+--     | e = equalizer (f π1) (g π1)  
+--     |
+--     d <------------------ d'
+--         k (π1' × π2' )
 
 open Equalizer
 open Product
@@ -105,14 +106,23 @@
         {eq1 : A [ A [ A [ π1 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) ] o p' ] ≈ π1' ]} →
         {eq2 : A [ A [ A [ π2 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) ] o p' ] ≈ π2' ]} →
         A [ p1 eq ≈ p' ]
-      uniqueness1 {d'} p' {π1'} {π2'} {eq} {eq1} = let open ≈-Reasoning (A) in
+      uniqueness1 {d'} p' {π1'} {π2'} {eq} {eq1} {eq2} = let open ≈-Reasoning (A) in
              begin
                  p1 eq
              ≈⟨⟩
                  k ( eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e} ) (_×_ prod  π1'  π2' ) (lemma1 eq)
-             ≈⟨ Equalizer.uniqueness (eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e}) {!!} ⟩
-                 {!!} o {!!}
-             ≈⟨ {!!} ⟩
+             ≈⟨ Equalizer.uniqueness (eqa ( A [ f o π1 ] ) ( A [ g o π2 ] ) {e}) ( begin
+                 e o p'
+             ≈⟨⟩
+                  equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) o p'
+             ≈↑⟨ Product.uniqueness prod ⟩
+                (prod × (  π1 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) o p') ) ( π2 o (equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) o p'))
+             ≈⟨ ×-cong prod (assoc) (assoc) ⟩
+                 (prod × (A [ A [ π1 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) ] o p' ]))
+                         (A [ A [ π2 o equalizer (eqa (A [ f o π1 ]) (A [ g o π2 ])) ] o p' ]) 
+             ≈⟨ ×-cong prod eq1 eq2 ⟩
+                ((prod × π1') π2')
+             ∎ ) ⟩
                  p'