Other Agda modules in this section (9)
Complete compiler-highlighted source. Follow a symbol to its declaration.
Corresponding book passages
# Associativity of coproducts The two maps are nested copairs. Each inverse comparison follows by restricting to the three summands, keeping the intermediate copair beta comparisons. This proves the associativity part of `exercise:Associativity_Coproducts`. ```agda {-# OPTIONS --safe --without-K #-} open import Agda.Primitive using (Level) open import SCT.VolumeI.Chapter01.Theory using (Theory) import SCT.VolumeI.Chapter01.Section04.MappingAnimae as Mapping import SCT.VolumeI.Chapter01.Section05.Setup as Setup import SCT.VolumeI.Chapter01.Section05.Coproducts as Coproducts module SCT.VolumeI.Chapter01.Section05.CoproductAssociativity {c m a : Level} (𝒯 : Theory c m a) (M : Mapping.MappingAnimae 𝒯) (B : Coproducts.CoproductStructure 𝒯 M) where open Setup 𝒯 M open Coproducts.CoproductStructure B open import SCT.VolumeI.Chapter01.Section05.CoproductCalculus 𝒯 M B module CoproductAssociativity (C D E : CAT) where Source = (C ⊔ D) ⊔ E Target = C ⊔ (D ⊔ E) forward-left : MAP (C ⊔ D) Target forward-left = copair in₁ (in₂ ∘ in₁) backward-right : MAP (D ⊔ E) Source backward-right = copair (in₁ ∘ in₂) in₂ forward : MAP Source Target forward = copair forward-left (in₂ ∘ in₂) backward : MAP Target Source backward = copair (in₁ ∘ in₁) backward-right backward-forward-left : (backward ∘ forward-left) =₁ in₁ backward-forward-left = copair-η in₁ ∙ (copair-cong (copair-β₁ (in₁ ∘ in₁) backward-right) (copair-β₁ (in₁ ∘ in₂) in₂ ∙ copair-pre₂ (in₁ ∘ in₁) backward-right in₁) ∙ copair-post in₁ (in₂ ∘ in₁) backward) backward-forward-right : (backward ∘ (in₂ ∘ in₂)) =₁ in₂ backward-forward-right = copair-β₂ (in₁ ∘ in₂) in₂ ∙ copair-pre₂ (in₁ ∘ in₁) backward-right in₂ backward-forward : (backward ∘ forward) =₁ (id Source) backward-forward = copair-inclusions (C ⊔ D) E ∙ (copair-cong backward-forward-left backward-forward-right ∙ copair-post forward-left (in₂ ∘ in₂) backward) forward-backward-left : (forward ∘ (in₁ ∘ in₁)) =₁ in₁ forward-backward-left = copair-β₁ in₁ (in₂ ∘ in₁) ∙ copair-pre₁ forward-left (in₂ ∘ in₂) in₁ forward-backward-right : (forward ∘ backward-right) =₁ in₂ forward-backward-right = copair-η in₂ ∙ (copair-cong (copair-β₂ in₁ (in₂ ∘ in₁) ∙ copair-pre₁ forward-left (in₂ ∘ in₂) in₂) (copair-β₂ forward-left (in₂ ∘ in₂)) ∙ copair-post (in₁ ∘ in₂) in₂ forward) forward-backward : (forward ∘ backward) =₁ (id Target) forward-backward = copair-inclusions C (D ⊔ E) ∙ (copair-cong forward-backward-left forward-backward-right ∙ copair-post (in₁ ∘ in₁) backward-right forward) forward-isEquiv : IsEquiv forward forward-isEquiv = record { inverse = backward ; sectionIso = backward-forward ⁻¹ ; retractionIso = forward-backward ⁻¹ } ```