{-# OPTIONS --without-K --safe #-} open import Categories.Category module Categories.Object.Initial.Colimit {o ℓ e} (C : Category o ℓ e) where open import Categories.Category.Construction.Cocones using (Cocone; Cocone⇒) open import Categories.Category.Instance.Zero using (Zero) open import Categories.Diagram.Colimit using (Colimit) open import Categories.Functor.Core using (Functor) open import Categories.Object.Initial C private open module C = Category C module _ {o′ ℓ′ e′} {F : Functor (Zero {o′} {ℓ′} {e′}) C} where colimit⇒⊥ : Colimit F → Initial colimit⇒⊥ L = record { ⊥ = coapex ; ⊥-is-initial = record { ! = rep record { coapex = record { ψ = λ () ; commute = λ { {()} } } } ; !-unique = λ f → initial.!-unique record { arr = f ; commute = λ { {()} } } } } where open Colimit L module _ {o′ ℓ′ e′} {F : Functor (Zero {o′} {ℓ′} {e′}) C} where ⊥⇒colimit : Initial → Colimit F ⊥⇒colimit t = record { initial = record { ⊥ = record { N = ⊥ ; coapex = record { ψ = λ () ; commute = λ { {()} } } } ; ⊥-is-initial = record { ! = λ {K} → let open Cocone F K in record { arr = ! ; commute = λ { {()} } } ; !-unique = λ f → let module f = Cocone⇒ F f in !-unique f.arr } } } where open Initial t