Other Agda modules in this section (27)
- ConeFramings
- ConeIdentifications
- ConePasting
- ConeTransport
- ConeUniversality
- Cones
- CoproductDescent
- DiagonalPullbacks
- Distributivity
- EmbeddingCharacterizations
- Embeddings
- MappingPullbacks
- NestedPullbacks
- PastingLemma
- PullbackArrowChange
- PullbackAssociativity
- PullbackCancellation
- PullbackConstructions
- PullbackFunctoriality
- PullbackSquares
- PullbackTransfer
- Pullbacks
- Representability
- RepresentabilityDiagonal
- SectionBaseChange
- UniversalConeIdentifications
- UniversalCoproducts
Chapter 1, rebuild2, checked 14 October 2026 · source revision b982f5a.
Corresponding book passages
# Disjoint coproducts Initiality compares the actual maps from the initial vertex. The specified cospan equivalence retains the disjoint cone orientation (in2,in1). The proof uses the actual inclusion pullback and coproduct right-unit comparison. It requires no strictness or initial-anima assumption. ```agda {-# OPTIONS --without-K #-} module SCT.VolumeI.Chapter01.Section06.DisjointCoproducts where open import SCT.VolumeI.Chapter01.Section01.Vocabulary hiding (_⊔_; _=_) open Operations open import SCT.VolumeI.Chapter01.Section01.Terminal open Constructions using (IsContractible; terminal-identification) open import SCT.VolumeI.Chapter01.Section02.Coherence using (id₌; comp-unitˡ; comp-unitʳ; module Composition) open Composition open import SCT.VolumeI.Chapter01.Section03.Equivalences open import SCT.VolumeI.Chapter01.Section05.Initial open import SCT.VolumeI.Chapter01.Section05.Coproducts open import SCT.VolumeI.Chapter01.Section05.Copairing open import SCT.VolumeI.Chapter01.Section05.CoproductConstructions open import SCT.VolumeI.Chapter01.Section06.Cones open import SCT.VolumeI.Chapter01.Section06.Pullbacks open import SCT.VolumeI.Chapter01.Section06.PullbackSquares open import SCT.VolumeI.Chapter01.Section06.UniversalCoproducts open import SCT.VolumeI.Chapter01.Section06.PullbackFunctoriality open import SCT.VolumeI.Chapter01.Section06.PullbackConstructions using (left-isEquiv-from-isPullback) module _ {Γ : Context} where disjoint-cone : (C D : CAT Γ) → Cone (in₂ {C = C} {D = D}) in₁ Zero disjoint-cone C D = record { left = initiate D ; right = initiate C ; match = initial-unique _ _ } module Disjointness (C D : CAT Γ) where H : MAP (C ⊔ Zero) (C ⊔ D) H = coproductMap (id C) (initiate D) unit : MAP (C ⊔ Zero) C unit = coproduct-unitʳ C inclusion-law : (in₁ ∘ unit) =₁ H inclusion-law = copair-cong (id₌ (in₁ ∘ id C)) (initial-unique _ _) ∙ copair-post (id C) (initiate C) in₁ cospan : CospanMap (in₂ {C = C} {D = D}) H in₂ in₁ cospan = record { left = id D ; right = unit ; base = id (C ⊔ D) ; left-square = (comp-unitˡ in₂) ⁻¹ ∙ comp-unitʳ in₂ ; right-square = (comp-unitˡ H) ⁻¹ ∙ inclusion-law } module F = CospanMap cospan module E = CospanEquivalence cospan (id-isEquiv D) (coproduct-unitʳ-isEquiv C) (id-isEquiv (C ⊔ D)) using (pullback-map-isEquiv) initial-source-law : ((pullback-map cospan) ∘ pullback-factor (coproductSquare₂ (id C) (initiate D))) =₁ pullback-factor (disjoint-cone C D) initial-source-law = initial-unique _ _ isPullback : IsPullback (disjoint-cone C D) isPullback = equiv-transport initial-source-law (equiv-compose (pullback-factor (coproductSquare₂ (id C) (initiate D))) (pullback-map cospan) (inclusion₂-isPullback (id C) (initiate D)) E.pullback-map-isEquiv) disjoint-isPullback : (C D : CAT Γ) → IsPullback (disjoint-cone C D) disjoint-isPullback = Disjointness.isPullback ``` ## Universality of the empty category For any functor `g : D → E`, the square with both upper vertices Zero is a pullback (`lem:Canonical_Pullback_Square`). Its factor and first projection compose to a functor into Zero. Strictness and cancellation prove that the factor is an equivalence. This consequence needs no anima hypothesis. ```agda module _ {Γ : Context} where empty-cone : {D E : CAT Γ} (g : MAP D E) → Cone (initiate E) g Zero empty-cone g = record { left = id Zero ; right = initiate _ ; match = initial-unique _ _ } empty-isPullback : {D E : CAT Γ} (g : MAP D E) → IsPullback (empty-cone g) empty-isPullback {E = E} g = equiv-cancel-left (pullback-factor (empty-cone g)) projection (into-zero-isEquiv projection) (into-zero-isEquiv (projection ∘ pullback-factor (empty-cone g))) where projection : MAP (Pullback (initiate E) g) Zero projection = pullback₁ ``` ## Collapse when the two-point category is contractible If `One ⊔ One` is contractible, its first inclusion is an equivalence. Disjointness makes the initial-to-terminal functor an equivalence as well. Its inverse gives every category a functor into Zero; strictness then makes every category contractible. The converse is the instance `One ⊔ One`. This proves `lem:2_Contractible_Implies_Everything_Contractible`. ```agda module _ {Γ : Context} where two-contractible-implies-all : IsContractible (One ⊔ One) → (C : CAT Γ) → IsContractible C two-contractible-implies-all two-contractible C = contractible-source to-zero (into-zero-isEquiv to-zero) zero-contractible where inclusion : MAP One (One ⊔ One) inclusion = in₁ inclusion-isEquiv : IsEquiv inclusion inclusion-isEquiv = equiv-cancel-left inclusion (terminate (One ⊔ One)) two-contractible (equiv-transport (terminal-identification (id One) _ ) (id-isEquiv One)) initial-terminal-isEquiv : IsEquiv (initiate One) initial-terminal-isEquiv = left-isEquiv-from-isPullback inclusion-isEquiv (disjoint-cone One One) (disjoint-isPullback One One) zero-contractible : IsContractible Zero zero-contractible = equiv-transport (terminal-identification (initiate One) (terminate Zero)) initial-terminal-isEquiv to-zero : MAP C Zero to-zero = IsEquiv.inverse initial-terminal-isEquiv ∘ terminate C ```