module GpdCont.TwoCategory.Family.Functor where
open import GpdCont.Prelude
open import GpdCont.TwoCategory.Base
open import GpdCont.TwoCategory.StrictFunctor
open import GpdCont.TwoCategory.Displayed.StrictFunctor
open import GpdCont.TwoCategory.Family.Base
open import GpdCont.TwoCategory.HomotopySet using (SetEq)
import Cubical.Data.Equality as Eq
module _
{ℓo ℓh ℓr ℓo′ ℓh′ ℓr′}
{C : TwoCategory ℓo ℓh ℓr}
{D : TwoCategory ℓo′ ℓh′ ℓr′}
(F : StrictFunctor C D)
(ℓ : Level)
where
private
module F = StrictFunctor F
module SetEq = TwoCategory (SetEq ℓ)
FamFunctorᴰ : StrictFunctorᴰ (idStrictFunctor (SetEq ℓ)) (Famᴰ C ℓ) (Famᴰ D ℓ)
FamFunctorᴰ .StrictFunctorᴰ.F-obᴰ xᴰ = F.₀ ∘ xᴰ
FamFunctorᴰ .StrictFunctorᴰ.F-homᴰ fᴰ = F.₁ ∘ fᴰ
FamFunctorᴰ .StrictFunctorᴰ.F-relᴰ {r = Eq.refl} rᴰ = F.₂ ∘ rᴰ
FamFunctorᴰ .StrictFunctorᴰ.F-rel-idᴰ fᴰ = funExt λ j → F.F-rel-id {f = fᴰ j}
FamFunctorᴰ .StrictFunctorᴰ.F-rel-transᴰ {r = Eq.refl} {s = Eq.refl} rᴰ sᴰ = funExt λ j → F.F-rel-trans (rᴰ j) (sᴰ j)
FamFunctorᴰ .StrictFunctorᴰ.F-hom-compᴰ {f} fᴰ gᴰ = funExt λ j → F.F-hom-comp (fᴰ j) (gᴰ (f j))
FamFunctorᴰ .StrictFunctorᴰ.F-hom-idᴰ xᴰ = funExt λ j → F.F-hom-id (xᴰ j)
FamFunctorᴰ .StrictFunctorᴰ.F-assoc-filler-leftᴰ fᴰ gᴰ hᴰ .fst = funExt λ j → F.F-assoc-filler-left (fᴰ j) (gᴰ _) (hᴰ _) .fst
FamFunctorᴰ .StrictFunctorᴰ.F-assoc-filler-leftᴰ fᴰ gᴰ hᴰ .snd = funExtSquare λ j → F.F-assoc-filler-left (fᴰ j) (gᴰ _) (hᴰ _) .snd
FamFunctorᴰ .StrictFunctorᴰ.F-assoc-filler-rightᴰ fᴰ gᴰ hᴰ .fst = funExt λ j → F.F-assoc-filler-right (fᴰ j) (gᴰ _) (hᴰ _) .fst
FamFunctorᴰ .StrictFunctorᴰ.F-assoc-filler-rightᴰ fᴰ gᴰ hᴰ .snd = funExtSquare λ j → F.F-assoc-filler-right (fᴰ j) (gᴰ _) (hᴰ _) .snd
FamFunctorᴰ .StrictFunctorᴰ.F-assocᴰ fᴰ gᴰ hᴰ = funExtSquare λ j → F.F-assoc (fᴰ j) (gᴰ _) (hᴰ _)
FamFunctorᴰ .StrictFunctorᴰ.F-unit-left-fillerᴰ fᴰ .fst = funExt λ j → F.F-unit-left-filler (fᴰ j) .fst
FamFunctorᴰ .StrictFunctorᴰ.F-unit-left-fillerᴰ fᴰ .snd = funExtSquare λ j → F.F-unit-left-filler (fᴰ j) .snd
FamFunctorᴰ .StrictFunctorᴰ.F-unit-leftᴰ fᴰ = funExtSquare λ j → F.F-unit-left (fᴰ j)
FamFunctorᴰ .StrictFunctorᴰ.F-unit-right-fillerᴰ fᴰ .fst = funExt λ j → F.F-unit-right-filler (fᴰ j) .fst
FamFunctorᴰ .StrictFunctorᴰ.F-unit-right-fillerᴰ fᴰ .snd = funExtSquare λ j → F.F-unit-right-filler (fᴰ j) .snd
FamFunctorᴰ .StrictFunctorᴰ.F-unit-rightᴰ fᴰ = funExtSquare λ j → F.F-unit-right (fᴰ j)
FamFunctor : StrictFunctor (Fam C ℓ) (Fam D ℓ)
FamFunctor = StrictFunctorᴰ.toTotalFunctor FamFunctorᴰ