diff equalizer.agda @ 230:1ef8c70c7054

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 07 Sep 2013 18:56:46 +0900
parents 68b2681ea9df
children 1dc1c697145f
line wrap: on
line diff
--- a/equalizer.agda	Fri Sep 06 11:52:41 2013 +0900
+++ b/equalizer.agda	Sat Sep 07 18:56:46 2013 +0900
@@ -6,14 +6,14 @@
 --    c  --------> a ----------> b
 --    ^        .     ---------->
 --    |      .            g
---    |k   .                
---    |  . h              
---    d 
+--    |k   .
+--    |  . h
+--    d
 --
 --                        Shinji KONO <kono@ie.u-ryukyu.ac.jp>
 ----
 
-open import Category -- https://github.com/konn/category-agda                                                                                     
+open import Category -- https://github.com/konn/category-agda
 open import Level
 module equalizer { c₁ c₂ ℓ : Level} { A : Category c₁ c₂ ℓ } where
 
@@ -22,31 +22,31 @@
 
 record Equalizer { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ )  {c a b : Obj A} (f g : Hom A a b)  : Set  (ℓ ⊔ (c₁ ⊔ c₂)) where
    field
-      e : Hom A c a 
+      e : Hom A c a
       fe=ge : A [ A [ f o e ] ≈ A [ g o e ] ]
       k : {d : Obj A}  (h : Hom A d a) → A [ A [ f  o  h ] ≈ A [ g  o h ] ] → Hom A d c
       ek=h : {d : Obj A}  → ∀ {h : Hom A d a} →  {eq : A [ A [ f  o  h ] ≈ A [ g  o h ] ] } →  A [ A [ e  o k {d} h eq ] ≈ h ]
