# HG changeset patch # User Shinji KONO # Date 1616595322 -32400 # Node ID 4b517d46e98769513ca3f6ad4d465109d27352dd # Parent 90224a662c4ea15cd614218f4263011d045dd0de ... diff -r 90224a662c4e -r 4b517d46e987 src/CCC.agda --- a/src/CCC.agda Tue Mar 23 17:58:57 2021 +0900 +++ b/src/CCC.agda Wed Mar 24 23:15:22 2021 +0900 @@ -186,7 +186,7 @@ -- pull back on -- -- iso ○ b --- e ⇐====⇒ b -----------→ 1 +-- e ⇐====⇒ b -----------→ 1 m ∙ f ≈ m ∙ g → f ≈ g -- | | | -- | m | | ⊤ -- | ↓ char m ↓ Ker h = Equalizer (char m mono) (⊤ ∙ ○ a ) @@ -210,54 +210,12 @@ field char-uniqueness : {a b : Obj A } {h : Hom A a Ω} (m : Hom A b a) → (mono : Mono A m) → A [ char (equalizer (Ker h)) (record { isMono = λ f g → monic (Ker h)}) ≈ h ] - ker-iso : {a b : Obj A} → (m : Hom A b a) → (mono : Mono A m) → IsoL A m (equalizer (Ker ( char m mono ))) + ker-m : {a b : Obj A} → (m : Hom A b a ) → (mono : Mono A m) → IsEqualizer A m (char m mono) (A [ ⊤ o (CCC.○ c a) ]) ker : {a : Obj A} → ( h : Hom A a Ω ) → Hom A ( equalizer-c (Ker h) ) a ker h = equalizer (Ker h) - mm : {a b : Obj A} → (m : Hom A b a) → (mono : Mono A m ) → A [ A [ equalizer (Ker (char m mono)) o Iso.≅→ (IsoL.iso-L (ker-iso m mono)) ] ≈ m ] - mm m mono = IsoL.L≈iso (ker-iso m mono) - fe=ge : {a b : Obj A} → (m : Hom A b a) → (mono : Mono A m ) → A [ A [ char m mono o m ] ≈ A [ A [ ⊤ o CCC.○ c a ] o m ] ] - fe=ge {a} {b} m mono = begin - char m mono o m ≈↑⟨ cdr (mm m mono) ⟩ - char m mono o (equalizer (Ker (char m mono)) o Iso.≅→ (IsoL.iso-L (ker-iso m mono))) ≈⟨ assoc ⟩ - (char m mono o equalizer (Ker (char m mono))) o Iso.≅→ (IsoL.iso-L (ker-iso m mono)) ≈⟨ car ( IsEqualizer.fe=ge (Equalizer.isEqualizer (Ker (char m mono))) ) ⟩ - (( ⊤ o CCC.○ c a) o equalizer (Ker (char m mono)) ) o Iso.≅→ (IsoL.iso-L (ker-iso m mono)) ≈↑⟨ assoc ⟩ - ( ⊤ o CCC.○ c a) o (equalizer (Ker (char m mono)) o Iso.≅→ (IsoL.iso-L (ker-iso m mono))) ≈⟨ cdr (mm m mono) ⟩ - ( ⊤ o CCC.○ c a) o m ∎ where open ≈-Reasoning A - ek=h : {a b : Obj A} → (m : Hom A b a) → (mono : Mono A m ) → {d : Obj A} {h : Hom A d a} - {eq : A [ A [ char m mono o h ] ≈ A [ A [ ⊤ o CCC.○ c a ] o h ] ]} → - A [ A [ m o (A Category.o Iso.≅← (IsoL.iso-L (ker-iso m mono))) (IsEqualizer.k (isEqualizer (Ker (char m mono))) h eq) ] ≈ h ] - ek=h {a} {b} m mono {d} {h} {eq} = begin - m o ( Iso.≅← (IsoL.iso-L (ker-iso m mono)) o IsEqualizer.k (Equalizer.isEqualizer (Ker (char m mono))) h eq ) ≈↑⟨ car (mm m mono) ⟩ - (equalizer (Ker (char m mono)) o Iso.≅→ (IsoL.iso-L (ker-iso m mono))) o ( Iso.≅← (IsoL.iso-L (ker-iso m mono)) o IsEqualizer.k (Equalizer.isEqualizer (Ker (char m mono))) h eq ) ≈↑⟨ assoc ⟩ - _ o (Iso.≅→ (IsoL.iso-L (ker-iso m mono)) o ( Iso.≅← (IsoL.iso-L (ker-iso m mono)) o IsEqualizer.k (Equalizer.isEqualizer (Ker (char m mono))) h eq )) ≈⟨ cdr assoc ⟩ - equalizer (Ker (char m mono)) o ((Iso.≅→ (IsoL.iso-L (ker-iso m mono)) o Iso.≅← (IsoL.iso-L (ker-iso m mono))) o IsEqualizer.k (Equalizer.isEqualizer (Ker (char m mono))) h eq ) ≈⟨ cdr (car (Iso.iso← (IsoL.iso-L (ker-iso m mono)))) ⟩ - equalizer (Ker (char m mono)) o (id1 A _ o IsEqualizer.k (Equalizer.isEqualizer (Ker (char m mono))) h eq ) ≈⟨ cdr idL ⟩ - equalizer (Ker (char m mono)) o IsEqualizer.k (Equalizer.isEqualizer (Ker (char m mono))) h eq ≈⟨ IsEqualizer.ek=h (isEqualizer (Ker (char m mono))) ⟩ - h ∎ where open ≈-Reasoning A - uniqueness : {a b : Obj A} → (m : Hom A b a) → (mono : Mono A m ) → {d : Obj A} {h : Hom A d a} - {eq : A [ A [ char m mono o h ] ≈ A [ A [ ⊤ o CCC.○ c a ] o h ] ]} - {k' : Hom A d b} → A [ A [ m o k' ] ≈ h ] - → A [ (A Category.o Iso.≅← (IsoL.iso-L (ker-iso m mono))) (IsEqualizer.k (isEqualizer (Ker (char m mono))) h eq) ≈ k' ] - uniqueness {a} {b} m mono {d} {h} {eq} {k'} eqk = begin - Iso.≅← (IsoL.iso-L (ker-iso m mono)) o (IsEqualizer.k (isEqualizer (Ker (char m mono))) h eq) ≈⟨ cdr ( IsEqualizer.uniqueness (Equalizer.isEqualizer (Ker (char m mono))) ( begin - equalizer (Ker (char m mono)) o ((Iso.≅→ (IsoL.iso-L (ker-iso m mono))) o k' ) ≈⟨ assoc ⟩ - (equalizer (Ker (char m mono)) o Iso.≅→ (IsoL.iso-L (ker-iso m mono))) o k' ≈⟨ car (mm m mono) ⟩ - m o k' ≈⟨ eqk ⟩ - h ∎ )) ⟩ - Iso.≅← (IsoL.iso-L (ker-iso m mono)) o ( Iso.≅→ (IsoL.iso-L (ker-iso m mono)) o k' ) ≈⟨ assoc ⟩ - (Iso.≅← (IsoL.iso-L (ker-iso m mono)) o Iso.≅→ (IsoL.iso-L (ker-iso m mono)) ) o k' ≈⟨ car (Iso.iso→ (IsoL.iso-L (ker-iso m mono)) )⟩ - id1 A _ o k' ≈⟨ idL ⟩ - k' ∎ where open ≈-Reasoning A - mequ : {a b : Obj A} → (m : Hom A b a) → (mono : Mono A m ) → Equalizer A (char m mono) (A [ ⊤ o (CCC.○ c a) ]) - mequ {a} {b} m mono = record { equalizer-c = b ; equalizer = m ; isEqualizer = record { - fe=ge = fe=ge m mono - ; k = λ {d} h fh=gh → A [ Iso.≅← (IsoL.iso-L (ker-iso m mono)) o IsEqualizer.k (Equalizer.isEqualizer (Ker (char m mono))) h fh=gh ] - ; ek=h = ek=h m mono - ; uniqueness = uniqueness m mono - } } char-m=⊤ : {a b : Obj A} → (m : Hom A b a) → (mono : Mono A m) → A [ A [ char m mono o m ] ≈ A [ ⊤ o CCC.○ c b ] ] char-m=⊤ {a} {b} m mono = begin - char m mono o m ≈⟨ fe=ge m mono ⟩ + char m mono o m ≈⟨ IsEqualizer.fe=ge (ker-m m mono) ⟩ (⊤ o CCC.○ c a) o m ≈↑⟨ assoc ⟩ ⊤ o (CCC.○ c a o m ) ≈⟨ cdr (IsCCC.e2 (CCC.isCCC c)) ⟩ ⊤ o CCC.○ c b ∎ where open ≈-Reasoning A diff -r 90224a662c4e -r 4b517d46e987 src/CCCSets.agda --- a/src/CCCSets.agda Tue Mar 23 17:58:57 2021 +0900 +++ b/src/CCCSets.agda Wed Mar 24 23:15:22 2021 +0900 @@ -20,8 +20,10 @@ -- Sets is a CCC -import Axiom.Extensionality.Propositional -postulate extensionality : { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) → Axiom.Extensionality.Propositional.Extensionality c₂ c₂ +open import SetsCompleteness hiding (ki1) + +-- import Axiom.Extensionality.Propositional +-- postulate extensionality : { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) → Axiom.Extensionality.Propositional.Extensionality c₂ c₂ data One {c : Level } : Set c where OneObj : One -- () in Haskell ( or any one object set ) @@ -108,11 +110,11 @@ true : Bool false : Bool -data Tker {c : Level} {a : Set c} ( f : a → Bool {c} ) : Set c where - isTrue : (x : a ) → f x ≡ true → Tker f +-- data sequ {c : Level} (A B : Set c) ( f g : A → B ) : Set c where +-- elem : (x : A ) → (eq : f x ≡ g x) → sequ A B f g -irr : { c₂ : Level} {d : Set c₂ } { x y : d } ( eq eq' : x ≡ y ) → eq ≡ eq' -irr refl refl = refl +-- irr : { c₂ : Level} {d : Set c₂ } { x y : d } ( eq eq' : x ≡ y ) → eq ≡ eq' +-- irr refl refl = refl topos : {c : Level } → Topos (Sets {c}) sets topos {c} = record { @@ -121,43 +123,26 @@ ; Ker = tker ; char = tchar ; isTopos = record { - char-uniqueness = λ {a} {b} {h} m mono → {!!} -- extensionality Sets ( λ x → uniq h m mono x ) - ; ker-iso = {!!} + char-uniqueness = λ {a} {b} {h} m mono → extensionality Sets ( λ x → uniq h m mono x ) + ; ker-m = imequ } } where tker : {a : Obj Sets} (h : Hom Sets a Bool) → Equalizer Sets h (Sets [ (λ _ → true) o CCC.○ sets a ]) tker {a} h = record { - equalizer-c = Tker h - ; equalizer = etker - ; isEqualizer = record { - fe=ge = extensionality Sets ( λ x → e-eq x ) - ; k = k - ; ek=h = λ {d} {h1} {eq} → extensionality Sets ( λ x → refl ) - ; uniqueness = λ {d} {h1} {eq} {k'} ek=h → extensionality Sets ( λ x → uniq h1 eq k' ek=h x ) - } - } where - etker : Hom Sets ( Tker h ) a - etker (isTrue x eq) = x - e-eq : (x : Tker h ) → h ( etker x ) ≡ true - e-eq (isTrue x eq ) = eq - k : {d : Obj Sets} (h₁ : Hom Sets d a) → - Sets [ Sets [ h o h₁ ] ≈ Sets [ Sets [ (λ _ → true) o CCC.○ sets a ] o h₁ ] ] → - Hom Sets d (Tker h) - k {d} h1 hf=hg x = isTrue (h1 x) ( cong ( λ k → k x) hf=hg ) - tker-cong : (x y : Tker h ) → etker x ≡ etker y → x ≡ y - tker-cong ( isTrue x eq ) (isTrue .x eq' ) refl = cong ( λ ee → isTrue x ee ) ( irr eq eq' ) - uniq : {d : Obj Sets} (h1 : Hom Sets d a) -- etker (k h1 eq x) ≡ etker (k' x) - (eq : Sets [ Sets [ h o h1 ] ≈ Sets [ Sets [ (λ _ → true) o (λ _ → OneObj) ] o h1 ] ]) - (k' : Hom Sets d (Tker h)) (ek=h : Sets [ Sets [ etker o k' ] ≈ h1 ]) (x : d) → k h1 eq x ≡ k' x - uniq h1 eq k' ek=h x with cong (λ j → j x) ek=h -- etker (k h1 eq x) ≡ etker (k' x) - ... | t = tker-cong (k h1 eq x) (k' x) (sym t) - kiso : {a b : Obj Sets} (m : Hom Sets b a) (mono : Mono Sets m) → IsoL Sets m (Equalizer.equalizer (tker (λ x → true))) - kiso {a} {b} m mono = record { iso-L = record { - ≅→ = λ x → isTrue (m x) refl ; ≅← = ki1 ; iso→ = {!!} ; iso← = {!!} } ; iso≈L = {!!} } where - ki1 : Hom Sets (Equalizer.equalizer-c (tker (λ x → true))) b - ki1 (isTrue x eq) = {!!} + equalizer-c = sequ a Bool h (λ _ → true) + ; equalizer = λ e → equ e + ; isEqualizer = SetsIsEqualizer _ _ _ _ } tchar : {a b : Obj Sets} (m : Hom Sets b a) → Mono Sets m → Hom Sets a Bool tchar {a} {b} m mono x = true + selem : {a : Obj (Sets {c})} → (x : sequ a Bool (λ x₁ → true) (λ _ → true)) → a + selem (elem x eq) = x + imequ : {a b : Obj Sets} (m : Hom Sets b a) (mono : Mono Sets m) → IsEqualizer Sets m (tchar m mono) (Sets [ (λ _ → true) o CCC.○ sets a ]) + imequ {a} {b} m mono = record { + fe=ge = extensionality Sets ( λ x → refl ) + ; k = λ h eq → {!!} + ; ek=h = {!!} + ; uniqueness = {!!} + } uniq : {a : Obj (Sets {c})} {b : Obj Sets} (h : Hom Sets a Bool) (m : Hom Sets b a) (mono : Mono Sets m) (x : a) → true ≡ h x uniq {a} {b} h m mono x = begin true ≡⟨⟩ diff -r 90224a662c4e -r 4b517d46e987 src/ToposEx.agda --- a/src/ToposEx.agda Tue Mar 23 17:58:57 2021 +0900 +++ b/src/ToposEx.agda Wed Mar 24 23:15:22 2021 +0900 @@ -78,39 +78,25 @@ ; π2 = ○ b ; isPullback = record { commute = IsTopos.char-m=⊤ (Topos.isTopos t) m mono - ; pullback = λ {d} {p1} {p2} eq → f← o k p1 p2 eq + ; pullback = λ {d} {p1} {p2} eq → k p1 p2 eq ; π1p=π1 = λ {d} {p1'} {p2'} {eq} → lemma3 p1' p2' eq ; π2p=π2 = λ {d} {p1'} {p2'} {eq} → trans-hom (IsCCC.e2 isCCC) (sym (IsCCC.e2 isCCC)) ; uniqueness = uniq } } where - 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 ) + 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 b + k p1 p2 eq = IsEqualizer.k (IsTopos.ker-m (isTopos 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 + → (eq : A [ A [ char t m mono o p1 ] ≈ A [ ⊤ t o p2 ] ] ) → m 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-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))) ⟩ + m o k p1 p2 eq ≈⟨ IsEqualizer.ek=h (IsTopos.ker-m (isTopos t) m mono) ⟩ p1 ∎ uniq : {d : Obj A} (p' : Hom A d b) (π1' : Hom A d a) (π2' : Hom A d 1) (eq : A [ A [ char t m mono o π1' ] ≈ A [ ⊤ t o π2' ] ]) → - A [ A [ m o p' ] ≈ π1' ] → A [ A [ ○ b o p' ] ≈ π2' ] → f← o k π1' π2' eq ≈ p' + A [ A [ m o p' ] ≈ π1' ] → A [ A [ ○ b o p' ] ≈ π2' ] → k π1' π2' eq ≈ p' 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-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-iso (isTopos t) m mono )) ⟩ - m o p ≈⟨ pe1 ⟩ - p1 ∎ where - + k p1 p2 eq ≈⟨ IsEqualizer.uniqueness (IsTopos.ker-m (isTopos t) m mono) pe1 ⟩ + p ∎ δmono : {b : Obj A } → Mono A < id1 A b , id1 A b > δmono = record { diff -r 90224a662c4e -r 4b517d46e987 src/equalizer.agda --- a/src/equalizer.agda Tue Mar 23 17:58:57 2021 +0900 +++ b/src/equalizer.agda Wed Mar 24 23:15:22 2021 +0900 @@ -166,6 +166,61 @@ j ∎ + +equalizerIso : {a b c : Obj A} → (f g : Hom A a b ) → (equ : Equalizer A f g ) + → (m : Hom A c a) + → ( ker-iso : IsoL A m (equalizer equ) ) + → IsEqualizer A m f g +equalizerIso {a} {b} {c} f g equ m ker-iso = record { + fe=ge = fe-ge + ; k = λ {d} h eq → A [ Iso.≅← (IsoL.iso-L ker-iso) o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ] + ; ek=h = ek=h1 + ; uniqueness = uniqueness1 } where + ker : Hom A ( equalizer-c equ ) a + ker = equalizer equ + mm : A [ A [ equalizer equ o Iso.≅→ (IsoL.iso-L ker-iso ) ] ≈ m ] + mm = IsoL.L≈iso ker-iso + fe-ge : A [ A [ f o m ] ≈ A [ g o m ] ] + fe-ge = begin + f o m ≈↑⟨ cdr mm ⟩ + f o (equalizer equ o Iso.≅→ (IsoL.iso-L ker-iso)) ≈⟨ assoc ⟩ + (f o equalizer equ) o Iso.≅→ (IsoL.iso-L ker-iso) ≈⟨ car ( IsEqualizer.fe=ge (Equalizer.isEqualizer equ) ) ⟩ + (g o equalizer equ ) o Iso.≅→ (IsoL.iso-L ker-iso) ≈↑⟨ assoc ⟩ + g o (equalizer equ o Iso.≅→ (IsoL.iso-L ker-iso)) ≈⟨ cdr mm ⟩ + g o m ∎ where open ≈-Reasoning A + ek=h1 : {d : Obj A} {h : Hom A d a} + {eq : A [ A [ f o h ] ≈ A [ g o h ] ]} → + A [ A [ m o (A Category.o Iso.≅← (IsoL.iso-L ker-iso)) (IsEqualizer.k (isEqualizer equ) h eq) ] ≈ h ] + ek=h1 {d} {h} {eq} = begin + m o ( Iso.≅← (IsoL.iso-L ker-iso) o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ) ≈↑⟨ car mm ⟩ + (equalizer equ o Iso.≅→ (IsoL.iso-L ker-iso)) o ( Iso.≅← (IsoL.iso-L ker-iso) o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ) ≈↑⟨ assoc ⟩ + _ o (Iso.≅→ (IsoL.iso-L ker-iso) o ( Iso.≅← (IsoL.iso-L ker-iso) o IsEqualizer.k (Equalizer.isEqualizer equ) h eq )) ≈⟨ cdr assoc ⟩ + equalizer equ o ((Iso.≅→ (IsoL.iso-L ker-iso) o Iso.≅← (IsoL.iso-L ker-iso)) o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ) ≈⟨ cdr (car (Iso.iso← (IsoL.iso-L ker-iso))) ⟩ + equalizer equ o (id1 A _ o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ) ≈⟨ cdr idL ⟩ + equalizer equ o IsEqualizer.k (Equalizer.isEqualizer equ) h eq ≈⟨ IsEqualizer.ek=h (isEqualizer equ) ⟩ + h ∎ where open ≈-Reasoning A + uniqueness1 : {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 [ m o k' ] ≈ h ] + → A [ (A Category.o Iso.≅← (IsoL.iso-L ker-iso)) (IsEqualizer.k (isEqualizer equ) h eq) ≈ k' ] + uniqueness1 {d} {h} {eq} {k'} eqk = begin + Iso.≅← (IsoL.iso-L ker-iso) o (IsEqualizer.k (isEqualizer equ) h eq) ≈⟨ cdr ( IsEqualizer.uniqueness (Equalizer.isEqualizer equ) ( begin + equalizer equ o ((Iso.≅→ (IsoL.iso-L ker-iso)) o k' ) ≈⟨ assoc ⟩ + (equalizer equ o Iso.≅→ (IsoL.iso-L ker-iso)) o k' ≈⟨ car mm ⟩ + m o k' ≈⟨ eqk ⟩ + h ∎ )) ⟩ + Iso.≅← (IsoL.iso-L ker-iso) o ( Iso.≅→ (IsoL.iso-L ker-iso) o k' ) ≈⟨ assoc ⟩ + (Iso.≅← (IsoL.iso-L ker-iso) o Iso.≅→ (IsoL.iso-L ker-iso) ) o k' ≈⟨ car (Iso.iso→ (IsoL.iso-L ker-iso) )⟩ + id1 A _ o k' ≈⟨ idL ⟩ + k' ∎ where open ≈-Reasoning A + mequ : Equalizer A f g + mequ = record { equalizer-c = c ; equalizer = m ; isEqualizer = record { + fe=ge = fe-ge + ; k = λ {d} h fh=gh → A [ Iso.≅← (IsoL.iso-L ker-iso) o IsEqualizer.k (Equalizer.isEqualizer equ) h fh=gh ] + ; ek=h = ek=h1 + ; uniqueness = uniqueness1 + } } + -------------------------------- -- -- If we have two equalizers on c and c', there are isomorphic pair h, h' @@ -325,6 +380,23 @@ open ≈-Reasoning A h : Hom A d a h = equalizer (eqa f g) o j +-- cong-γ1 : {a b c d : Obj A } → {f g : Hom A a b} {h h' : Hom A d a } → A [ h ≈ h' ] → +-- A [ k (ieqa f g ) {_} ( A [ h o (equalizer1 ( ieqa (A [ f o h ] ) (A [ g o h ] ) )) ] ) (lemma-equ4 {a} {b} {d} f g h ) +-- ≈ A [ k (ieqa f g ) {_} ( A [ h' o (equalizer1 ( ieqa (A [ f o h' ] ) (A [ g o h' ] ) )) ] ) (lemma-equ4 {a} {b} {d} f g h' ) o {!!} ] ] +-- cong-γ1 {a} {b} {c} {d} {f} {g} {h} {h'} h=h' = let open ≈-Reasoning (A) in begin +-- k (ieqa f g ) {_} ( A [ h o (equalizer1 ( ieqa (A [ f o h ] ) (A [ g o h ] ))) ] ) (lemma-equ4 {a} {b} {d} f g h ) +-- ≈⟨ uniqueness (ieqa f g) {!!} ⟩ +-- {!!} -- k (ieqa f g ) {_} ( A [ h' o (equalizer1 ( ieqa (A [ f o h' ] ) (A [ g o h' ] ))) ] ) (lemma-equ4 {a} {b} {d} f g h' ) +-- ∎ +-- cong-δ1 : {a b c : Obj A} {e : Hom A c a } {f f' : Hom A a b} → A [ f ≈ f' ] → A [ k (ieqa f f ) (id1 A a) (f1=f1 f) ≈ +-- A [ {!!} o k (ieqa f' f' ) (id1 A a) (f1=f1 f') ] ] +-- cong-δ1 {a} {b} {c} {e} {f} {f'} f=f' = let open ≈-Reasoning (A) in +-- begin +-- k (ieqa f f ) (id a) (f1=f1 f) +-- ≈⟨ uniqueness (ieqa f f) {!!} ⟩ +-- {!!} -- k (ieqa f' f' ) (id a) (f1=f1 f') +-- ∎ + --------------------------------