{-# OPTIONS --without-K --safe #-}
open import Categories.Category
module Categories.Category.Complete.Properties.Construction {o ℓ e} (C : Category o ℓ e) where
open import Level
open import Categories.Category.Construction.Arrow using (Morphism)
open import Categories.Category.Complete using (Complete)
open import Categories.Diagram.Equalizer C using (Equalizer)
open import Categories.Diagram.Limit.Properties using (build-lim)
open import Categories.Functor using (Functor)
open import Categories.Object.Product.Indexed C using (AllProductsOf)
open import Categories.Object.Product.Indexed.Properties C using (lowerAllProductsOf)
private
variable
o′ ℓ′ e′ : Level
module _ (prods : AllProductsOf (o′ ⊔ ℓ′)) (equalizer : ∀ {A B} (f g : C [ A , B ]) → Equalizer f g) where
AllProducts×Equalizer⇒Complete : Complete o′ ℓ′ e′ C
AllProducts×Equalizer⇒Complete F = build-lim {OP = OP} {MP = MP} (equalizer _ _)
where
open Functor F
OP = lowerAllProductsOf ℓ′ prods F₀
MP = lowerAllProductsOf o′ prods λ f → F₀ (Morphism.cod f)