-      uniqueness : {d : Obj A} →  ∀ {h : Hom A d a} →  {eq : A [ A [ f  o  h ] ≈ A [ g  o h ] ] } →  {k' : Hom A d c } → 
+      uniqueness : {d : Obj A} →  ∀ {h : Hom A d a} →  {eq : A [ A [ f  o  h ] ≈ A [ g  o h ] ] } →  {k' : Hom A d c } →
               A [ A [ e  o k' ] ≈ h ] → A [ k {d} h eq  ≈ k' ]
    equalizer : Hom A c a
    equalizer = e
 
--- 
+--
 -- Flat Equational Definition of Equalizer
--- 
+--
 record Burroni { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ )  {c a b : Obj A} (f g : Hom A a b) : Set  (ℓ ⊔ (c₁ ⊔ c₂)) where
    field
       α : {a b c : Obj A } → (f : Hom A a b) → (g : Hom A a b ) →  Hom A c a
       γ : {a b c d : Obj A } → (f : Hom A a b) → (g : Hom A a b ) → (h : Hom A d a ) →  Hom A d c
-      δ : {a b c : Obj A } → (f : Hom A a b) → Hom A a c 
+      δ : {a b c : Obj A } → (f : Hom A a b) → Hom A a c
       b1 : A [ A [ f  o α {a} {b} {a}  f g ] ≈ A [ g  o α f g ] ]
       b2 :  {d : Obj A } → {h : Hom A d a } → A [ A [ ( α f g) o (γ {a} {b} {c} f g h) ] ≈ A [ h  o α (A [ f o h ]) (A [ g o h ]) ] ]
       b3 :  A [ A [ α f f o δ {a} {b} {a} f ] ≈ id1 A a ]
       -- b4 :  {c d : Obj A } {k : Hom A c a} → A [ β f g ( A [ α f g o  k ] ) ≈ k ]
-      b4 :  {d : Obj A } {k : Hom A d c} → A [ A [ γ {a} {b} {c} {d} f g ( A [ α {a} {b} {c} f g o k ] ) o δ (A [ f o A [ α f g o  k ] ] ) ] ≈ k ]  
+      b4 :  {d : Obj A } {k : Hom A d c} → A [ A [ γ {a} {b} {c} {d} f g ( A [ α {a} {b} {c} f g o k ] ) o δ (A [ f o A [ α f g o  k ] ] ) ] ≈ k ]
    --  A [ α f g o β f g h ] ≈ h
    β : { d e a b : Obj A}  → (f : Hom A a b) → (g : Hom A a b ) →  (h : Hom A d a ) → Hom A d c
-   β {d} {e} {a} {b} f g h =  A [ γ {a} {b} {c} f g h o δ (A [ f o h ]) ] 
+   β {d} {e} {a} {b} f g h =  A [ γ {a} {b} {c} f g h o δ (A [ f o h ]) ]
 
 open Equalizer
 
@@ -60,17 +60,17 @@
 f1=g1 eq h = let open ≈-Reasoning (A) in (resp refl-hom eq )
 
 f1=f1 : { a b : Obj A } (f : Hom A a b ) →  A [ A [ f o (id1 A a)  ] ≈ A [ f o (id1 A a)  ]  ]
-f1=f1  f = let open ≈-Reasoning (A) in refl-hom 
+f1=f1  f = let open ≈-Reasoning (A) in refl-hom
 
 f1=gh : { a b c d : Obj A } {f g : Hom A a b } → { e : Hom A c a } → { h : Hom A d c } →
        (eq : A [ A [ f  o e ] ≈ A [ g  o e ] ] ) → A [ A [ f o A [ e o h ] ] ≈ A [ g o A [ e  o h ]  ] ]
-f1=gh {a} {b} {c} {d} {f} {g} {e} {h} eq = let open ≈-Reasoning (A) in 
+f1=gh {a} {b} {c} {d} {f} {g} {e} {h} eq = let open ≈-Reasoning (A) in
              begin
                   f o ( e  o h )
              ≈⟨ assoc  ⟩
-                  (f o  e ) o h 
+                  (f o  e ) o h
              ≈⟨ car eq  ⟩
-                  (g o  e ) o h 
+                  (g o  e ) o h
              ≈↑⟨ assoc  ⟩
                   g o ( e  o h )

@@ -80,28 +80,28 @@
 --
 --     Equalizer has free choice of c up to isomorphism, we cannot prove eqa = id a
 
-equalizer-eq-k  : { a b : Obj A } {f g : Hom A a b } → (eq : A [ f ≈ g ] ) → ( eqa : Equalizer A {a} f g) → 
+equalizer-eq-k  : { a b : Obj A } {f g : Hom A a b } → (eq : A [ f ≈ g ] ) → ( eqa : Equalizer A {a} f g) →
       A [ e eqa ≈ id1 A a ] →
-      A [ k eqa (id1 A a) (f1=g1 eq (id1 A a)) ≈ id1 A a ] 
+      A [ k eqa (id1 A a) (f1=g1 eq (id1 A a)) ≈ id1 A a ]
 equalizer-eq-k {a} {b} {f} {g} eq eqa e=1 =  let open ≈-Reasoning (A) in
              begin
-                   k eqa (id1 A a) (f1=g1 eq (id1 A a))     
+                   k eqa (id1 A a) (f1=g1 eq (id1 A a))
              ≈⟨ uniqueness eqa ( begin
                     e eqa o id1 A a
                  ≈⟨ idR ⟩
-                    e eqa 
+                    e eqa
                  ≈⟨ e=1 ⟩
                     id1 A a
              ∎ )⟩
                    id1 A a

 
-equalizer-eq-e  : { a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {a} f g) → (eq : A [ f ≈ g ] ) → 
+equalizer-eq-e  : { a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {a} f g) → (eq : A [ f ≈ g ] ) →
       A [ k eqa (id1 A a) (f1=g1 eq (id1 A a)) ≈ id1 A a ] →
-      A [ e eqa ≈ id1 A a ] 
+      A [ e eqa ≈ id1 A a ]
 equalizer-eq-e {a} {b} {f} {g} eqa eq k=1 =  let open ≈-Reasoning (A) in
              begin
-                   e eqa 
+                   e eqa
              ≈↑⟨ idR ⟩
                    e eqa  o id1 A a
              ≈↑⟨ cdr k=1 ⟩
@@ -114,26 +114,26 @@
 --
 --   An isomorphic element c' of c makes another equalizer
 --
---           e eqa f g        f 
+--           e eqa f g        f
 --         c ----------> a ------->b
---        |^ 
---        || 
+--        |^
+--        ||
 --    h   || h-1
---        v| 
---         c'              
+--        v|
+--         c'
 
 equalizer+iso : {a b c c' : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) → (h-1 : Hom A c' c ) → (h : Hom A c c' ) →
                 A [ A [ h-1  o h ]  ≈ id1 A c ] → A [ A [ h  o h-1 ]  ≈ id1 A c' ]
-           → Equalizer A {c'} f g 
+           → Equalizer A {c'} f g
 equalizer+iso  {a} {b} {c} {c'} {f} {g} eqa h-1 h h-1-id h-id =  record {
       e = A [  e eqa o h-1 ] ;
       fe=ge = fe=ge1 ;
       k = λ j eq → A [ h o k eqa j eq ] ;
-      ek=h = ek=h1 ; 
+      ek=h = ek=h1 ;
       uniqueness = uniqueness1
   } where
       fe=ge1 :  A [ A [ f o A [  e eqa  o h-1 ] ] ≈ A [ g o A [  e eqa o h-1 ] ] ]
-      fe=ge1 = let open ≈-Reasoning (A) in 
+      fe=ge1 = let open ≈-Reasoning (A) in
              begin
                   f o ( e eqa o h-1  )
              ≈⟨ assoc  ⟩
@@ -169,16 +169,16 @@
                  begin
                     e eqa  o ( h-1 o j )
                  ≈⟨ assoc ⟩
-                    (e eqa  o  h-1 ) o j 
+                    (e eqa  o  h-1 ) o j
                  ≈⟨ ej=h ⟩
                     h'

              )) ⟩
                    h  o ( h-1 o j )
              ≈⟨ assoc  ⟩
-                   (h  o  h-1 ) o j 
+                   (h  o  h-1 ) o j
              ≈⟨ car h-id ⟩
-                   id1 A c' o j 
+                   id1 A c' o j
              ≈⟨ idL ⟩
                    j

@@ -187,37 +187,37 @@
 --
 --           e eqa f g        f
 --         c ----------> a ------->b
---         ^ ---> d ---> 
+--         ^ ---> d --->
 --         |  i      h
 --        j|    k' (d' → d)
 --         |    k  (d' → a)
---         d'            
+--         d'
 
-equalizer+h : {a b c d : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) (i : Hom A c d ) → (h : Hom A d a ) → (h-1 : Hom A a d ) 
+equalizer+h : {a b c d : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) (i : Hom A c d ) → (h : Hom A d a ) → (h-1 : Hom A a d )
            → A [ A [ h  o i ]  ≈ e eqa ] → A [ A [ h-1  o h ]  ≈ id1 A d ]
-           → Equalizer A {c} (A [ f o h ])  (A [ g o h ] ) 
+           → Equalizer A {c} (A [ f o h ])  (A [ g o h ] )
 equalizer+h  {a} {b} {c} {d} {f} {g} eqa i h h-1 eq h-1-id =  record {
       e = i  ; -- A [ h-1 o e eqa ]  ;       -- Hom A a d
       fe=ge = fe=ge1 ;
       k = λ j eq' → k eqa (A [ h o j ]) (fhj=ghj j eq' ) ;
-      ek=h = ek=h1 ; 
+      ek=h = ek=h1 ;
       uniqueness = uniqueness1
    } where
-      fhj=ghj :  {d' : Obj A } → (j : Hom A d' d ) → 
+      fhj=ghj :  {d' : Obj A } → (j : Hom A d' d ) →
            A [ A [ A [ f o h ] o j ] ≈ A [ A [ g o h ] o j ] ] →
-           A [ A [ f o A [ h o j ] ] ≈ A [ g o A [ h o j ] ] ] 
+           A [ A [ f o A [ h o j ] ] ≈ A [ g o A [ h o j ] ] ]
       fhj=ghj j eq' = let open ≈-Reasoning (A) in
              begin
                   f o ( h o j  )
              ≈⟨ assoc  ⟩
-                  (f o h ) o j  
+                  (f o h ) o j
              ≈⟨ eq' ⟩
-                  (g o h ) o j  
+                  (g o h ) o j
              ≈↑⟨ assoc ⟩
                   g o ( h  o j )

       fe=ge1 :  A [ A [ A [ f o h ] o i ] ≈ A [ A [ g o h ] o i ] ]
-      fe=ge1 = let open ≈-Reasoning (A) in 
+      fe=ge1 = let open ≈-Reasoning (A) in
              begin
                    ( f o h ) o i
              ≈↑⟨ assoc  ⟩
@@ -237,9 +237,9 @@
              begin
                    i o k eqa (h o k' ) (fhj=ghj k' eq') --    h-1 (h o i ) o k eqa (h o k' ) = h-1 (h o k')
              ≈↑⟨ idL  ⟩
-                   (id1 A d ) o ( i o k eqa (h o k' ) (fhj=ghj k' eq')) 
+                   (id1 A d ) o ( i o k eqa (h o k' ) (fhj=ghj k' eq'))
              ≈↑⟨ car h-1-id ⟩
-                   ( h-1 o h ) o ( i o k eqa (h o k' ) (fhj=ghj k' eq')) 
+                   ( h-1 o h ) o ( i o k eqa (h o k' ) (fhj=ghj k' eq'))
              ≈↑⟨ assoc  ⟩
                     h-1 o ( h  o ( i o k eqa (h o k' ) (fhj=ghj k' eq')) )
              ≈⟨ cdr assoc  ⟩
@@ -249,9 +249,9 @@
              ≈⟨ cdr (ek=h eqa)  ⟩
                     h-1 o ( h  o k' )
              ≈⟨ assoc  ⟩
-                    ( h-1 o  h ) o k' 
+                    ( h-1 o  h ) o k'
              ≈⟨ car h-1-id ⟩
-                    id1 A d o k' 
+                    id1 A d o k'
              ≈⟨ idL ⟩
                    k'

@@ -267,21 +267,21 @@
                 ≈↑⟨ assoc   ⟩
                     h o (i  o k')
                 ≈⟨ cdr ik=h ⟩
-                     h o h' 
+                     h o h'
              ∎ ) ⟩
                    k'

 
---  If we have equalizer f g, e hf hg is also equalizer if we have isomorphic pair 
+--  If we have equalizer f g, e hf hg is also equalizer if we have isomorphic pair
 
-h+equalizer : {a b c d : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) (h : Hom A b d ) 
+h+equalizer : {a b c d : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) (h : Hom A b d )
            → (h-1 : Hom A d b ) → A [ A [ h-1  o h ]  ≈ id1 A b ]
-           → Equalizer A {c} (A [ h o f ])  (A [ h o g ] ) 
+           → Equalizer A {c} (A [ h o f ])  (A [ h o g ] )
 h+equalizer  {a} {b} {c} {d} {f} {g} eqa h h-1 h-1-id =  record {
-      e = e eqa  ;   
-      fe=ge = fe=ge1 ; 
+      e = e eqa  ;
+      fe=ge = fe=ge1 ;
       k = λ j eq' → k eqa j (fj=gj j eq') ;
-      ek=h = ek=h1 ; 
+      ek=h = ek=h1 ;
       uniqueness = uniqueness1
    }  where
       fj=gj : {e : Obj A} → (j : Hom A e a ) →  A [ A [ A [ h o f ] o  j ] ≈ A [ A [ h o g ] o j ] ] →  A [ A [ f o j ] ≈ A [ g o j ] ]
@@ -316,7 +316,7 @@
              ≈⟨ cdr (fe=ge eqa)  ⟩
                 h o (g  o e eqa )
              ≈⟨ assoc ⟩
-                ( h o g ) o e eqa 
+                ( h o g ) o e eqa

       ek=h1 :   {d₁ : Obj A} {j : Hom A d₁ a} {eq : A [ A [ A [ h o f ] o j ] ≈ A [ A [ h o g ] o j ] ]} →
         A [ A [ e eqa o k eqa j (fj=gj j eq) ] ≈ j ]
@@ -324,35 +324,35 @@
       uniqueness1 : {d₁ : Obj A} {j : Hom A d₁ a} {eq : A [ A [ A [ h o f ] o j ] ≈ A [ A [ h o g ] o j ] ]} {k' : Hom A d₁ c} →
         A [ A [ e eqa o k' ] ≈ j ] → A [ k eqa j (fj=gj j eq) ≈ k' ]
       uniqueness1 = uniqueness eqa
-      
+
 --  If we have equalizer f g, e (ef) (eg) is also an equalizer  and e = id c
 
-eefeg : {a b c : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g) 
-           → Equalizer A {c} (A [ f o e eqa ])  (A [ g o e eqa ] ) 
+eefeg : {a b c : Obj A } {f g : Hom A a b } ( eqa : Equalizer A {c} f g)
+           → Equalizer A {c} (A [ f o e eqa ])  (A [ g o e eqa ] )
 eefeg {a} {b} {c} {f} {g} eqa =  record {
       e = id1 A c ; -- i  ; -- A [ h-1 o e eqa ]  ;       -- Hom A a d
       fe=ge = fe=ge1 ;
       k = λ j eq' → k eqa (A [ h o j ]) (fhj=ghj j eq' ) ;
-      ek=h = ek=h1 ; 
+      ek=h = ek=h1 ;
       uniqueness = uniqueness1
    } where
       i = id1 A c
       h = e eqa
-      fhj=ghj :  {d' : Obj A } → (j : Hom A d' c ) → 
+      fhj=ghj :  {d' : Obj A } → (j : Hom A d' c ) →
            A [ A [ A [ f o h ] o j ] ≈ A [ A [ g o h ] o j ] ] →
-           A [ A [ f o A [ h o j ] ] ≈ A [ g o A [ h o j ] ] ] 
+           A [ A [ f o A [ h o j ] ] ≈ A [ g o A [ h o j ] ] ]
       fhj=ghj j eq' = let open ≈-Reasoning (A) in
              begin
                   f o ( h o j  )
              ≈⟨ assoc  ⟩
-                  (f o h ) o j  
+                  (f o h ) o j
              ≈⟨ eq' ⟩
-                  (g o h ) o j  
+                  (g o h ) o j
              ≈↑⟨ assoc ⟩
                   g o ( h  o j )

       fe=ge1 :  A [ A [ A [ f o h ] o i ] ≈ A [ A [ g o h ] o i ] ]
-      fe=ge1 = let open ≈-Reasoning (A) in 
+      fe=ge1 = let open ≈-Reasoning (A) in
              begin
                    ( f o h ) o i
              ≈⟨ car ( fe=ge eqa ) ⟩
@@ -378,7 +378,7 @@
                 ≈↑⟨ cdr idL ⟩
                     e eqa o (id1 A c o k' )
                 ≈⟨ cdr ik=h ⟩
-                    e eqa o h' 
+                    e eqa o h'
              ∎ ) ⟩
                    k'

@@ -391,34 +391,30 @@
 --     not yet done
 
 
-c-iso-l : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' :  Equalizer A {c'} f g ) 
+c-iso-l : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' :  Equalizer A {c'} f g )
       →  ( keqa : Equalizer A {c} (A [ f o e eqa' ])  (A [ g o e eqa' ]) )
-      → Hom A c c'  
+      → Hom A c c'
 c-iso-l  {c} {c'} eqa eqa' keqa = e keqa
 
-c-iso-r : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' :  Equalizer A {c'} f g ) 
+c-iso-r : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' :  Equalizer A {c'} f g )
       →  ( keqa : Equalizer A {c} (A [ f o e eqa' ])  (A [ g o e eqa' ]) )
-      →  Hom A c' c   
-c-iso-r  {c} {c'} eqa eqa' keqa = let open ≈-Reasoning (A) in k keqa (id1 A c') ( f1=g1 (fe=ge eqa') (id1 A c') )
+      →  Hom A c' c
+c-iso-r  {c} {c'} eqa eqa' keqa = k keqa (id1 A c') ( f1=g1 (fe=ge eqa') (id1 A c') )
 
 
      --             e(eqa')       f
-     --         c'----------> a ------->b               f e j = g e j 
-     --         ^                 g     
-     --         |k      h                   
+     --         c'----------> a ------->b               f e j = g e j
+     --         ^                 g
+     --         |k      h
      --         |                                        h =   e(eqaj) o k     jhek = jh (uniqueness)
-     --         |         
-     --         c     j o (k (eqa ef ef) j ) = id c      h =   e(eqaj) 
-     --          
-     --                 h j e f = h j e g    →    h =  'j e f 
+     --         |
+     --         c     j o (k (eqa ef ef) j ) = id c      h =   e(eqaj)
+     --
+     --                 h j e f = h j e g    →    h =  'j e f
      --                                           h =   j e f   -> j = j'
      --
 
---    e k e k = 1c                   e e = e -> e = 1c?
---    k e k e = 1c' ?
-
-
-c-iso : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' :  Equalizer A {c'} f g ) 
+c-iso : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' :  Equalizer A {c'} f g )
       →  ( keqa : Equalizer A {c} (A [ f o e eqa' ])  (A [ g o e eqa' ]) )
       →  A [ A [ c-iso-l eqa eqa' keqa o c-iso-r eqa eqa' keqa ]  ≈ id1 A c' ]
 c-iso {c} {c'} {a} {b} {f} {g} eqa eqa' keqa = let open ≈-Reasoning (A) in begin
@@ -427,52 +423,33 @@
                  id1 A c'

 
-
--- Equalizer is unique up to iso
-
---
---        
---           e eqa f g        f
---         c ----------> a ------->b
---
-equalizer-iso-eq' : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' :  Equalizer A {c'} f g ) 
-      { h : Hom A a c } →  A [ A [ h o e eqa ] ≈ id1 A c ] → A [ A [ k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e  eqa ) (fe=ge eqa)  ] ≈ id1 A c ]
-equalizer-iso-eq' {c} {c'} {f} {g} eqa eqa' {h} rev =  let open ≈-Reasoning (A) in
-             begin
-                 k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e  eqa ) (fe=ge eqa)
-             ≈↑⟨ idL ⟩
-                 (id1 A c)  o ( k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e  eqa ) (fe=ge eqa) )
-             ≈↑⟨ car rev  ⟩
-                 ( h o e eqa )  o ( k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e  eqa ) (fe=ge eqa) )
-             ≈↑⟨ assoc ⟩
-                  h o ( e eqa   o ( k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e  eqa ) (fe=ge eqa) ) )
-             ≈⟨ cdr assoc ⟩
-                  h o (( e eqa   o  k eqa (e eqa' ) (fe=ge eqa')) o k eqa' (e  eqa ) (fe=ge eqa)   )
-             ≈⟨ cdr ( car (ek=h eqa) )  ⟩
-                  h o ( e eqa'  o k eqa' (e  eqa ) (fe=ge eqa)   )
-             ≈⟨ cdr (ek=h eqa' ) ⟩
-                  h o  e eqa
-             ≈⟨  rev  ⟩
-                 id1 A c
-             ∎
-
-equalizer-iso-eq : { c c' a b : Obj A } {f g : Hom A a b } → ( eqa : Equalizer A {c} f g) → ( eqa' :  Equalizer A {c'} f g ) 
-       → A [ A [ k eqa (e eqa' ) (fe=ge eqa') o k eqa' (e  eqa ) (fe=ge eqa)  ] ≈ id1 A c ]
-equalizer-iso-eq {c} {c'} {f} {g} eqa eqa' = equalizer-iso-eq' {c} {c'} {f} {g} eqa eqa' {{!!}}  {!!}
-
+-- To prove  c-iso-r eqa eqa' keqa o c-iso-l eqa eqa' keqa
 -- ke = e' k'e' = e  → k k' = 1 , k' k = 1
 --     ke  = e'
 --     k'ke  = k'e' = e   kk' = 1
 --     x e = e -> x = id?
 
+-----
+--    reverse arrow of e (eqa f g)
+--
+--           e eqa f g        f
+--         c ----------> a ------->b
+--           <---------
+--    
+reverse-e : {a b c : Obj A} (f g : Hom A a b)  →
+         ( eqa : {a b c : Obj A} → (f g : Hom A a b)  → Equalizer A {c} f g ) → 
+             A [ A [  k (eqa (A [ f o e (eqa f g) ]) (A [ g o e (eqa f g) ]) ) (id1 A a) 
+                  (f1=g1 (fe=ge (eqa f g) ) (id1 A a) ) o e (eqa f g ) ] ≈ id1 A c ]
+reverse-e {a} {b} {c} f g eqa = ?
+
 ----
 --
 -- An equalizer satisfies Burroni equations
 --
---    b4 is not yet done 
+--    b4 is not yet done
 ----
 
-lemma-equ1 : {a b c : Obj A} (f g : Hom A a b)  → 
+lemma-equ1 : {a b c : Obj A} (f g : Hom A a b)  →
          ( {a b c : Obj A} → (f g : Hom A a b)  → Equalizer A {c} f g ) → Burroni A {c} f g
 lemma-equ1  {a} {b} {c} f g eqa = record {
       α = λ f g →  e (eqa f g ) ; -- Hom A c a
@@ -481,30 +458,30 @@
       b1 = fe=ge (eqa f g) ;
       b2 = lemma-b2 ;
       b3 = lemma-b3 ;
-      b4 = lemma-b4 
+      b4 = lemma-b4
  } where
      --
      --           e eqa f g        f
      --         c ----------> a ------->b
-     --         ^                  g     
-     --         |                           
+     --         ^                  g
+     --         |
      --         |k₁  = e eqa (f o (e (eqa f g))) (g o (e (eqa f g))))
-     --         |        
+     --         |
      --         d
-     --         
-     --         
+     --
+     --
      --               e  o id1 ≈  e  →   k e  ≈ id
 
      lemma-equ2 : {a b : Obj A} (f : Hom A a b)  → A [ A [ f o id1 A a ]  ≈ A [ f o id1 A a ] ]
      lemma-equ2 f =   let open ≈-Reasoning (A) in refl-hom
      lemma-b3 : A [ A [ e (eqa f f) o k (eqa f f) (id1 A a) (lemma-equ2 f) ] ≈ id1 A a ]
      lemma-b3 = let open ≈-Reasoning (A) in
-             begin  
+             begin
                   e (eqa f f) o k (eqa f f) (id1 A a) (lemma-equ2 f)
              ≈⟨ ek=h (eqa f f )  ⟩
                   id1 A a

-     lemma-equ4 :  {a b c d : Obj A}  → (f : Hom A a b) → (g : Hom A a b ) → (h : Hom A d a ) → 
+     lemma-equ4 :  {a b c d : Obj A}  → (f : Hom A a b) → (g : Hom A a b ) → (h : Hom A d a ) →
                       A [ A [ f o A [ h o e (eqa (A [ f o h ]) (A [ g o h ])) ] ] ≈ A [ g o A [ h o e (eqa (A [ f o h ]) (A [ g o h ])) ] ] ]
      lemma-equ4 {a} {b} {c} {d} f g h  = let open ≈-Reasoning (A) in
              begin
@@ -516,40 +493,35 @@
              ≈↑⟨ assoc ⟩
                    g o ( h o e (eqa (f o h) ( g o h )))

-     lemma-b2 :  {d : Obj A} {h : Hom A d a} → A [ 
+     lemma-b2 :  {d : Obj A} {h : Hom A d a} → A [
                       A [ e (eqa f g) o k (eqa f g) (A [ h o e (eqa (A [ f o h ]) (A [ g o h ])) ]) (lemma-equ4 {a} {b} {c} f g h) ]
                     ≈ A [ h o e (eqa (A [ f o h ]) (A [ g o h ])) ] ]
      lemma-b2 {d} {h} = let open ≈-Reasoning (A) in
              begin
-                    e (eqa f g) o k (eqa f g) (h o e (eqa (f o h) (g o h))) (lemma-equ4 {a} {b} {c} f g h) 
+                    e (eqa f g) o k (eqa f g) (h o e (eqa (f o h) (g o h))) (lemma-equ4 {a} {b} {c} f g h)
              ≈⟨ ek=h (eqa f g)  ⟩
                     h o e (eqa (f o h ) ( g o h ))

-     lemma-b4 : {d : Obj A} {j : Hom A d c} → A [ 
+
+     -------             α(f,g)j id d                                   =                  α(f,g)j
+     -------             α(f,g)j id d                                   =                  α(f,g)j
+     -------             α(f,g)j α(fα(f,g)j,fα(f,g)j) δ(fα(f,g)j)       =                  α(f,g)j
+     ------                    fα = gα
+     -------             α(f,g)j α(fα(f,g)j,gα(f,g)j) δ(fα(f,g)j)       =                  α(f,g)j
+     -------                    α(f,g) γ(f,g,α(f,g)j) δ(fα(f,g)j)       =                  α(f,g)j
+     -------                           γ(f,g,α(f,g)j) δ(fα(f,g)j)       =                        j
+
+     lemma-b4 : {d : Obj A} {j : Hom A d c} → A [
           A [ k (eqa f g) (A [ A [ e (eqa f g) o j ] o e (eqa (A [ f o A [ e (eqa f g) o j ] ]) (A [ g o A [ e (eqa f g) o j ] ])) ])
-                     (lemma-equ4 {a} {b} {c} f g (A [ e (eqa f g) o j ])) o 
+                     (lemma-equ4 {a} {b} {c} f g (A [ e (eqa f g) o j ])) o
               k (eqa (A [ f o A [ e (eqa f g) o j ] ]) (A [ f o A [ e (eqa f g) o j ] ])) (id1 A d) (lemma-equ2 (A [ f o A [ e (eqa f g) o j ] ])) ]
               ≈ j ]
-     lemma-b4 {d} {j} = let open ≈-Reasoning (A) in 
+     lemma-b4 {d} {j} = let open ≈-Reasoning (A) in
              begin
                      ( k (eqa f g) (( ( e (eqa f g) o j ) o e (eqa (( f o ( e (eqa f g) o j ) )) (( g o ( e (eqa f g) o j ) ))) ))
                             (lemma-equ4 {a} {b} {c} f g (( e (eqa f g) o j ))) o
                        k (eqa (( f o ( e (eqa f g) o j ) )) (( f o ( e (eqa f g) o j ) ))) (id1 A d) (lemma-equ2 (( f o ( e (eqa f g) o j ) ))) )
-             ≈⟨ car ( uniqueness (eqa f g) ( begin
-                   e (eqa f g) o  j 
-                ≈⟨ {!!} ⟩
-                   (e (eqa f g) o j) o e (eqa (f o e (eqa f g) o j) (g o e (eqa f g) o j))
-             ∎ ))  ⟩
-                    j o  k (eqa (( f o ( e (eqa f g) o j ) )) (( f o ( e (eqa f g) o j ) ))) (id1 A d) (lemma-equ2 (( f o ( e (eqa f g) o j ) ))) 
-             ≈⟨ cdr ( uniqueness (eqa (( f o ( e (eqa f g) o j ) )) (( f o ( e (eqa f g) o j ) ))) ( begin
-                  e (eqa (f o e (eqa f g) o j) (f o e (eqa f g) o j)) o id1 A d
-                ≈⟨ idR ⟩
-                  e (eqa (f o e (eqa f g) o j) (f o e (eqa f g) o j)) 
-                ≈⟨ {!!} ⟩
-                  id1 A d
-             ∎ ))  ⟩
-                    j  o  id1 A d
-             ≈⟨ idR ⟩
+             ≈⟨ {!!} ⟩
                     j