{-# OPTIONS --safe --lossy-unification #-}
module Cubical.Categories.Displayed.Limits.BinProduct.Adjoint where
open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Equiv
open import Cubical.Foundations.Equiv.Dependent
open import Cubical.Foundations.Function
open import Cubical.Foundations.HLevels
open import Cubical.Data.Sigma
open import Cubical.Categories.Category.Base
open import Cubical.Categories.Constructions.BinProduct
open import Cubical.Categories.Constructions.Fiber
open import Cubical.Categories.Adjoint.UniversalElements
open import Cubical.Categories.Limits.BinProduct.Adjoint
open import Cubical.Categories.Presheaf.Representable
open import Cubical.Categories.Displayed.Base
import Cubical.Categories.Displayed.BinProduct as BP
open import Cubical.Categories.Displayed.Bifunctor
open import Cubical.Categories.Displayed.Functor
open import Cubical.Categories.Displayed.Functor.More
open import Cubical.Categories.Displayed.FunctorComprehension
open import Cubical.Categories.Displayed.Adjoint.More
open import Cubical.Categories.Displayed.Constructions.BinProduct.More
open import Cubical.Categories.Displayed.Presheaf
open import Cubical.Categories.Displayed.Presheaf.Constructions
open import Cubical.Categories.Displayed.Profunctor
open import Cubical.Categories.Displayed.Instances.Sets.Base
import Cubical.Categories.Displayed.Reasoning as HomᴰReasoning
private
variable
ℓC ℓC' ℓCᴰ ℓCᴰ' ℓD ℓD' ℓDᴰ ℓDᴰ' : Level
open Category
open UniversalElement
open UniversalElementᴰ
open UniversalElementⱽ
open isIsoOver
module _ {C : Category ℓC ℓC'} (Cᴰ : Categoryᴰ C ℓD ℓD') where
private
module C = Category C
module Cᴰ = Categoryᴰ Cᴰ
module R = HomᴰReasoning Cᴰ
BinProductᴰ : ∀ {c12} → BinProduct C c12
→ (Cᴰ.ob[ c12 .fst ] × Cᴰ.ob[ c12 .snd ])
→ Type _
BinProductᴰ = RightAdjointAtᴰ (ΔCᴰ Cᴰ)
BinProductᴰProf : ∀ {c12} → BinProduct C c12
→ Profunctorᴰ (RightAdjointProf (Δ C)) (Cᴰ BP.×Cᴰ Cᴰ) Cᴰ ℓD'
BinProductᴰProf bp = RightAdjointProfᴰ (ΔCᴰ Cᴰ)
BinProductⱽ : ∀ {c} → (Cᴰ.ob[ c ] × Cᴰ.ob[ c ]) → Type _
BinProductⱽ = RightAdjointAtⱽ (Δᴰ Cᴰ)
BinProductProfⱽ : Profunctorⱽ (Cᴰ BP.×ᴰ Cᴰ) Cᴰ ℓD'
BinProductProfⱽ = RightAdjointProfⱽ (Δᴰ Cᴰ)