module Cat.Diagram.Limit.Terminal {o h} (C : Precategory o h) where
Terminal objects are limits🔗
A terminal object is equivalently defined as a limit of the empty diagram.
is-limit→is-terminal : ∀ {T : Ob} {eps : Const T => ¡F} → is-limit {C = C} ¡F T eps → is-terminal C T is-limit→is-terminal lim Y = contr (lim.universal (λ ()) (λ ())) (λ _ → sym (lim.unique _ _ _ λ ())) where module lim = is-limit lim is-terminal→is-limit : ∀ {T : Ob} {F : Functor ⊥Cat C} → is-terminal C T → is-limit {C = C} F T ¡nt is-terminal→is-limit {T} {F} term = to-is-limitp ml λ {} where open make-is-limit ml : make-is-limit F T ml .ψ () ml .commutes () ml .universal _ _ = term _ .centre ml .factors {} ml .unique _ _ _ _ = sym (term _ .paths _) Limit→Terminal : Limit {C = C} ¡F → Terminal C Limit→Terminal lim .top = Limit.apex lim Limit→Terminal lim .has⊤ = is-limit→is-terminal (Limit.has-limit lim) Terminal→Limit : ∀ {F : Functor ⊥Cat C} → Terminal C → Limit {C = C} F Terminal→Limit term = to-limit (is-terminal→is-limit (term .has⊤))