module Cat.Diagram.Colimit.Initial {o h} (C : Precategory o h) where
Initial objects are colimits🔗
An initial object is equivalently defined as a colimit of the empty diagram.
is-colimit→is-initial: ∀ {T : Ob} {eta : ¡F => Const T}
→ is-colimit {C = C} ¡F T eta
→ is-initial C T
= contr (colim.universal (λ ()) (λ ()))
is-colimit→is-initial colim Y (λ _ → sym (colim.unique _ _ _ λ ()))
where module colim = is-colimit colim
: ∀ {T : Ob} {F : Functor ⊥Cat C} → is-initial C T → is-colimit {C = C} F T ¡nt
is-initial→is-colimit {T} {F} init = to-is-colimitp mc λ {} where
is-initial→is-colimit open make-is-colimit
: make-is-colimit F T
mc .ψ ()
mc .commutes ()
mc .universal _ _ = init _ .centre
mc .factors {}
mc .unique _ _ _ _ = sym (init _ .paths _)
mc
: Colimit {C = C} ¡F → Initial C
Colimit→Initial .bot = Colimit.coapex colim
Colimit→Initial colim .has⊥ = is-colimit→is-initial (Colimit.has-colimit colim)
Colimit→Initial colim
: ∀ {F : Functor ⊥Cat C} → Initial C → Colimit {C = C} F
Initial→Colimit = to-colimit (is-initial→is-colimit (init .has⊥)) Initial→Colimit init