open import GpdCont.Prelude open import Cubical.Categories.Category.Base module GpdCont.Categories.Diagonal {ℓo ℓh} (C : Category ℓo ℓh) (ℓ : Level) where open import GpdCont.HomotopySet as HSet open import Cubical.Foundations.HLevels open import Cubical.Categories.Functor.Base open import Cubical.Categories.Adjoint.UniversalElements open import Cubical.Categories.Presheaf.Representable private module C where open Category C public ΠC : (K : hSet ℓ) → Category _ _ ΠC K .Category.ob = ⟨ K ⟩ → C.ob ΠC K .Category.Hom[_,_] x y = ∀ k → C.Hom[ x k , y k ] ΠC K .Category.id k = C.id ΠC K .Category._⋆_ f g = λ k → f k C.⋆ g k ΠC K .Category.⋆IdL f = funExt $ C.⋆IdL ∘ f ΠC K .Category.⋆IdR f = funExt $ C.⋆IdR ∘ f ΠC K .Category.⋆Assoc f g h = funExt λ k → C.⋆Assoc (f k) (g k) (h k) ΠC K .Category.isSetHom = isSetΠ λ k → C.isSetHom Δ : (K : hSet ℓ) → Functor C (ΠC K) Δ K = ΔK where ΔK : Functor _ _ ΔK .Functor.F-ob c = const c ΔK .Functor.F-hom f = const f ΔK .Functor.F-id = refl ΔK .Functor.F-seq _ _ = refl