{-# OPTIONS --without-K --safe #-}
open import Categories.Category
module Categories.Category.Cocomplete.Finitely {o ℓ e} (C : Category o ℓ e) where
open import Level
open import Categories.Category.Cocartesian C
open import Categories.Diagram.Coequalizer C
open import Categories.Diagram.Pushout C
open import Categories.Diagram.Pushout.Properties C
open Category C
record FinitelyCocomplete : Set (levelOfTerm C) where
field
cocartesian : Cocartesian
coequalizer : ∀ {A B} (f g : A ⇒ B) → Coequalizer f g
module cocartesian = Cocartesian cocartesian
module coequalizer {A B} (f g : A ⇒ B) = Coequalizer (coequalizer f g)
open cocartesian public
pushout : ∀ {X Y Z} (f : X ⇒ Y) (g : X ⇒ Z) → Pushout f g
pushout f g = Coproduct×Coequalizer⇒Pushout coproduct (coequalizer _ _)
module pushout {X Y Z} (f : X ⇒ Y) (g : X ⇒ Z) = Pushout (pushout f g)