diff equalizer.agda @ 233:4bba19bc71be

e is now explict parameter
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 08 Sep 2013 01:37:24 +0900
parents b0fe61882014
children c02287d3d2dc
line wrap: on
line diff
--- a/equalizer.agda	Sat Sep 07 23:29:13 2013 +0900
+++ b/equalizer.agda	Sun Sep 08 01:37:24 2013 +0900
@@ -20,9 +20,8 @@
 open import HomReasoning
 open import cat-utility
 
-record Equalizer { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ )  {c a b : Obj A} (f g : Hom A a b)  : Set  (ℓ ⊔ (c₁ ⊔ c₂)) where
+record Equalizer { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ )  {c a b : Obj A} (e : Hom A c a) (f g : Hom A a b)  : Set  (ℓ ⊔ (c₁ ⊔ c₂)) where
    field
-      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 ]
@@ -75,41 +74,6 @@

 
 --
---  For e f f, we need e eqa = id1 A a, but it is equal to say k eqa (id a) is id
---
---     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) →
-      A [ e eqa ≈ 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))
-             ≈⟨ uniqueness eqa ( begin
-                    e eqa o id1 A a
-                 ≈⟨ idR ⟩
-                    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 ] ) →
-      A [ k eqa (id1 A a) (f1=g1 eq (id1 A a)) ≈ 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
-             ≈↑⟨ idR ⟩
-                   e eqa  o id1 A a
-             ≈↑⟨ cdr k=1 ⟩
-                   e eqa  o k eqa (id1 A a) (f1=g1 eq (id1 A a))
-             ≈⟨ ek=h eqa ⟩
-                   id1 A a
-             ∎
-
---
 --
 --   An isomorphic element c' of c makes another equalizer
 --
@@ -121,282 +85,72 @@
 --        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+iso  {a} {b} {c} {c'} {f} {g} eqa h-1 h h-1-id h-id =  record {
-      e = A [  e eqa o h-1 ] ;
+equalizer+iso : {a b c c' : Obj A } {f g : Hom A a b } {e : Hom A c a } { e' : Hom A c' a }
+                 ( fe=ge' : A [ A [ f o e' ] ≈ A [ g o e' ] ] )
+                ( eqa : Equalizer A e f g ) → (h-1 : Hom A c' c ) → (h : Hom A c c' ) →
+                A [ A [ e o h-1 ]  ≈ e' ] → A [ A [ e'  o h ]  ≈ e ]
+           → Equalizer A e' f g
+equalizer+iso  {a} {b} {c} {c'} {f} {g} {e} {e'} fe=ge' eqa h-1 h e→e' e'→e  =  record {
       fe=ge = fe=ge1 ;
       k = λ j eq → A [ h o k eqa j eq ] ;
       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 :  A [ A [ f o e' ]  ≈ A [ g o e' ] ]
       fe=ge1 = let open ≈-Reasoning (A) in
              begin
-                  f o ( e eqa o h-1  )
+                  f o e'
+             ≈↑⟨ cdr e→e' ⟩
+                  f o ( e o h-1 )
              ≈⟨ assoc  ⟩
-                  (f o e eqa ) o h-1
+                  (f o  e ) o h-1 
              ≈⟨ car (fe=ge eqa) ⟩
-                  (g o e eqa ) o h-1
+                  (g o  e ) o h-1 
              ≈↑⟨ assoc ⟩
-                  g o ( e eqa  o h-1 )
+                  g o ( e o h-1 )
+             ≈⟨ cdr e→e' ⟩
+                  g o e'

       ek=h1 :   {d : Obj A} {j : Hom A d a} {eq : A [ A [ f o j ] ≈ A [ g o j ] ]} →
-                A [ A [ A [ e eqa o h-1 ] o A [ h o k eqa j eq ] ] ≈ j ]
+                A [ A [ e' o A [ h o k eqa j eq ] ] ≈ j ]
       ek=h1 {d} {j} {eq} =  let open ≈-Reasoning (A) in
              begin
-                   (e eqa o h-1 ) o ( h o k eqa j eq )
-             ≈↑⟨ assoc ⟩
-                   e eqa o ( h-1  o ( h o k eqa j eq ))
-             ≈⟨ cdr assoc ⟩
-                   e eqa o (( h-1  o  h ) o k eqa j eq )
-             ≈⟨ cdr (car (h-1-id )) ⟩
-                   e eqa o (id1 A c o k eqa j eq )
-             ≈⟨ cdr idL ⟩
-                   e eqa o (k eqa j eq )
+                   e' o ( h o k eqa j eq )
+             ≈⟨ assoc ⟩
+                  ( e' o h)  o k eqa j eq 
+             ≈⟨ car e'→e ⟩
+                  e  o k eqa j eq 
              ≈⟨ ek=h eqa ⟩
                    j

       uniqueness1 : {d : Obj A} {h' : Hom A d a} {eq : A [ A [ f o h' ] ≈ A [ g o h' ] ]} {j : Hom A d c'} →
-                A [ A [ A [ e eqa o h-1 ] o j ] ≈ h' ] →
+                A [ A [ e' o j ] ≈ h' ] →
                 A [ A [ h o k eqa h' eq ] ≈ j ]
       uniqueness1 {d} {h'} {eq} {j} ej=h  =  let open ≈-Reasoning (A) in
              begin
                    h o k eqa h' eq
-             ≈⟨ cdr (uniqueness eqa (
-                 begin
-                    e eqa  o ( h-1 o j )
-                 ≈⟨ assoc ⟩
-                    (e eqa  o  h-1 ) o j
-                 ≈⟨ ej=h ⟩
-                    h'
-                 ∎
-             )) ⟩
-                   h  o ( h-1 o j )
-             ≈⟨ assoc  ⟩
-                   (h  o  h-1 ) o j
-             ≈⟨ car h-id ⟩
-                   id1 A c' o j
-             ≈⟨ idL ⟩
+             ≈⟨ {!!} ⟩
                    j

 
---  If we have equalizer f g, e fh gh is also equalizer if we have isomorphic pair (same as above)
---
---           e eqa f g        f
---         c ----------> a ------->b
---         ^ ---> d --->
---         |  i      h
---        j|    k' (d' → d)
---         |    k  (d' → 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+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 ;
-      uniqueness = uniqueness1
-   } where
-      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 ] ] ]
-      fhj=ghj j eq' = let open ≈-Reasoning (A) in
-             begin
-                  f o ( h o j  )
-             ≈⟨ assoc  ⟩
-                  (f o h ) o j
-             ≈⟨ eq' ⟩
-                  (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
-             begin
-                   ( f o h ) o i
-             ≈↑⟨ assoc  ⟩
-                   f o (h  o i )
-             ≈⟨ cdr eq ⟩
-                   f o (e eqa)
-             ≈⟨ fe=ge eqa ⟩
-                   g o (e eqa)
-             ≈↑⟨ cdr eq ⟩
-                   g o (h  o i )
-             ≈⟨ assoc ⟩
-                   ( g o h ) o i
-             ∎
-      ek=h1 :  {d' : Obj A} {k' : Hom A d' d} {eq' : A [ A [ A [ f o h ] o k' ] ≈ A [ A [ g o h ] o k' ] ]} →
-                A [ A [ i o k eqa (A [ h o k' ]) (fhj=ghj k' eq') ] ≈ k' ]
-      ek=h1 {d'} {k'} {eq'} = let open ≈-Reasoning (A) in
-             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'))
-             ≈↑⟨ car h-1-id ⟩
-                   ( 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  ⟩
-                    h-1 o ( (h  o  i ) o k eqa (h o k' ) (fhj=ghj k' eq'))
-             ≈⟨ cdr (car eq ) ⟩
-                    h-1 o ( (e eqa) o k eqa (h o k' ) (fhj=ghj k' eq'))
-             ≈⟨ cdr (ek=h eqa)  ⟩
-                    h-1 o ( h  o k' )
-             ≈⟨ assoc  ⟩
-                    ( h-1 o  h ) o k'
-             ≈⟨ car h-1-id ⟩
-                    id1 A d o k'
-             ≈⟨ idL ⟩
-                   k'
-             ∎
-      uniqueness1 :  {d' : Obj A} {h' : Hom A d' d} {eq' : A [ A [ A [ f o h ] o h' ] ≈ A [ A [ g o h ] o h' ] ]} {k' : Hom A d' c} →
-                A [ A [ i o k' ] ≈ h' ] → A [ k eqa (A [ h o h' ]) (fhj=ghj h' eq') ≈ k' ]
-      uniqueness1 {d'} {h'} {eq'} {k'} ik=h = let open ≈-Reasoning (A) in
-             begin
-                   k eqa (A [ h o h' ])  (fhj=ghj h' eq')
-             ≈⟨ uniqueness eqa ( begin
-                    e eqa o k'
-                ≈↑⟨ car eq  ⟩
-                    (h o i ) o k'
-                ≈↑⟨ assoc   ⟩
-                    h o (i  o k')
-                ≈⟨ cdr ik=h ⟩
-                     h o h'
-             ∎ ) ⟩
-                   k'
-             ∎
-
---  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-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 ] )
-h+equalizer  {a} {b} {c} {d} {f} {g} eqa h h-1 h-1-id =  record {
-      e = e eqa  ;
-      fe=ge = fe=ge1 ;
-      k = λ j eq' → k eqa j (fj=gj j eq') ;
-      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 ] ]
-      fj=gj j eq  = let open ≈-Reasoning (A) in
-             begin
-                f o j
-             ≈↑⟨ idL ⟩
-                id1 A b  o ( f o j )
-             ≈↑⟨ car h-1-id  ⟩
-                (h-1 o h )  o ( f o j )
-             ≈↑⟨ assoc  ⟩
-                h-1 o (h  o ( f o j ))
-             ≈⟨ cdr assoc  ⟩
-                h-1 o ((h  o  f) o j )
-             ≈⟨ cdr eq ⟩
-                h-1 o ((h  o  g) o j )
-             ≈↑⟨ cdr assoc  ⟩
-                h-1 o (h  o ( g o j ))
-             ≈⟨ assoc ⟩
-                (h-1 o h)  o ( g o j )
-             ≈⟨ car h-1-id  ⟩
-                id1 A b  o ( g o j )
-             ≈⟨ idL ⟩
-                g o j
-             ∎
-      fe=ge1 :  A [ A [ A [ h o f ] o e eqa ] ≈ A [ A [ h o g ] o e eqa ] ]
-      fe=ge1 =  let open ≈-Reasoning (A) in
-             begin
-                ( h o f ) o e eqa
-             ≈↑⟨ assoc  ⟩
-                h o (f  o e eqa )
-             ≈⟨ cdr (fe=ge eqa)  ⟩
-                h o (g  o e eqa )
-             ≈⟨ assoc ⟩
-                ( 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 ]
-      ek=h1 {d₁} {j} {eq}  = ek=h eqa
-      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} {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 ;
-      uniqueness = uniqueness1
-   } where
-      i = id1 A c
-      h = e eqa
-      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 ] ] ]
-      fhj=ghj j eq' = let open ≈-Reasoning (A) in
-             begin
-                  f o ( h o j  )
-             ≈⟨ assoc  ⟩
-                  (f o h ) o j
-             ≈⟨ eq' ⟩
-                  (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
-             begin
-                   ( f o h ) o i
-             ≈⟨ car ( fe=ge eqa ) ⟩
-                   ( g o h ) o i
-             ∎
-      ek=h1 :  {d' : Obj A} {k' : Hom A d' c} {eq' : A [ A [ A [ f o h ] o k' ] ≈ A [ A [ g o h ] o k' ] ]} →
-                A [ A [ i o k eqa (A [ h o k' ]) (fhj=ghj k' eq') ] ≈ k' ]
-      ek=h1 {d'} {k'} {eq'} = let open ≈-Reasoning (A) in
-             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  ⟩
-                   k eqa (e eqa o k' ) (fhj=ghj k' eq')
-             ≈⟨ uniqueness eqa refl-hom ⟩
-                   k'
-             ∎
-      uniqueness1 :  {d' : Obj A} {h' : Hom A d' c} {eq' : A [ A [ A [ f o h ] o h' ] ≈ A [ A [ g o h ] o h' ] ]} {k' : Hom A d' c} →
-                A [ A [ i o k' ] ≈ h' ] → A [ k eqa (A [ h o h' ]) (fhj=ghj h' eq') ≈ k' ]
-      uniqueness1 {d'} {h'} {eq'} {k'} ik=h = let open ≈-Reasoning (A) in
-             begin
-                   k eqa ( e eqa o h')  (fhj=ghj h' eq')
-             ≈⟨ uniqueness eqa ( begin
-                    e eqa o k'
-                ≈↑⟨ cdr idL ⟩
-                    e eqa o (id1 A c o k' )
-                ≈⟨ cdr ik=h ⟩
-                    e eqa o h'
-             ∎ ) ⟩
-                   k'
-             ∎
 
 --
 -- If we have two equalizers on c and c', there are isomorphic pair h, h'
 --
 --     h : c → c'  h' : c' → c
---             h h' = 1 and h' h = 1
---     not yet done
+--     e' = h   o e
+--     e  = h'  o e'
 
 
-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' ]) )
+c-iso-l : { c c' a b : Obj A } {f g : Hom A a b } →  {e : Hom A c a } { e' : Hom A c' a }
+       ( eqa : Equalizer A e f g) → ( eqa' :  Equalizer A e' f g )
+      →  ( keqa : Equalizer A (k eqa' e {!!} ) (A [ f o e' ])  (A [ g o e' ]) )
       → Hom A c c'
-c-iso-l  {c} {c'} eqa eqa' keqa = e keqa
+c-iso-l  {c} {c'} eqa eqa' eff = {!!}
 
-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' ]) )
+c-iso-r : { c c' a b : Obj A } {f g : Hom A a b } {e : Hom A c a } {e' : Hom A c' a} → ( eqa : Equalizer A e f g) → ( eqa' :  Equalizer A e' f g )
+      →  ( keqa : Equalizer A (k eqa' e {!!} ) (A [ f o e' ])  (A [ g o e' ]) )
       →  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') )
 
@@ -413,56 +167,15 @@
      --                                           h =   j e f   -> j = j'
      --
 
-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' ]) )
+c-iso : { c c' a b : Obj A } {f g : Hom A a b } → {e : Hom A c a } {e' : Hom A c' a} ( eqa : Equalizer A e f g) → ( eqa' :  Equalizer A e' f g )
+      →  ( keqa : Equalizer A (k eqa' e {!!} ) (A [ f o e' ])  (A [ g o e' ]) )
       →  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
                  c-iso-l eqa eqa' keqa o c-iso-r eqa eqa' keqa
-              ≈⟨ ek=h keqa ⟩
+              ≈⟨ {!!} ⟩
                  id1 A c'

 
--- 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
---           <---------
---             k (eff) id1a
---                                (e eqa f g)  o k (eff) id1 A a = id1 A a
---
---      eqa (f (e eqa f g) ) (g (e eqa f g) )
---      e (eqa (f (e eqa f g) ) (g (e eqa f g) ) ) = k (eff) id1 a
---
---      (e α) o k α (id1 A c)  = id1 A c
---      c       a           c
---      ((k (eff) id1a ))  o k α e = id1 A c
-
-
-reverse-e' : {a b c : Obj A} (f g : Hom A a b)  → (h i : Hom A c b ) →
-         ( eqa : {a b c : Obj A} → (f g : Hom A a b)  → Equalizer A {c} f g ) → 
-                   A [ k (eqa f f ) (id1 A a ) ( f1=f1 f ) ≈ (e (eqa (A [ f o e (eqa f g) ]) (A [ g o e (eqa f g) ]))) ] 
-reverse-e' = ?
-
-reverse-e : {a b c : Obj A} (f g : Hom A a b)  → (h i : Hom A c b ) →
-         ( eqa : {a b c : Obj A} → (f g : Hom A a b)  → Equalizer A {c} f g ) → 
-             A [ 
-   A [ k (eqa f f ) (id1 A a ) ( f1=f1 f ) o k (eqa ( A [ f  o (e (eqa f g)) ] )  (A [ g  o (e (eqa f g )) ] ))  (id1 A c) (f1=g1 (fe=ge (eqa f g)) (id1 A c))   ]
-             ≈ id1 A c ]
-reverse-e {a} {b} {c} f g h i eqa =  let open ≈-Reasoning (A) in
-             begin
-                  k (eqa f f ) (id1 A a ) (f1=f1 f) o k (eqa ( A [ f  o (e (eqa f g)) ] )  (A [ g  o (e (eqa f g )) ] ))  (id1 A c) {!!}
-             ≈⟨ car {!!} ⟩
-                  e (eqa ( A [ f  o (e (eqa f g)) ] )  (A [ g  o (e (eqa f g )) ] ))  o k (eqa ( A [ f  o (e (eqa f g)) ] )  (A [ g  o (e (eqa f g )) ] ))  (id1 A c) (f1=g1 (fe=ge (eqa f g)) (id1 A c))
-             ≈⟨  ek=h   (eqa ( A [ f  o (e (eqa f g)) ] )  (A [ g  o (e (eqa f g )) ] ))   ⟩
-                  id1 A c
-             ∎
 
 ----
 --
@@ -472,10 +185,11 @@
 ----
 
 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
+         ( eqa : {a b c : Obj A} → (f g : Hom A a b)  → {e : Hom A c a } { fe=ge1 : A [ A [ f o e ] ≈ A [ g o e ] ] } → Equalizer A e 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
-      γ = λ {a} {b} {c} {d} f g h → k (eqa f g ) {d} ( A [ h  o (e ( eqa (A [ f  o  h ] ) (A [ g o h ] ))) ] ) (lemma-equ4 {a} {b} {c} {d} f g h ) ;  -- Hom A c d
+      α = λ f g →  equalizer (eqa f g ) ; -- Hom A c a
+      γ = λ {a} {b} {c} {d} f g h → k (eqa f g ) {d} ( A [ h  o (equalizer ( eqa (A [ f  o  h ] ) (A [ g o h ] ))) ] ) (lemma-equ4 {a} {b} {c} {d} f g h ) ;  -- Hom A c d
       δ =  λ {a} f → k (eqa f f) (id1 A a)  (lemma-equ2 f); -- Hom A a c
       b1 = fe=ge (eqa f g) ;
       b2 = lemma-b2 ;
@@ -496,33 +210,33 @@
 
      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 : A [ A [ equalizer (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
-                  e (eqa f f) o k (eqa f f) (id1 A a) (lemma-equ2 f)
+                  equalizer (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 ) →
-                      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 ])) ] ] ]
+                      A [ A [ f o A [ h o equalizer (eqa (A [ f o h ]) (A [ g o h ])) ] ] ≈ A [ g o A [ h o equalizer (eqa (A [ f o h ]) (A [ g o h ])) ] ] ]
      lemma-equ4 {a} {b} {c} {d} f g h  = let open ≈-Reasoning (A) in
              begin
-                   f o ( h o e (eqa (f o h) ( g o h )))
+                   f o ( h o equalizer (eqa (f o h) ( g o h )))
              ≈⟨ assoc ⟩
-                   (f o h) o e (eqa (f o h) ( g o h ))
+                   (f o h) o equalizer (eqa (f o h) ( g o h ))
              ≈⟨ fe=ge (eqa (A [ f o h ]) (A [ g o h ])) ⟩
-                   (g o h) o e (eqa (f o h) ( g o h ))
+                   (g o h) o equalizer (eqa (f o h) ( g o h ))
              ≈↑⟨ assoc ⟩
-                   g o ( h o e (eqa (f o h) ( g o h )))
+                   g o ( h o equalizer (eqa (f o h) ( g o h )))

      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 ])) ] ]
+                      A [ equalizer (eqa f g) o k (eqa f g) (A [ h o equalizer (eqa (A [ f o h ]) (A [ g o h ])) ]) (lemma-equ4 {a} {b} {c} f g h) ]
+                    ≈ A [ h o equalizer (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)
+                    equalizer (eqa f g) o k (eqa f g) (h o equalizer (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 ))
+                    h o equalizer (eqa (f o h ) ( g o h ))

 
      -------             α(f,g)j id d                                   =                  α(f,g)j
@@ -534,15 +248,15 @@
      -------                           γ(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
-              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 ] ])) ]
+          A [ k (eqa f g) (A [ A [ equalizer (eqa f g) o j ] o equalizer (eqa (A [ f o A [ equalizer (eqa f g) o j ] ]) (A [ g o A [ equalizer (eqa f g) o j ] ])) ])
+                     (lemma-equ4 {a} {b} {c} f g (A [ equalizer (eqa f g) o j ])) o
+              k (eqa (A [ f o A [ equalizer (eqa f g) o j ] ]) (A [ f o A [ equalizer (eqa f g) o j ] ])) (id1 A d) (lemma-equ2 (A [ f o A [ equalizer (eqa f g) o j ] ])) ]
               ≈ j ]
      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 ) ))) )
+                     ( k (eqa f g) (( ( equalizer (eqa f g) o j ) o equalizer (eqa (( f o ( equalizer (eqa f g) o j ) )) (( g o ( equalizer (eqa f g) o j ) ))) ))
+                            (lemma-equ4 {a} {b} {c} f g (( equalizer (eqa f g) o j ))) o
+                       k (eqa (( f o ( equalizer (eqa f g) o j ) )) (( f o ( equalizer (eqa f g) o j ) ))) (id1 A d) (lemma-equ2 (( f o ( equalizer (eqa f g) o j ) ))) )
              ≈⟨ {!!} ⟩
                     j