module Cat.Functor.Bifunctor.Duality {oβ hβ oβ hβ oβ hβ : _} {C : Precategory oβ hβ} {D : Precategory oβ hβ} {E : Precategory oβ hβ} (F : Bifunctor C D E) where
private module C = Precategory C module D = Precategory D module E = Precategory E module F = Bifunctor F open Make-bifunctor
Dualityπ
When considering the opposite functor of a
bifunctor,
we would prefer to get a bifunctor
(see also opposite
product category).
bop : Bifunctor (C ^op) (D ^op) (E ^op) bop = make-bifunctor Ξ» where .Fβ β F.Fβ .lmap β F.lmap .rmap β F.rmap .lmap-id β F.lmap-id .rmap-id β F.rmap-id .lmap-β f g β F.lmap-β _ _ .rmap-β f g β F.rmap-β _ _ .lrmap f g β F.rlmap g f
This is compatible with fixing objects in the following sense:
bop-Left : β {d : D.Ob} β Functor.op (F.Left d) β‘ Bifunctor.Left bop d bop-Left = Functor-path (Ξ» x β refl) (Ξ» f β refl) bop-Right : β {c : C.Ob} β Functor.op (F.Right c) β‘ Bifunctor.Right bop c bop-Right = Functor-path (Ξ» x β refl) (Ξ» f β refl)