From 0be1871679e115b634cf651aafd0e00e7ed0ca09 Mon Sep 17 00:00:00 2001 From: Leon Vatthauer Date: Tue, 25 Jul 2023 17:23:36 +0200 Subject: [PATCH] Indentation --- ElgotAlgebra.agda | 127 ++++++++++++++++++++-------------------- ElgotAlgebras.agda | 141 +++++++++++++++++++++++---------------------- 2 files changed, 137 insertions(+), 131 deletions(-) diff --git a/ElgotAlgebra.agda b/ElgotAlgebra.agda index cad0edd..d7203d6 100644 --- a/ElgotAlgebra.agda +++ b/ElgotAlgebra.agda @@ -37,7 +37,9 @@ module _ (Cπ’ž : CocartesianCategory o β„“ e) where β†’ f # β‰ˆ g # ∘ h #-Compositionality : βˆ€ {X Y} {f : X β‡’ A + Fβ‚€ X} {h : Y β‡’ X + Fβ‚€ Y} β†’ (((f #) +₁ idC) ∘ h)# β‰ˆ ([ (idC +₁ (F₁ i₁)) ∘ f , iβ‚‚ ∘ (F₁ iβ‚‚) ] ∘ [ i₁ , h ])# ∘ iβ‚‚ - #-resp-β‰ˆ : βˆ€ {X} {f g : X β‡’ A + Fβ‚€ X} β†’ f β‰ˆ g β†’ (f #) β‰ˆ (g #) + #-resp-β‰ˆ : βˆ€ {X} {f g : X β‡’ A + Fβ‚€ X} + β†’ f β‰ˆ g + β†’ (f #) β‰ˆ (g #) --* -- (unguarded) Elgot-Algebra @@ -71,37 +73,38 @@ module _ (Cπ’ž : CocartesianCategory o β„“ e) where #-Compositionality {X} {Y} {f} {h} = begin (((f #) +₁ idC) ∘ h)# β‰ˆβŸ¨ #-Uniformity {f = ((f #) +₁ idC) ∘ h} {g = (f #) +₁ h} {h = h} ( begin - ((idC +₁ h) ∘ ((f #) +₁ idC) ∘ h) β‰ˆβŸ¨ sym-assoc ⟩ - (((idC +₁ h) ∘ ((f #) +₁ idC)) ∘ h) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁ ⟩ + ((idC +₁ h) ∘ ((f #) +₁ idC) ∘ h) β‰ˆβŸ¨ sym-assoc ⟩ + (((idC +₁ h) ∘ ((f #) +₁ idC)) ∘ h) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁ ⟩ ((((idC ∘ (f #)) +₁ (h ∘ idC))) ∘ h) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³) ⟩ - ((((f #) +₁ h)) ∘ h) ∎) + ((((f #) +₁ h)) ∘ h) ∎) ⟩ ((f # +₁ h)# ∘ h) β‰ˆβŸ¨ sym injectβ‚‚ ⟩ - (([ idC ∘ (f #) , (f # +₁ h)# ∘ h ] ∘ iβ‚‚)) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (sym $ []∘+₁) ⟩ - (([ idC , ((f # +₁ h)#) ] ∘ (f # +₁ h)) ∘ iβ‚‚) β‰ˆβŸ¨ (sym $ ∘-resp-β‰ˆΛ‘ (#-Fixpoint {f = (f # +₁ h) })) ⟩ - (f # +₁ h)# ∘ iβ‚‚ β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ #-Folding ⟩ - ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ iβ‚‚) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ #-Fixpoint ⟩ + (([ idC ∘ (f #) , (f # +₁ h)# ∘ h ] ∘ iβ‚‚)) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (sym $ []∘+₁) ⟩ + (([ idC , ((f # +₁ h)#) ] ∘ (f # +₁ h)) ∘ iβ‚‚) β‰ˆβŸ¨ (sym $ ∘-resp-β‰ˆΛ‘ (#-Fixpoint {f = (f # +₁ h) })) ⟩ + (f # +₁ h)# ∘ iβ‚‚ β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ #-Folding ⟩ + ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ iβ‚‚) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ #-Fixpoint ⟩ ([ idC , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ]) ∘ iβ‚‚ β‰ˆβŸ¨ assoc ⟩ [ idC , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ iβ‚‚) β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ injectβ‚‚ ⟩ - [ idC , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ (iβ‚‚ ∘ h) β‰ˆβŸ¨ sym-assoc ⟩ - (([ idC , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ iβ‚‚) ∘ h) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ injectβ‚‚ ⟩ - ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ h) β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ $ sym (injectβ‚‚ {f = i₁} {g = h}) ⟩ - [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ ([ i₁ , h ] ∘ iβ‚‚) β‰ˆβŸ¨ sym-assoc ⟩ - (([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ [ i₁ , h ]) ∘ iβ‚‚) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ (#-Uniformity {f = [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ [ i₁ , h ]} {g = [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ]} {h = [ i₁ , h ]} ( + [ idC , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ (iβ‚‚ ∘ h) β‰ˆβŸ¨ sym-assoc ⟩ + (([ idC , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ iβ‚‚) ∘ h) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ injectβ‚‚ ⟩ + ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ h) β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ $ sym (injectβ‚‚ {f = i₁} {g = h}) ⟩ + [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ ([ i₁ , h ] ∘ iβ‚‚) β‰ˆβŸ¨ sym-assoc ⟩ + (([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ [ i₁ , h ]) ∘ iβ‚‚) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ (#-Uniformity {f = [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ [ i₁ , h ]} {g = [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ]} {h = [ i₁ , h ]} ( begin - (idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ [ i₁ , h ] β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ ∘[] ⟩ - (idC +₁ [ i₁ , h ]) ∘ [ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ i₁ , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h ] β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ ([]-congΚ³ inject₁) ⟩ - ((idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h ]) β‰ˆβŸ¨ ∘[] ⟩ - [ (idC +₁ [ i₁ , h ]) ∘ ((idC +₁ i₁) ∘ f) , (idC +₁ [ i₁ , h ]) ∘ ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h) ] β‰ˆβŸ¨ []-congβ‚‚ sym-assoc sym-assoc ⟩ - [ ((idC +₁ [ i₁ , h ]) ∘ (idC +₁ i₁)) ∘ f , ((idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ ∘[]) ⟩ + (idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ [ i₁ , h ] β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ ∘[] ⟩ + (idC +₁ [ i₁ , h ]) ∘ [ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ i₁ , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h ] β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ ([]-congΚ³ inject₁) ⟩ + ((idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h ]) β‰ˆβŸ¨ ∘[] ⟩ + [ (idC +₁ [ i₁ , h ]) ∘ ((idC +₁ i₁) ∘ f) , (idC +₁ [ i₁ , h ]) ∘ ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h) ] β‰ˆβŸ¨ []-congβ‚‚ sym-assoc sym-assoc ⟩ + [ ((idC +₁ [ i₁ , h ]) ∘ (idC +₁ i₁)) ∘ f , ((idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ ∘[]) ⟩ [ ((idC ∘ idC) +₁ ([ i₁ , h ] ∘ i₁)) ∘ f , ([ (idC +₁ [ i₁ , h ]) ∘ ((idC +₁ i₁) ∘ f) , (idC +₁ [ i₁ , h ]) ∘ (iβ‚‚ ∘ iβ‚‚) ]) ∘ h ] β‰ˆβŸ¨ []-congβ‚‚ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΒ² (inject₁))) (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ sym-assoc sym-assoc)) ⟩ - [ (idC +₁ i₁) ∘ f , ([ ((idC +₁ [ i₁ , h ]) ∘ (idC +₁ i₁)) ∘ f , ((idC +₁ [ i₁ , h ]) ∘ iβ‚‚) ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ injectβ‚‚))) ⟩ - [ (idC +₁ i₁) ∘ f , ([ ((idC ∘ idC) +₁ ([ i₁ , h ] ∘ i₁)) ∘ f , (iβ‚‚ ∘ [ i₁ , h ]) ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΒ² inject₁)) assoc)) ⟩ - [ (idC +₁ i₁) ∘ f , ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ ([ i₁ , h ] ∘ iβ‚‚) ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congΛ‘ (∘-resp-β‰ˆΚ³ injectβ‚‚))) ⟩ - [ (idC +₁ i₁) ∘ f , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ h ] β‰ˆβŸ¨ []-congΚ³ (sym (inject₁)) ⟩ - [ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ i₁ , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ h ] β‰ˆβŸ¨ sym ∘[] ⟩ - [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ [ i₁ , h ] ∎))) ⟩ - ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ [ i₁ , h ])# ∘ iβ‚‚ ∎ + [ (idC +₁ i₁) ∘ f , ([ ((idC +₁ [ i₁ , h ]) ∘ (idC +₁ i₁)) ∘ f , ((idC +₁ [ i₁ , h ]) ∘ iβ‚‚) ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ injectβ‚‚))) ⟩ + [ (idC +₁ i₁) ∘ f , ([ ((idC ∘ idC) +₁ ([ i₁ , h ] ∘ i₁)) ∘ f , (iβ‚‚ ∘ [ i₁ , h ]) ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΒ² inject₁)) assoc)) ⟩ + [ (idC +₁ i₁) ∘ f , ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ ([ i₁ , h ] ∘ iβ‚‚) ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congΛ‘ (∘-resp-β‰ˆΚ³ injectβ‚‚))) ⟩ + [ (idC +₁ i₁) ∘ f , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ h ] β‰ˆβŸ¨ []-congΚ³ (sym (inject₁)) ⟩ + [ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ i₁ , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ h ] β‰ˆβŸ¨ sym ∘[] ⟩ + [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ [ i₁ , h ] ∎)) + )⟩ + ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ [ i₁ , h ])# ∘ iβ‚‚ ∎ -- every elgot-algebra comes with a divergence constant !β‚‘ : βŠ₯ β‡’ A @@ -130,7 +133,7 @@ module _ (Cπ’ž : CocartesianCategory o β„“ e) where { _# = _# ; #-Fixpoint = Ξ» {X} {f} β†’ begin f # β‰ˆβŸ¨ #-Fixpoint ⟩ - [ idC , f # ] ∘ f β‰ˆβŸ¨ sym $ ∘-resp-β‰ˆΛ‘ ([]-congΛ‘ identityΛ‘) ⟩ + [ idC , f # ] ∘ f β‰ˆβŸ¨ sym $ ∘-resp-β‰ˆΛ‘ ([]-congΛ‘ identityΛ‘) ⟩ [ idC , idC ∘ f # ] ∘ f ∎ ; #-Uniformity = #-Uniformity ; #-Compositionality = #-Compositionality @@ -148,13 +151,13 @@ module _ (Cπ’ž : CocartesianCategory o β„“ e) where ; #-Fixpoint = Ξ» {X} {f} β†’ begin f # β‰ˆβŸ¨ #-Fixpoint ⟩ [ idC , idC ∘ f # ] ∘ f β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ ([]-congΛ‘ identityΛ‘) ⟩ - [ idC , f # ] ∘ f ∎ + [ idC , f # ] ∘ f ∎ ; #-Uniformity = #-Uniformity ; #-Folding = Ξ» {X} {Y} {f} {h} β†’ begin - ((f #) +₁ h) # β‰ˆβŸ¨ sym +-g-Ξ· ⟩ - [ (f # +₁ h)# ∘ i₁ , (f # +₁ h)# ∘ iβ‚‚ ] β‰ˆβŸ¨ []-congβ‚‚ left right ⟩ + ((f #) +₁ h) # β‰ˆβŸ¨ sym +-g-Ξ· ⟩ + [ (f # +₁ h)# ∘ i₁ , (f # +₁ h)# ∘ iβ‚‚ ] β‰ˆβŸ¨ []-congβ‚‚ left right ⟩ [ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ i₁ , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ iβ‚‚ ] β‰ˆβŸ¨ +-g-Ξ· ⟩ - ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] #) ∎ + ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] #) ∎ ; #-resp-β‰ˆ = #-resp-β‰ˆ } where @@ -164,51 +167,53 @@ module _ (Cπ’ž : CocartesianCategory o β„“ e) where left : βˆ€ {X Y} {f : X β‡’ A + X} {h : Y β‡’ X + Y} β†’ (f # +₁ h)# ∘ i₁ β‰ˆ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ i₁ left {X} {Y} {f} {h} = begin - (f # +₁ h)# ∘ i₁ β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ #-Fixpoint ⟩ + (f # +₁ h)# ∘ i₁ β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ #-Fixpoint ⟩ (([ idC , idC ∘ (((f #) +₁ h) #) ] ∘ ((f #) +₁ h)) ∘ i₁) β‰ˆβŸ¨ assoc ⟩ ([ idC , idC ∘ (((f #) +₁ h) #) ] ∘ (((f #) +₁ h) ∘ i₁)) β‰ˆβŸ¨ ∘-resp-β‰ˆ ([]-congΛ‘ identityΛ‘) +β‚βˆ˜i₁ ⟩ - ([ idC , ((f #) +₁ h) # ] ∘ (i₁ ∘ (f #))) β‰ˆβŸ¨ sym-assoc ⟩ - (([ idC , ((f #) +₁ h) # ] ∘ i₁) ∘ (f #)) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ inject₁ ⟩ - idC ∘ (f #) β‰ˆβŸ¨ identityΛ‘ ⟩ - (f #) β‰ˆβŸ¨ #-Uniformity {f = f} {g = [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ]} {h = i₁} (sym inject₁) ⟩ - ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ i₁) ∎ + ([ idC , ((f #) +₁ h) # ] ∘ (i₁ ∘ (f #))) β‰ˆβŸ¨ sym-assoc ⟩ + (([ idC , ((f #) +₁ h) # ] ∘ i₁) ∘ (f #)) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ inject₁ ⟩ + idC ∘ (f #) β‰ˆβŸ¨ identityΛ‘ ⟩ + (f #) β‰ˆβŸ¨ #-Uniformity {f = f} {g = [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ]} {h = i₁} (sym inject₁) ⟩ + ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ i₁) ∎ right : βˆ€ {X Y} {f : X β‡’ A + X} {h : Y β‡’ X + Y} β†’ (f # +₁ h)# ∘ iβ‚‚ β‰ˆ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ iβ‚‚ right {X} {Y} {f} {h} = begin (f # +₁ h)# ∘ iβ‚‚ β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ #-Fixpoint ⟩ - (([ idC , idC ∘ (((f #) +₁ h) #) ] ∘ ((f #) +₁ h)) ∘ iβ‚‚) β‰ˆβŸ¨ assoc ⟩ - ([ idC , idC ∘ (((f #) +₁ h) #) ] ∘ ((f #) +₁ h) ∘ iβ‚‚) β‰ˆβŸ¨ ∘-resp-β‰ˆ ([]-congΛ‘ identityΛ‘) +β‚βˆ˜iβ‚‚ ⟩ - ([ idC , ((f #) +₁ h) # ] ∘ (iβ‚‚ ∘ h)) β‰ˆβŸ¨ sym-assoc ⟩ - ([ idC , ((f #) +₁ h) # ] ∘ iβ‚‚) ∘ h β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ injectβ‚‚ ⟩ - ((f #) +₁ h) # ∘ h β‰ˆβŸ¨ sym (#-Uniformity {f = ((f #) +₁ idC) ∘ h} {g = (f #) +₁ h} {h = h} ( + (([ idC , idC ∘ (((f #) +₁ h) #) ] ∘ ((f #) +₁ h)) ∘ iβ‚‚) β‰ˆβŸ¨ assoc ⟩ + ([ idC , idC ∘ (((f #) +₁ h) #) ] ∘ ((f #) +₁ h) ∘ iβ‚‚) β‰ˆβŸ¨ ∘-resp-β‰ˆ ([]-congΛ‘ identityΛ‘) +β‚βˆ˜iβ‚‚ ⟩ + ([ idC , ((f #) +₁ h) # ] ∘ (iβ‚‚ ∘ h)) β‰ˆβŸ¨ sym-assoc ⟩ + ([ idC , ((f #) +₁ h) # ] ∘ iβ‚‚) ∘ h β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ injectβ‚‚ ⟩ + ((f #) +₁ h) # ∘ h β‰ˆβŸ¨ sym (#-Uniformity {f = ((f #) +₁ idC) ∘ h} {g = (f #) +₁ h} {h = h} ( begin - (idC +₁ h) ∘ ((f #) +₁ idC) ∘ h β‰ˆβŸ¨ sym-assoc ⟩ + (idC +₁ h) ∘ ((f #) +₁ idC) ∘ h β‰ˆβŸ¨ sym-assoc ⟩ (((idC +₁ h) ∘ ((f #) +₁ idC)) ∘ h) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁ ⟩ - (((idC ∘ (f #)) +₁ (h ∘ idC)) ∘ h) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³) ⟩ - (f # +₁ h) ∘ h ∎)) ⟩ + (((idC ∘ (f #)) +₁ (h ∘ idC)) ∘ h) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³) ⟩ + (f # +₁ h) ∘ h ∎) + )⟩ ((((f #) +₁ idC) ∘ h) #) β‰ˆβŸ¨ #-Compositionality ⟩ (([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ [ i₁ , h ])# ∘ iβ‚‚) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (#-Uniformity {f = [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ [ i₁ , h ]} {g = [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ]} {h = [ i₁ , h ]} ( begin - (idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ [ i₁ , h ] β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ ∘[] ⟩ - (idC +₁ [ i₁ , h ]) ∘ [ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ i₁ , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h ] β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ ([]-congΚ³ inject₁) ⟩ - ((idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h ]) β‰ˆβŸ¨ ∘[] ⟩ - [ (idC +₁ [ i₁ , h ]) ∘ ((idC +₁ i₁) ∘ f) , (idC +₁ [ i₁ , h ]) ∘ ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h) ] β‰ˆβŸ¨ []-congβ‚‚ sym-assoc sym-assoc ⟩ - [ ((idC +₁ [ i₁ , h ]) ∘ (idC +₁ i₁)) ∘ f , ((idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ ∘[]) ⟩ + (idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ [ i₁ , h ] β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ ∘[] ⟩ + (idC +₁ [ i₁ , h ]) ∘ [ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ i₁ , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h ] β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ ([]-congΚ³ inject₁) ⟩ + ((idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h ]) β‰ˆβŸ¨ ∘[] ⟩ + [ (idC +₁ [ i₁ , h ]) ∘ ((idC +₁ i₁) ∘ f) , (idC +₁ [ i₁ , h ]) ∘ ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ] ∘ h) ] β‰ˆβŸ¨ []-congβ‚‚ sym-assoc sym-assoc ⟩ + [ ((idC +₁ [ i₁ , h ]) ∘ (idC +₁ i₁)) ∘ f , ((idC +₁ [ i₁ , h ]) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ ∘[]) ⟩ [ ((idC ∘ idC) +₁ ([ i₁ , h ] ∘ i₁)) ∘ f , ([ (idC +₁ [ i₁ , h ]) ∘ ((idC +₁ i₁) ∘ f) , (idC +₁ [ i₁ , h ]) ∘ (iβ‚‚ ∘ iβ‚‚) ]) ∘ h ] β‰ˆβŸ¨ []-congβ‚‚ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΒ² (inject₁))) (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ sym-assoc sym-assoc)) ⟩ - [ (idC +₁ i₁) ∘ f , ([ ((idC +₁ [ i₁ , h ]) ∘ (idC +₁ i₁)) ∘ f , ((idC +₁ [ i₁ , h ]) ∘ iβ‚‚) ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ injectβ‚‚))) ⟩ - [ (idC +₁ i₁) ∘ f , ([ ((idC ∘ idC) +₁ ([ i₁ , h ] ∘ i₁)) ∘ f , (iβ‚‚ ∘ [ i₁ , h ]) ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΒ² inject₁)) assoc)) ⟩ - [ (idC +₁ i₁) ∘ f , ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ ([ i₁ , h ] ∘ iβ‚‚) ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congΛ‘ (∘-resp-β‰ˆΚ³ injectβ‚‚))) ⟩ - [ (idC +₁ i₁) ∘ f , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ h ] β‰ˆβŸ¨ []-congΚ³ (sym (inject₁)) ⟩ - [ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ i₁ , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ h ] β‰ˆβŸ¨ sym ∘[] ⟩ - [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ [ i₁ , h ] ∎)) ⟩ - (([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ [ i₁ , h ]) ∘ iβ‚‚) β‰ˆβŸ¨ assoc ⟩ - ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ ([ i₁ , h ] ∘ iβ‚‚)) β‰ˆβŸ¨ (∘-resp-β‰ˆΚ³ $ injectβ‚‚) ⟩ - ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ h) β‰ˆβŸ¨ sym $ ∘-resp-β‰ˆΛ‘ injectβ‚‚ ⟩ - (([ idC , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ iβ‚‚) ∘ h) β‰ˆβŸ¨ assoc ⟩ - ([ idC , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ iβ‚‚ ∘ h) β‰ˆβŸ¨ sym (∘-resp-β‰ˆ ([]-congΛ‘ identityΛ‘) injectβ‚‚) ⟩ + [ (idC +₁ i₁) ∘ f , ([ ((idC +₁ [ i₁ , h ]) ∘ (idC +₁ i₁)) ∘ f , ((idC +₁ [ i₁ , h ]) ∘ iβ‚‚) ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ injectβ‚‚))) ⟩ + [ (idC +₁ i₁) ∘ f , ([ ((idC ∘ idC) +₁ ([ i₁ , h ] ∘ i₁)) ∘ f , (iβ‚‚ ∘ [ i₁ , h ]) ∘ iβ‚‚ ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΒ² inject₁)) assoc)) ⟩ + [ (idC +₁ i₁) ∘ f , ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ ([ i₁ , h ] ∘ iβ‚‚) ]) ∘ h ] β‰ˆβŸ¨ []-congΛ‘ (∘-resp-β‰ˆΛ‘ ([]-congΛ‘ (∘-resp-β‰ˆΚ³ injectβ‚‚))) ⟩ + [ (idC +₁ i₁) ∘ f , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ h ] β‰ˆβŸ¨ []-congΚ³ (sym (inject₁)) ⟩ + [ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ i₁ , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ h ] β‰ˆβŸ¨ sym ∘[] ⟩ + [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ [ i₁ , h ] ∎) + )⟩ + (([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ [ i₁ , h ]) ∘ iβ‚‚) β‰ˆβŸ¨ assoc ⟩ + ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ ([ i₁ , h ] ∘ iβ‚‚)) β‰ˆβŸ¨ (∘-resp-β‰ˆΚ³ $ injectβ‚‚) ⟩ + ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ h) β‰ˆβŸ¨ sym $ ∘-resp-β‰ˆΛ‘ injectβ‚‚ ⟩ + (([ idC , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ iβ‚‚) ∘ h) β‰ˆβŸ¨ assoc ⟩ + ([ idC , [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ iβ‚‚ ∘ h) β‰ˆβŸ¨ sym (∘-resp-β‰ˆ ([]-congΛ‘ identityΛ‘) injectβ‚‚) ⟩ ([ idC , idC ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] ∘ iβ‚‚)) β‰ˆβŸ¨ sym-assoc ⟩ (([ idC , idC ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ] ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ]) ∘ iβ‚‚) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (sym #-Fixpoint) ⟩ - ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ iβ‚‚) ∎ + ([ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ] # ∘ iβ‚‚) ∎ -- unguarded elgot-algebras are just Id-guarded Elgot-Algebras Unguarded↔Id-Guarded : ((ea : Elgot-Algebra) β†’ Guarded-Elgot-Algebra (Id-Algebra (Elgot-Algebra.A ea))) ∧ (βˆ€ {A : Obj} β†’ Guarded-Elgot-Algebra (Id-Algebra A) β†’ Elgot-Algebra) diff --git a/ElgotAlgebras.agda b/ElgotAlgebras.agda index d5daf7b..10e4f2e 100644 --- a/ElgotAlgebras.agda +++ b/ElgotAlgebras.agda @@ -43,15 +43,15 @@ module _ (CC : CocartesianCategory o β„“ e) where ; _β‰ˆ_ = Ξ» f g β†’ Elgot-Algebra-Morphism.h f β‰ˆ Elgot-Algebra-Morphism.h g ; id = Ξ» {EB} β†’ let open Elgot-Algebra EB in record { h = idC; preserves = Ξ» {X : Obj} {f : X β‡’ A + X} β†’ begin - idC ∘ f # β‰ˆβŸ¨ identityΛ‘ ⟩ - (f #) β‰ˆβŸ¨ sym $ #-resp-β‰ˆ identityΛ‘ ⟩ - ((idC ∘ f) #) β‰ˆβŸ¨ sym (#-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ +-Ξ·)) ⟩ - (([ i₁ , iβ‚‚ ] ∘ f)#) β‰ˆβŸ¨ sym $ #-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ identityΚ³ identityΚ³)) ⟩ - (([ i₁ ∘ idC , iβ‚‚ ∘ idC ] ∘ f)#) β‰ˆβŸ¨ sym $ #-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ []∘+₁) ⟩ + idC ∘ f # β‰ˆβŸ¨ identityΛ‘ ⟩ + (f #) β‰ˆβŸ¨ sym $ #-resp-β‰ˆ identityΛ‘ ⟩ + ((idC ∘ f) #) β‰ˆβŸ¨ sym (#-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ +-Ξ·)) ⟩ + (([ i₁ , iβ‚‚ ] ∘ f)#) β‰ˆβŸ¨ sym $ #-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ ([]-congβ‚‚ identityΚ³ identityΚ³)) ⟩ + (([ i₁ ∘ idC , iβ‚‚ ∘ idC ] ∘ f)#) β‰ˆβŸ¨ sym $ #-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ []∘+₁) ⟩ ((([ i₁ , iβ‚‚ ] ∘ (idC +₁ idC)) ∘ f)#) β‰ˆβŸ¨ #-resp-β‰ˆ assoc ⟩ - (([ i₁ , iβ‚‚ ] ∘ (idC +₁ idC) ∘ f)#) β‰ˆβŸ¨ #-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ +-Ξ·) ⟩ - ((idC ∘ (idC +₁ idC) ∘ f)#) β‰ˆβŸ¨ #-resp-β‰ˆ identityΛ‘ ⟩ - ((idC +₁ idC) ∘ f) # ∎ } + (([ i₁ , iβ‚‚ ] ∘ (idC +₁ idC) ∘ f)#) β‰ˆβŸ¨ #-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ +-Ξ·) ⟩ + ((idC ∘ (idC +₁ idC) ∘ f)#) β‰ˆβŸ¨ #-resp-β‰ˆ identityΛ‘ ⟩ + ((idC +₁ idC) ∘ f) # ∎ } ; _∘_ = Ξ» {EA} {EB} {EC} f g β†’ let open Elgot-Algebra-Morphism f renaming (h to hαΆ ; preserves to preservesαΆ ) open Elgot-Algebra-Morphism g renaming (h to hᡍ; preserves to preservesᡍ) @@ -59,13 +59,13 @@ module _ (CC : CocartesianCategory o β„“ e) where open Elgot-Algebra EB using () renaming (_# to _#ᡇ; A to B) open Elgot-Algebra EC using () renaming (_# to _#ᢜ; A to C; #-resp-β‰ˆ to #ᢜ-resp-β‰ˆ) in record { h = hαΆ  ∘ hᡍ; preserves = Ξ» {X} {f : X β‡’ A + X} β†’ begin - (hαΆ  ∘ hᡍ) ∘ (f #ᡃ) β‰ˆβŸ¨ assoc ⟩ - (hαΆ  ∘ hᡍ ∘ (f #ᡃ)) β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ preservesᡍ ⟩ - (hαΆ  ∘ (((hᡍ +₁ idC) ∘ f) #ᡇ)) β‰ˆβŸ¨ preservesαΆ  ⟩ - (((hαΆ  +₁ idC) ∘ (hᡍ +₁ idC) ∘ f) #ᢜ) β‰ˆβŸ¨ #ᢜ-resp-β‰ˆ sym-assoc ⟩ + (hαΆ  ∘ hᡍ) ∘ (f #ᡃ) β‰ˆβŸ¨ assoc ⟩ + (hαΆ  ∘ hᡍ ∘ (f #ᡃ)) β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ preservesᡍ ⟩ + (hαΆ  ∘ (((hᡍ +₁ idC) ∘ f) #ᡇ)) β‰ˆβŸ¨ preservesαΆ  ⟩ + (((hαΆ  +₁ idC) ∘ (hᡍ +₁ idC) ∘ f) #ᢜ) β‰ˆβŸ¨ #ᢜ-resp-β‰ˆ sym-assoc ⟩ ((((hαΆ  +₁ idC) ∘ (hᡍ +₁ idC)) ∘ f) #ᢜ) β‰ˆβŸ¨ #ᢜ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) ⟩ - ((((hαΆ  ∘ hᡍ) +₁ (idC ∘ idC)) ∘ f) #ᢜ) β‰ˆβŸ¨ #ᢜ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ refl (identityΒ²))) ⟩ - ((hαΆ  ∘ hᡍ +₁ idC) ∘ f) #ᢜ ∎ } + ((((hαΆ  ∘ hᡍ) +₁ (idC ∘ idC)) ∘ f) #ᢜ) β‰ˆβŸ¨ #ᢜ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ refl (identityΒ²))) ⟩ + ((hαΆ  ∘ hᡍ +₁ idC) ∘ f) #ᢜ ∎ } ; identityΛ‘ = identityΛ‘ ; identityΚ³ = identityΚ³ ; identityΒ² = identityΒ² @@ -110,60 +110,61 @@ module _ (CC : CocartesianCategory o β„“ e) where { A = AΓ—B ; _# = Ξ» {X : Obj} (h : X β‡’ AΓ—B + X) β†’ ⟨ ((π₁ +₁ idC) ∘ h)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ h)#ᡇ ⟩ ; #-Fixpoint = Ξ» {X} {f} β†’ begin - ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ β‰ˆβŸ¨ ⟨⟩-congβ‚‚ #ᡃ-Fixpoint #ᡇ-Fixpoint ⟩ + ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ β‰ˆβŸ¨ ⟨⟩-congβ‚‚ #ᡃ-Fixpoint #ᡇ-Fixpoint ⟩ ⟨ [ idC , ((π₁ +₁ idC) ∘ f)#ᡃ ] ∘ ((π₁ +₁ idC) ∘ f) , [ idC , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ] ∘ ((Ο€β‚‚ +₁ idC) ∘ f) ⟩ β‰ˆβŸ¨ ⟨⟩-congβ‚‚ sym-assoc sym-assoc ⟩ ⟨ ([ idC , ((π₁ +₁ idC) ∘ f)#ᡃ ] ∘ (π₁ +₁ idC)) ∘ f , ([ idC , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ] ∘ (Ο€β‚‚ +₁ idC)) ∘ f ⟩ β‰ˆβŸ¨ ⟨⟩-congβ‚‚ (∘-resp-β‰ˆΛ‘ []∘+₁) (∘-resp-β‰ˆΛ‘ []∘+₁) ⟩ - ⟨ [ idC ∘ π₁ , ((π₁ +₁ idC) ∘ f)#ᡃ ∘ idC ] ∘ f , [ idC ∘ Ο€β‚‚ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ∘ idC ] ∘ f ⟩ β‰ˆβŸ¨ sym ∘-distribΚ³-⟨⟩ ⟩ - (⟨ [ idC ∘ π₁ , ((π₁ +₁ idC) ∘ f)#ᡃ ∘ idC ] , [ idC ∘ Ο€β‚‚ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ∘ idC ] ⟩ ∘ f) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (uniqueβ€² + ⟨ [ idC ∘ π₁ , ((π₁ +₁ idC) ∘ f)#ᡃ ∘ idC ] ∘ f , [ idC ∘ Ο€β‚‚ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ∘ idC ] ∘ f ⟩ β‰ˆβŸ¨ sym ∘-distribΚ³-⟨⟩ ⟩ + (⟨ [ idC ∘ π₁ , ((π₁ +₁ idC) ∘ f)#ᡃ ∘ idC ] , [ idC ∘ Ο€β‚‚ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ∘ idC ] ⟩ ∘ f) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (uniqueβ€² (begin π₁ ∘ ⟨ [ idC ∘ π₁ , ((π₁ +₁ idC) ∘ f)#ᡃ ∘ idC ] , [ idC ∘ Ο€β‚‚ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ∘ idC ] ⟩ β‰ˆβŸ¨ project₁ ⟩ - [ idC ∘ π₁ , ((π₁ +₁ idC) ∘ f)#ᡃ ∘ idC ] β‰ˆβŸ¨ []-congβ‚‚ identityΛ‘ identityΚ³ ⟩ - [ π₁ , ((π₁ +₁ idC) ∘ f)#ᡃ ] β‰ˆβŸ¨ sym ([]-congβ‚‚ identityΚ³ project₁) ⟩ - [ π₁ ∘ idC , π₁ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ ] β‰ˆβŸ¨ sym ∘[] ⟩ - π₁ ∘ [ idC , ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ ] ∎) + [ idC ∘ π₁ , ((π₁ +₁ idC) ∘ f)#ᡃ ∘ idC ] β‰ˆβŸ¨ []-congβ‚‚ identityΛ‘ identityΚ³ ⟩ + [ π₁ , ((π₁ +₁ idC) ∘ f)#ᡃ ] β‰ˆβŸ¨ sym ([]-congβ‚‚ identityΚ³ project₁) ⟩ + [ π₁ ∘ idC , π₁ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ ] β‰ˆβŸ¨ sym ∘[] ⟩ + π₁ ∘ [ idC , ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ ] ∎) (begin Ο€β‚‚ ∘ ⟨ [ idC ∘ π₁ , ((π₁ +₁ idC) ∘ f)#ᡃ ∘ idC ] , [ idC ∘ Ο€β‚‚ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ∘ idC ] ⟩ β‰ˆβŸ¨ projectβ‚‚ ⟩ - [ idC ∘ Ο€β‚‚ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ∘ idC ] β‰ˆβŸ¨ []-congβ‚‚ identityΛ‘ identityΚ³ ⟩ - [ Ο€β‚‚ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ] β‰ˆβŸ¨ sym ([]-congβ‚‚ identityΚ³ projectβ‚‚) ⟩ - [ Ο€β‚‚ ∘ idC , Ο€β‚‚ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ ] β‰ˆβŸ¨ sym ∘[] ⟩ - Ο€β‚‚ ∘ [ idC , ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ ] ∎) )⟩ - ([ idC , ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ ] ∘ f) ∎ + [ idC ∘ Ο€β‚‚ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ∘ idC ] β‰ˆβŸ¨ []-congβ‚‚ identityΛ‘ identityΚ³ ⟩ + [ Ο€β‚‚ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ] β‰ˆβŸ¨ sym ([]-congβ‚‚ identityΚ³ projectβ‚‚) ⟩ + [ Ο€β‚‚ ∘ idC , Ο€β‚‚ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ ] β‰ˆβŸ¨ sym ∘[] ⟩ + Ο€β‚‚ ∘ [ idC , ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ ] ∎) + )⟩ + ([ idC , ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ ] ∘ f) ∎ ; #-Uniformity = Ξ» {X Y f g h} uni β†’ uniqueβ€² ( begin - π₁ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ β‰ˆβŸ¨ project₁ ⟩ - (((π₁ +₁ idC) ∘ f)#ᡃ) β‰ˆβŸ¨ #ᡃ-Uniformity ( + π₁ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ β‰ˆβŸ¨ project₁ ⟩ + (((π₁ +₁ idC) ∘ f)#ᡃ) β‰ˆβŸ¨ #ᡃ-Uniformity ( begin - (idC +₁ h) ∘ (π₁ +₁ idC) ∘ f β‰ˆβŸ¨ sym-assoc ⟩ + (idC +₁ h) ∘ (π₁ +₁ idC) ∘ f β‰ˆβŸ¨ sym-assoc ⟩ ((idC +₁ h) ∘ (π₁ +₁ idC)) ∘ f β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁ ⟩ - (idC ∘ π₁ +₁ h ∘ idC) ∘ f β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³) ⟩ - ((π₁ +₁ h) ∘ f) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΚ³ identityΛ‘)) ⟩ - (((π₁ ∘ idC +₁ idC ∘ h)) ∘ f) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) ⟩ + (idC ∘ π₁ +₁ h ∘ idC) ∘ f β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³) ⟩ + ((π₁ +₁ h) ∘ f) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΚ³ identityΛ‘)) ⟩ + (((π₁ ∘ idC +₁ idC ∘ h)) ∘ f) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) ⟩ ((π₁ +₁ idC) ∘ (idC +₁ h)) ∘ f β‰ˆβŸ¨ assoc ⟩ (π₁ +₁ idC) ∘ ((idC +₁ h) ∘ f) β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ uni ⟩ - (π₁ +₁ idC) ∘ g ∘ h β‰ˆβŸ¨ sym-assoc ⟩ - ((π₁ +₁ idC) ∘ g) ∘ h ∎ + (π₁ +₁ idC) ∘ g ∘ h β‰ˆβŸ¨ sym-assoc ⟩ + ((π₁ +₁ idC) ∘ g) ∘ h ∎ )⟩ - (((π₁ +₁ idC) ∘ g)#ᡃ ∘ h) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ project₁) ⟩ + (((π₁ +₁ idC) ∘ g)#ᡃ ∘ h) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ project₁) ⟩ ((π₁ ∘ ⟨ ((π₁ +₁ idC) ∘ g)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ g)#ᡇ ⟩) ∘ h) β‰ˆβŸ¨ assoc ⟩ - π₁ ∘ ⟨ ((π₁ +₁ idC) ∘ g)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ g)#ᡇ ⟩ ∘ h ∎ + π₁ ∘ ⟨ ((π₁ +₁ idC) ∘ g)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ g)#ᡇ ⟩ ∘ h ∎ ) ( begin - Ο€β‚‚ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ β‰ˆβŸ¨ projectβ‚‚ ⟩ + Ο€β‚‚ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ β‰ˆβŸ¨ projectβ‚‚ ⟩ ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ β‰ˆβŸ¨ #ᡇ-Uniformity ( begin - (idC +₁ h) ∘ (Ο€β‚‚ +₁ idC) ∘ f β‰ˆβŸ¨ sym-assoc ⟩ + (idC +₁ h) ∘ (Ο€β‚‚ +₁ idC) ∘ f β‰ˆβŸ¨ sym-assoc ⟩ (((idC +₁ h) ∘ (Ο€β‚‚ +₁ idC)) ∘ f) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁ ⟩ - ((idC ∘ Ο€β‚‚ +₁ h ∘ idC) ∘ f) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³) ⟩ - ((Ο€β‚‚ +₁ h) ∘ f) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΚ³ identityΛ‘)) ⟩ - ((((Ο€β‚‚ ∘ idC +₁ idC ∘ h)) ∘ f)) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) ⟩ + ((idC ∘ Ο€β‚‚ +₁ h ∘ idC) ∘ f) β‰ˆβŸ¨ ∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³) ⟩ + ((Ο€β‚‚ +₁ h) ∘ f) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΚ³ identityΛ‘)) ⟩ + ((((Ο€β‚‚ ∘ idC +₁ idC ∘ h)) ∘ f)) β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) ⟩ ((Ο€β‚‚ +₁ idC) ∘ ((idC +₁ h))) ∘ f β‰ˆβŸ¨ assoc ⟩ - (Ο€β‚‚ +₁ idC) ∘ ((idC +₁ h)) ∘ f β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ uni ⟩ - (Ο€β‚‚ +₁ idC) ∘ g ∘ h β‰ˆβŸ¨ sym-assoc ⟩ - ((Ο€β‚‚ +₁ idC) ∘ g) ∘ h ∎ + (Ο€β‚‚ +₁ idC) ∘ ((idC +₁ h)) ∘ f β‰ˆβŸ¨ ∘-resp-β‰ˆΚ³ uni ⟩ + (Ο€β‚‚ +₁ idC) ∘ g ∘ h β‰ˆβŸ¨ sym-assoc ⟩ + ((Ο€β‚‚ +₁ idC) ∘ g) ∘ h ∎ )⟩ ((Ο€β‚‚ +₁ idC) ∘ g)#ᡇ ∘ h β‰ˆβŸ¨ sym (∘-resp-β‰ˆΛ‘ projectβ‚‚) ⟩ ((Ο€β‚‚ ∘ ⟨ ((π₁ +₁ idC) ∘ g)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ g)#ᡇ ⟩) ∘ h) β‰ˆβŸ¨ assoc ⟩ - Ο€β‚‚ ∘ ⟨ ((π₁ +₁ idC) ∘ g)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ g)#ᡇ ⟩ ∘ h ∎ + Ο€β‚‚ ∘ ⟨ ((π₁ +₁ idC) ∘ g)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ g)#ᡇ ⟩ ∘ h ∎ ) ; #-Folding = Ξ» {X} {Y} {f} {h} β†’ ⟨⟩-congβ‚‚ (foldingΛ‘ {X} {Y}) (foldingΚ³ {X} {Y}) ; #-resp-β‰ˆ = Ξ» fg β†’ ⟨⟩-congβ‚‚ (#ᡃ-resp-β‰ˆ (∘-resp-β‰ˆΚ³ fg)) (#ᡇ-resp-β‰ˆ (∘-resp-β‰ˆΚ³ fg)) @@ -177,29 +178,29 @@ module _ (CC : CocartesianCategory o β„“ e) where foldingΛ‘ : βˆ€ {X} {Y} {f} {h} β†’ (((π₁ +₁ idC) ∘ (⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ +₁ h))#ᡃ) β‰ˆ ((π₁ +₁ idC) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ])#ᡃ foldingΛ‘ {X} {Y} {f} {h} = begin ((π₁ +₁ idC) ∘ (⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ +₁ h))#ᡃ β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ +β‚βˆ˜+₁ ⟩ - ((π₁ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ +₁ idC ∘ h)#ᡃ) β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ (+₁-congβ‚‚ project₁ identityΛ‘) ⟩ - ((((π₁ +₁ idC) ∘ f)#ᡃ +₁ h)#ᡃ) β‰ˆβŸ¨ #ᡃ-Folding ⟩ - ([ (idC +₁ i₁) ∘ ((π₁ +₁ idC) ∘ f) , iβ‚‚ ∘ h ] #ᡃ) β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ ([]-congΚ³ sym-assoc) ⟩ - ([ ((idC +₁ i₁) ∘ (π₁ +₁ idC)) ∘ f , iβ‚‚ ∘ h ] #ᡃ) β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ ([]-congΚ³ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁)) ⟩ - ([ ((idC ∘ π₁ +₁ i₁ ∘ idC)) ∘ f , iβ‚‚ ∘ h ] #ᡃ) β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ ([]-congΚ³ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³))) ⟩ - ([ ((π₁ +₁ i₁)) ∘ f , iβ‚‚ ∘ h ] #ᡃ) β‰ˆβŸ¨ sym (#ᡃ-resp-β‰ˆ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΚ³ identityΛ‘)) (∘-resp-β‰ˆΛ‘ identityΚ³))) ⟩ - (([ (π₁ ∘ idC +₁ idC ∘ i₁) ∘ f , (iβ‚‚ ∘ idC) ∘ h ])#ᡃ) β‰ˆβŸ¨ sym (#ᡃ-resp-β‰ˆ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ +β‚βˆ˜iβ‚‚))) ⟩ - (([ ((π₁ +₁ idC) ∘ (idC +₁ i₁)) ∘ f , ((π₁ +₁ idC) ∘ iβ‚‚) ∘ h ])#ᡃ) β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ ([]-congβ‚‚ assoc assoc) ⟩ - (([ (π₁ +₁ idC) ∘ (idC +₁ i₁) ∘ f , (π₁ +₁ idC) ∘ iβ‚‚ ∘ h ])#ᡃ) β‰ˆβŸ¨ sym (#ᡃ-resp-β‰ˆ ∘[]) ⟩ - ((π₁ +₁ idC) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ])#ᡃ ∎ + ((π₁ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ +₁ idC ∘ h)#ᡃ) β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ (+₁-congβ‚‚ project₁ identityΛ‘) ⟩ + ((((π₁ +₁ idC) ∘ f)#ᡃ +₁ h)#ᡃ) β‰ˆβŸ¨ #ᡃ-Folding ⟩ + ([ (idC +₁ i₁) ∘ ((π₁ +₁ idC) ∘ f) , iβ‚‚ ∘ h ] #ᡃ) β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ ([]-congΚ³ sym-assoc) ⟩ + ([ ((idC +₁ i₁) ∘ (π₁ +₁ idC)) ∘ f , iβ‚‚ ∘ h ] #ᡃ) β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ ([]-congΚ³ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁)) ⟩ + ([ ((idC ∘ π₁ +₁ i₁ ∘ idC)) ∘ f , iβ‚‚ ∘ h ] #ᡃ) β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ ([]-congΚ³ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³))) ⟩ + ([ ((π₁ +₁ i₁)) ∘ f , iβ‚‚ ∘ h ] #ᡃ) β‰ˆβŸ¨ sym (#ᡃ-resp-β‰ˆ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΚ³ identityΛ‘)) (∘-resp-β‰ˆΛ‘ identityΚ³))) ⟩ + (([ (π₁ ∘ idC +₁ idC ∘ i₁) ∘ f , (iβ‚‚ ∘ idC) ∘ h ])#ᡃ) β‰ˆβŸ¨ sym (#ᡃ-resp-β‰ˆ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ +β‚βˆ˜iβ‚‚))) ⟩ + (([ ((π₁ +₁ idC) ∘ (idC +₁ i₁)) ∘ f , ((π₁ +₁ idC) ∘ iβ‚‚) ∘ h ])#ᡃ) β‰ˆβŸ¨ #ᡃ-resp-β‰ˆ ([]-congβ‚‚ assoc assoc) ⟩ + (([ (π₁ +₁ idC) ∘ (idC +₁ i₁) ∘ f , (π₁ +₁ idC) ∘ iβ‚‚ ∘ h ])#ᡃ) β‰ˆβŸ¨ sym (#ᡃ-resp-β‰ˆ ∘[]) ⟩ + ((π₁ +₁ idC) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ])#ᡃ ∎ foldingΚ³ : βˆ€ {X} {Y} {f} {h} β†’ ((Ο€β‚‚ +₁ idC) ∘ (⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ +₁ h))#ᡇ β‰ˆ ((Ο€β‚‚ +₁ idC) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ])#ᡇ foldingΚ³ {X} {Y} {f} {h} = begin ((Ο€β‚‚ +₁ idC) ∘ (⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ +₁ h))#ᡇ β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ +β‚βˆ˜+₁ ⟩ - ((Ο€β‚‚ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ +₁ idC ∘ h)#ᡇ) β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ (+₁-congβ‚‚ projectβ‚‚ identityΛ‘) ⟩ - ((((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ +₁ h)#ᡇ) β‰ˆβŸ¨ #ᡇ-Folding ⟩ - [ (idC +₁ i₁) ∘ ((Ο€β‚‚ +₁ idC) ∘ f) , iβ‚‚ ∘ h ] #ᡇ β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ ([]-congΚ³ sym-assoc) ⟩ - ([ ((idC +₁ i₁) ∘ (Ο€β‚‚ +₁ idC)) ∘ f , iβ‚‚ ∘ h ] #ᡇ) β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ ([]-congΚ³ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁)) ⟩ - ([ ((idC ∘ Ο€β‚‚ +₁ i₁ ∘ idC)) ∘ f , iβ‚‚ ∘ h ] #ᡇ) β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ ([]-congΚ³ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³))) ⟩ - ([ ((Ο€β‚‚ +₁ i₁)) ∘ f , iβ‚‚ ∘ h ] #ᡇ) β‰ˆβŸ¨ sym (#ᡇ-resp-β‰ˆ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΚ³ identityΛ‘)) (∘-resp-β‰ˆΛ‘ identityΚ³))) ⟩ - (([ (Ο€β‚‚ ∘ idC +₁ idC ∘ i₁) ∘ f , (iβ‚‚ ∘ idC) ∘ h ])#ᡇ) β‰ˆβŸ¨ sym (#ᡇ-resp-β‰ˆ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ +β‚βˆ˜iβ‚‚))) ⟩ - (([ ((Ο€β‚‚ +₁ idC) ∘ (idC +₁ i₁)) ∘ f , ((Ο€β‚‚ +₁ idC) ∘ iβ‚‚) ∘ h ])#ᡇ) β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ ([]-congβ‚‚ assoc assoc) ⟩ - (([ (Ο€β‚‚ +₁ idC) ∘ (idC +₁ i₁) ∘ f , (Ο€β‚‚ +₁ idC) ∘ iβ‚‚ ∘ h ])#ᡇ) β‰ˆβŸ¨ sym (#ᡇ-resp-β‰ˆ ∘[]) ⟩ - ((Ο€β‚‚ +₁ idC) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ])#ᡇ ∎ + ((Ο€β‚‚ ∘ ⟨ ((π₁ +₁ idC) ∘ f)#ᡃ , ((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ ⟩ +₁ idC ∘ h)#ᡇ) β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ (+₁-congβ‚‚ projectβ‚‚ identityΛ‘) ⟩ + ((((Ο€β‚‚ +₁ idC) ∘ f)#ᡇ +₁ h)#ᡇ) β‰ˆβŸ¨ #ᡇ-Folding ⟩ + [ (idC +₁ i₁) ∘ ((Ο€β‚‚ +₁ idC) ∘ f) , iβ‚‚ ∘ h ] #ᡇ β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ ([]-congΚ³ sym-assoc) ⟩ + ([ ((idC +₁ i₁) ∘ (Ο€β‚‚ +₁ idC)) ∘ f , iβ‚‚ ∘ h ] #ᡇ) β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ ([]-congΚ³ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁)) ⟩ + ([ ((idC ∘ Ο€β‚‚ +₁ i₁ ∘ idC)) ∘ f , iβ‚‚ ∘ h ] #ᡇ) β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ ([]-congΚ³ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΛ‘ identityΚ³))) ⟩ + ([ ((Ο€β‚‚ +₁ i₁)) ∘ f , iβ‚‚ ∘ h ] #ᡇ) β‰ˆβŸ¨ sym (#ᡇ-resp-β‰ˆ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ identityΚ³ identityΛ‘)) (∘-resp-β‰ˆΛ‘ identityΚ³))) ⟩ + (([ (Ο€β‚‚ ∘ idC +₁ idC ∘ i₁) ∘ f , (iβ‚‚ ∘ idC) ∘ h ])#ᡇ) β‰ˆβŸ¨ sym (#ᡇ-resp-β‰ˆ ([]-congβ‚‚ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁) (∘-resp-β‰ˆΛ‘ +β‚βˆ˜iβ‚‚))) ⟩ + (([ ((Ο€β‚‚ +₁ idC) ∘ (idC +₁ i₁)) ∘ f , ((Ο€β‚‚ +₁ idC) ∘ iβ‚‚) ∘ h ])#ᡇ) β‰ˆβŸ¨ #ᡇ-resp-β‰ˆ ([]-congβ‚‚ assoc assoc) ⟩ + (([ (Ο€β‚‚ +₁ idC) ∘ (idC +₁ i₁) ∘ f , (Ο€β‚‚ +₁ idC) ∘ iβ‚‚ ∘ h ])#ᡇ) β‰ˆβŸ¨ sym (#ᡇ-resp-β‰ˆ ∘[]) ⟩ + ((Ο€β‚‚ +₁ idC) ∘ [ (idC +₁ i₁) ∘ f , iβ‚‚ ∘ h ])#ᡇ ∎ Product-Elgot-Algebras : βˆ€ (EA EB : Elgot-Algebra CC) β†’ Product C (Elgot-Algebra.A EA) (Elgot-Algebra.A EB) β†’ Product Elgot-Algebras EA EB Product-Elgot-Algebras EA EB p = record @@ -211,12 +212,12 @@ module _ (CC : CocartesianCategory o β„“ e) where open Elgot-Algebra-Morphism g renaming (h to gβ€²; preserves to preservesᡍ) open Elgot-Algebra E renaming (_# to _#ᡉ) in record { h = ⟨ fβ€² , gβ€² ⟩ ; preserves = Ξ» {X} {h} β†’ begin - ⟨ fβ€² , gβ€² ⟩ ∘ (h #ᡉ) β‰ˆβŸ¨ ∘-distribΚ³-⟨⟩ ⟩ - ⟨ fβ€² ∘ (h #ᡉ) , gβ€² ∘ (h #ᡉ) ⟩ β‰ˆβŸ¨ ⟨⟩-congβ‚‚ preservesαΆ  preservesᡍ ⟩ - ⟨ ((fβ€² +₁ idC) ∘ h) #ᡃ , ((gβ€² +₁ idC) ∘ h) #ᡇ ⟩ β‰ˆβŸ¨ sym (⟨⟩-congβ‚‚ (#ᡃ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ project₁ identityΒ²))) (#ᡇ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ projectβ‚‚ identityΒ²)))) ⟩ - ⟨ ((π₁ ∘ ⟨ fβ€² , gβ€² ⟩ +₁ idC ∘ idC) ∘ h) #ᡃ , ((Ο€β‚‚ ∘ ⟨ fβ€² , gβ€² ⟩ +₁ idC ∘ idC) ∘ h) #ᡇ ⟩ β‰ˆβŸ¨ sym (⟨⟩-congβ‚‚ (#ᡃ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁)) (#ᡇ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁))) ⟩ + ⟨ fβ€² , gβ€² ⟩ ∘ (h #ᡉ) β‰ˆβŸ¨ ∘-distribΚ³-⟨⟩ ⟩ + ⟨ fβ€² ∘ (h #ᡉ) , gβ€² ∘ (h #ᡉ) ⟩ β‰ˆβŸ¨ ⟨⟩-congβ‚‚ preservesαΆ  preservesᡍ ⟩ + ⟨ ((fβ€² +₁ idC) ∘ h) #ᡃ , ((gβ€² +₁ idC) ∘ h) #ᡇ ⟩ β‰ˆβŸ¨ sym (⟨⟩-congβ‚‚ (#ᡃ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ project₁ identityΒ²))) (#ᡇ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ (+₁-congβ‚‚ projectβ‚‚ identityΒ²)))) ⟩ + ⟨ ((π₁ ∘ ⟨ fβ€² , gβ€² ⟩ +₁ idC ∘ idC) ∘ h) #ᡃ , ((Ο€β‚‚ ∘ ⟨ fβ€² , gβ€² ⟩ +₁ idC ∘ idC) ∘ h) #ᡇ ⟩ β‰ˆβŸ¨ sym (⟨⟩-congβ‚‚ (#ᡃ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁)) (#ᡇ-resp-β‰ˆ (∘-resp-β‰ˆΛ‘ +β‚βˆ˜+₁))) ⟩ ⟨ (((π₁ +₁ idC) ∘ (⟨ fβ€² , gβ€² ⟩ +₁ idC)) ∘ h) #ᡃ , (((Ο€β‚‚ +₁ idC) ∘ (⟨ fβ€² , gβ€² ⟩ +₁ idC)) ∘ h) #ᡇ ⟩ β‰ˆβŸ¨ (⟨⟩-congβ‚‚ (#ᡃ-resp-β‰ˆ assoc) (#ᡇ-resp-β‰ˆ assoc)) ⟩ - ⟨ ((π₁ +₁ idC) ∘ (⟨ fβ€² , gβ€² ⟩ +₁ idC) ∘ h) #ᡃ , ((Ο€β‚‚ +₁ idC) ∘ (⟨ fβ€² , gβ€² ⟩ +₁ idC) ∘ h) #ᡇ ⟩ ∎ } + ⟨ ((π₁ +₁ idC) ∘ (⟨ fβ€² , gβ€² ⟩ +₁ idC) ∘ h) #ᡃ , ((Ο€β‚‚ +₁ idC) ∘ (⟨ fβ€² , gβ€² ⟩ +₁ idC) ∘ h) #ᡇ ⟩ ∎ } ; project₁ = project₁ ; projectβ‚‚ = projectβ‚‚ ; unique = unique