Other Agda modules in this section (4)
# The initial category

Initiality says that the mapping anima from Zero to any category is
contractible. Decoding its chosen point gives the initiation functor.
The actual naming equivalence transfers contractibility to the identification
anima between any two functors from Zero.

```agda
{-# OPTIONS --without-K #-}
module SCT.VolumeI.Chapter01.Section05.Initial where

open import SCT.VolumeI.Chapter01.Section01.Vocabulary hiding (_=_)
import SCT.VolumeI.Chapter01.Section01.Terms as Terms
open Terms using (Equal)
open Operations
open import SCT.VolumeI.Chapter01.Section01.Terminal using (module Constructions)
open Constructions using (IsContractible)
open import SCT.VolumeI.Chapter01.Section03.Equivalences
  using (contractible-source; contractible-unique)
open import SCT.VolumeI.Chapter01.Section03.WhiskeringEquivalence
  using (contractible-identifications)
open import SCT.VolumeI.Chapter01.Section04.MappingAnimae using (Map)
open import SCT.VolumeI.Chapter01.Section04.Points
  using (name; decode; name⁼-functor; name⁼-isEquiv)

module _ {Γ : Context} where
  postulate
    Zero : CAT Γ
    maps-from-zero-contractible : (C : CAT Γ) → IsContractible (Map Zero C)

  initiate : (C : CAT Γ) → MAP Zero C
  initiate C = decode (IsEquiv.inverse (maps-from-zero-contractible C))

  initial-identifications-contractible : {C : CAT Γ} (f g : MAP Zero C)
    → IsContractible (Equal f g)
  initial-identifications-contractible {C} f g =
    contractible-source (name⁼-functor f g) (name⁼-isEquiv f g)
      (contractible-identifications (maps-from-zero-contractible C) (name f) (name g))

  initial-unique : {C : CAT Γ} (f g : MAP Zero C) → f =₁ g
  initial-unique f g = IsEquiv.inverse (initial-identifications-contractible f g)
```

The identification anima is contractible, so two identification families
with any common categorical parameter are identified. The parameter need
not be an anima. At One this is uniqueness of individual identifications.

```agda
  module _ {A : CAT Γ} where
    open Terms.Equalities A using (_=_)

    initial-unique₂ : {C : CAT Γ} {f g : MAP Zero C}
      (α β : f = g) → α =₁ β
    initial-unique₂ {f = f} {g} =
      contractible-unique (initial-identifications-contractible f g)
```

## Strictness

Strictness is a separate assumption: every functor into Zero is an
equivalence. Applied to the second projection, it gives the product
consequence below. Initiality and its uniqueness results do not use it.
No assumption that Zero is an anima is made.

```agda
module _ {Γ : Context} where
  postulate
    into-zero-isEquiv : {C : CAT Γ} (f : MAP C Zero) → IsEquiv f

  product-zero-isEquiv : (C : CAT Γ) → IsEquiv (pr₂ {C = C} {D = Zero})
  product-zero-isEquiv C = into-zero-isEquiv pr₂
```