module Cubical.Categories.Presheaf.StrictHom.Bifunctor where
open import Cubical.Foundations.Prelude
open import Cubical.Foundations.HLevels
open import Cubical.Functions.FunExtEquiv
open import Cubical.Categories.Category
open import Cubical.Categories.Bifunctor
open import Cubical.Categories.Functor.Base
open import Cubical.Categories.NaturalTransformation
open import Cubical.Categories.Presheaf.Base
open import Cubical.Categories.Presheaf.StrictHom.Base
open import Cubical.Categories.Instances.Functors
open import Cubical.Categories.Instances.Sets
open import Cubical.Data.Sigma
private
variable
ℓC ℓC' ℓD ℓD' ℓP ℓQ ℓR : Level
open Category
open Functor
open NatTrans
open PshHomStrict
module _ {C : Category ℓC ℓC'} where
PshHomBifStrict : ∀ (ℓP ℓQ : Level) →
Bifunctor ((PRESHEAF C ℓP) ^op) (PRESHEAF C ℓQ) (SET (ℓ-max (ℓ-max (ℓ-max ℓC ℓC') ℓP) ℓQ))
PshHomBifStrict ℓP ℓQ = mkBifunctorSep BifSep
where
BifSep : BifunctorSep ((PRESHEAF C ℓP) ^op) (PRESHEAF C ℓQ) (SET (ℓ-max (ℓ-max (ℓ-max ℓC ℓC') ℓP) ℓQ))
BifSep .BifunctorSep.Bif-ob P Q = PshHomStrict P Q , isSetPshHomStrict P Q
BifSep .BifunctorSep.Bif-homL α Q β = α ⋆PshHomStrict β
BifSep .BifunctorSep.Bif-homR P β α = α ⋆PshHomStrict β
BifSep .BifunctorSep.SepBif-RL-commute α β = funExt λ γ → makePshHomStrictPath refl
BifSep .BifunctorSep.Bif-L-id = funExt λ _ → makePshHomStrictPath refl
BifSep .BifunctorSep.Bif-L-seq α α' = funExt λ _ → makePshHomStrictPath refl
BifSep .BifunctorSep.Bif-R-id = funExt λ _ → makePshHomStrictPath refl
BifSep .BifunctorSep.Bif-R-seq β β' = funExt λ _ → makePshHomStrictPath refl