module Cat.Bi.Displayed.Base where
Displayed bicategoriesπ
The definition here was adapted from the one given by Ahrens et al. (2022)
Just as a displayed category allows us to describe categorical structure over the category a displayed bicategory allows us to describe bicategorical structure over the bicategory
open Functor
open Displayed-functor
open _=[_]=>_
open make-natural-iso[_]
module _ where
: β {o o' d d' β β'} {O : Type o} {H : O β O β Precategory β β'}
compose-assocΛ‘' β {O' : O β Type o'} {H' : β {a b} β O' a β O' b β Displayed (H a b) d d'}
β {F : β {A B C} β Functor (H B C ΓαΆ H A B) (H A C)}
β (F' : β {A B C} {A' : O' A} {B' : O' B} {C' : O' C} β Displayed-functor F (H' B' C' Γα΅α΄° H' A' B') (H' A' C'))
β β {A B C D} {A' : O' A} {B' : O' B} {C' : O' C} {D' : O' D}
β Displayed-functor (compose-assocΛ‘ {O = O} {H = H} F) (H' C' D' Γα΅α΄° H' B' C' Γα΅α΄° H' A' B') (H' A' D')
.Fβ' (F , G , H) = F' .Fβ' (F' .Fβ' (F , G) , H)
compose-assocΛ‘' F' .Fβ' (f , g , h) = F' .Fβ' (F' .Fβ' (f , g) , h)
compose-assocΛ‘' F' {H' = H'} F' {A' = A'} {D' = D'} .F-id' =
compose-assocΛ‘' (apd (Ξ» _ β F' .Fβ') (F' .F-id' ,β refl) β[] (F' .F-id'))
cast[] where
open DR (H' A' D')
{H' = H'} F' {A' = A'} {D' = D'} .F-β' =
compose-assocΛ‘' (apd (Ξ» _ β F' .Fβ') (F' .F-β' ,β refl) β[] F' .F-β')
cast[] where
open DR (H' A' D')
: β {o o' d d' β β'} {O : Type o} {H : O β O β Precategory β β'}
compose-assocΚ³' β {O' : O β Type o'} {H' : β {a b} β O' a β O' b β Displayed (H a b) d d'}
β {F : β {A B C} β Functor (H B C ΓαΆ H A B) (H A C)}
β (F' : β {A B C} {A' : O' A} {B' : O' B} {C' : O' C}
β Displayed-functor F (H' B' C' Γα΅α΄° H' A' B') (H' A' C'))
β β {A B C D} {A' : O' A} {B' : O' B} {C' : O' C} {D' : O' D}
β Displayed-functor (compose-assocΚ³ {O = O} {H = H} F)
(H' C' D' Γα΅α΄° H' B' C' Γα΅α΄° H' A' B') (H' A' D')
.Fβ' (F , G , H) = F' .Fβ' (F , F' .Fβ' (G , H))
compose-assocΚ³' F' .Fβ' (f , g , h) = F' .Fβ' (f , F' .Fβ' (g , h))
compose-assocΚ³' F' {H' = H'} F' {A' = A'} {D' = D'} .F-id' =
compose-assocΚ³' (apd (Ξ» _ β F' .Fβ') (refl ,β F' .F-id') β[] F' .F-id')
cast[] where
open DR (H' A' D')
{H' = H'} F' {A' = A'} {D' = D'} .F-β' =
compose-assocΚ³' (apd (Ξ» _ β F' .Fβ') (refl ,β F' .F-β') β[] F' .F-β')
cast[] where
open DR (H' A' D')
record Bidisplayed {o oh βh} (B : Prebicategory o oh βh) o' oh' βh' : Type (lsuc (o' β oh' β βh') β o β oh β βh) where
no-eta-equality
open Prebicategory B
For each object of the base bicateogry, we have a type of displayed objects indexed over it.
field
_] : Ob β Type o' Ob[
For any two displayed objects, we have a category displayed over the category of their bases.
_,_] : β {A B} β Ob[ A ] β Ob[ B ] β Displayed (Hom A B) oh' βh'
Hom[
module Hom[] {A B} {A' : Ob[ A ]} {B' : Ob[ B ]} = Displayed (Hom[ A' , B' ])
The displayed objects of these displayed categories are the displayed 1-cells. The displayed morphims are the displayed 2-cells.
_[_]β¦_ : β {A B} β Ob[ A ] β (A β¦ B) β Ob[ B ] β Type _
= Hom[ A' , B' ] .Displayed.Ob[_] f
A' [ f ]β¦ B'
_[_]β_ : β {A B} {f g : A β¦ B}
β {A' : Ob[ A ]} {B' : Ob[ B ]}
β A' [ f ]β¦ B' β (f β g) β A' [ g ]β¦ B'
β Type _
_[_]β_ {A' = A'} {B' = B'} f' Ξ± g' = Hom[ A' , B' ] .Displayed.Hom[_] Ξ± f' g'
We require an identity 1-cell displayed over the identity 1-cell of the base bicategory.
field
: β {x} {x' : Ob[ x ]} β x' [ id ]β¦ x' β¦id'
We get displayed identity 2-cells automatically from the displayed structure.
: β {A B} {A' : Ob[ A ]} {B' : Ob[ B ]}
βid' β {f : A β¦ B} {f' : A' [ f ]β¦ B'}
β f' [ Hom.id ]β f'
= Hom[].id' βid'
The displayed composition functor is between total products of displayed categories, and lies over the composition functor of the base bicategory.
field
: β {A B C} {A' : Ob[ A ]} {B' : Ob[ B ]} {C' : Ob[ C ]}
compose' β Displayed-functor compose (Hom[ B' , C' ] Γα΅α΄° Hom[ A' , B' ]) Hom[ A' , C' ]
module compose' {A} {B} {C} {A'} {B'} {C'} = Displayed-functor (compose' {A} {B} {C} {A'} {B'} {C'})
Displayed 1-cell and 2-cell composition proceeds in the same way.
_β'_ : β {A B C A' B' C'} {f : B β¦ C} {g : A β¦ B} β (B' [ f ]β¦ C') β (A' [ g ]β¦ B') β A' [ f β g ]β¦ C'
_β'_ f' g' = compose'.β' (f' , g')
_β'_ : β {A B A' B'} {f g h : A β¦ B}
β {f' : A' [ f ]β¦ B'} {g' : A' [ g ]β¦ B'} {h' : A' [ h ]β¦ B'}
β {Ξ² : g β h} {Ξ± : f β g}
β g' [ Ξ² ]β h' β f' [ Ξ± ]β g'
β f' [ Ξ² β Ξ± ]β h'
_β'_ = Hom[]._β'_
_β'_ : β {A B C A' B' C'}
β {fβ fβ : B β¦ C} {Ξ² : fβ β fβ}
β {gβ gβ : A β¦ B} {Ξ± : gβ β gβ}
β {fβ' : B' [ fβ ]β¦ C'} {fβ' : B' [ fβ ]β¦ C'}
β {gβ' : A' [ gβ ]β¦ B'} {gβ' : A' [ gβ ]β¦ B'}
β (Ξ²' : fβ' [ Ξ² ]β fβ') (Ξ±' : gβ' [ Ξ± ]β gβ')
β (fβ' β' gβ') [ Ξ² β Ξ± ]β (fβ' β' gβ')
_β'_ Ξ±' Ξ²' = compose'.β' (Ξ±' , Ξ²')
infixr 30 _β'_
infixr 25 _β'_
infix 35 _β'_ _βΆ'_
_βΆ'_ : β {A B C A' B' C'} {f : B β¦ C} {gβ gβ : A β¦ B} {Ξ± : gβ β gβ}
β {gβ' : A' [ gβ ]β¦ B'} {gβ' : A' [ gβ ]β¦ B'}
β (f' : B' [ f ]β¦ C')
β (Ξ±' : gβ' [ Ξ± ]β gβ')
β f' β' gβ' [ f βΆ Ξ± ]β f' β' gβ'
_βΆ'_ f' Ξ±' = compose'.β' (βid' , Ξ±')
_β'_ : β {A B C A' B' C'} {g : A β¦ B} {fβ fβ : B β¦ C} {Ξ² : fβ β fβ}
β {fβ' : B' [ fβ ]β¦ C'} {fβ' : B' [ fβ ]β¦ C'}
β (Ξ²' : fβ' [ Ξ² ]β fβ')
β (g' : A' [ g ]β¦ B')
β fβ' β' g' [ Ξ² β g ]β fβ' β' g'
_β'_ Ξ²' g' = compose'.β' (Ξ²' , βid')
The unitors and associator are displayed isomorphims over the unitors and associator the base bicategory.
field
: β {A B} {A' : Ob[ A ]} {B' : Ob[ B ]} β Id' {β° = Hom[ A' , B' ]} β
[ unitor-l ]βΏ (Right' compose' β¦id')
unitor-l' : β {A B} {A' : Ob[ A ]} {B' : Ob[ B ]} β Id' {β° = Hom[ A' , B' ]} β
[ unitor-r ]βΏ (Left' compose' β¦id')
unitor-r'
: β {A B C D} {A' : Ob[ A ]} {B' : Ob[ B ]} {C' : Ob[ C ]} {D' : Ob[ D ]}
associator' β _β
[_]_ Disp[ Hom[ C' , D' ] Γα΅α΄° (Hom[ B' , C' ] Γα΅α΄° Hom[ A' , B' ]) , Hom[ A' , D' ] ]
(compose-assocΛ‘' {H' = Hom[_,_]} compose') associator (compose-assocΚ³' {H' = Hom[_,_]} compose')
module unitor-l' {A} {B} {A'} {B'} = _β
[_]_ (unitor-l' {A} {B} {A'} {B'})
module unitor-r' {A} {B} {A'} {B'} = _β
[_]_ (unitor-r' {A} {B} {A'} {B'})
module associator' {A} {B} {C} {D} {A'} {B'} {C'} {D'} = _β
[_]_ (associator' {A} {B} {C} {D} {A'} {B'} {C'} {D'})
The associated displayed cell combinators proceed in the same way.
: β {A B A' B'} {f : A β¦ B} (f' : A' [ f ]β¦ B') β (β¦id' β' f') [ Ξ»β f ]β f'
Ξ»β' = unitor-l'.from' .Ξ·'
Ξ»β'
: β {A B A' B'} {f : A β¦ B}
Ξ»β' β (f' : A' [ f ]β¦ B')
β f' [ Ξ»β f ]β (β¦id' β' f')
= unitor-l'.to' .Ξ·'
Ξ»β'
: β {A B A' B'} {f : A β¦ B}
Οβ' β (f' : A' [ f ]β¦ B')
β (f' β' β¦id') [ Οβ f ]β f'
= unitor-r'.from' .Ξ·'
Οβ'
: β {A B A' B'} {f : A β¦ B}
Οβ' β (f' : A' [ f ]β¦ B')
β f' [ Οβ f ]β (f' β' β¦id')
= unitor-r'.to' .Ξ·'
Οβ'
: β {A B A' B'} {fβ fβ : A β¦ B} {Ξ² : fβ β fβ}
Οβnat' β {fβ' : A' [ fβ ]β¦ B'} {fβ' : A' [ fβ ]β¦ B'}
β (Ξ²' : fβ' [ Ξ² ]β fβ')
β (Οβ' _ β' (Ξ²' β' β¦id')) Hom[].β‘[ Οβnat Ξ² ] (Ξ²' β' Οβ' _)
= unitor-r'.from' .is-natural' _ _ Ξ²'
Οβnat' Ξ²'
: β {A B A' B'} {fβ fβ : A β¦ B} {Ξ² : fβ β fβ}
Ξ»βnat' β {fβ' : A' [ fβ ]β¦ B'} {fβ' : A' [ fβ ]β¦ B'}
β (Ξ²' : fβ' [ Ξ² ]β fβ')
β (Ξ»β' _ β' (β¦id' βΆ' Ξ²')) Hom[].β‘[ Ξ»βnat Ξ² ] (Ξ²' β' Ξ»β' _)
= unitor-l'.from' .is-natural' _ _ Ξ²'
Ξ»βnat' Ξ²'
: β {A B A' B'} {fβ fβ : A β¦ B} {Ξ² : fβ β fβ}
Οβnat' β {fβ' : A' [ fβ ]β¦ B'} {fβ' : A' [ fβ ]β¦ B'}
β (Ξ²' : fβ' [ Ξ² ]β fβ')
β (Οβ' _ β' Ξ²') Hom[].β‘[ Οβnat Ξ² ] ((Ξ²' β' β¦id') β' Οβ' _)
= unitor-r'.to' .is-natural' _ _ Ξ²'
Οβnat' Ξ²'
: β {A B A' B'} {fβ fβ : A β¦ B} {Ξ² : fβ β fβ}
Ξ»βnat' β {fβ' : A' [ fβ ]β¦ B'} {fβ' : A' [ fβ ]β¦ B'}
β (Ξ²' : fβ' [ Ξ² ]β fβ')
β (Ξ»β' _ β' Ξ²') Hom[].β‘[ Ξ»βnat Ξ² ] ((β¦id' βΆ' Ξ²') β' Ξ»β' _)
= unitor-l'.to' .is-natural' _ _ Ξ²'
Ξ»βnat' Ξ²'
: β {A B C D A' B' C' D'}
Ξ±β' {f : C β¦ D} {g : B β¦ C} {h : A β¦ B}
β (f' : C' [ f ]β¦ D') (g' : B' [ g ]β¦ C') (h' : A' [ h ]β¦ B')
β ((f' β' g') β' h') [ Ξ±β f g h ]β (f' β' (g' β' h'))
= associator'.to' .Ξ·' (f' , g' , h')
Ξ±β' f' g' h'
: β {A B C D A' B' C' D'}
Ξ±β' {f : C β¦ D} {g : B β¦ C} {h : A β¦ B}
β (f' : C' [ f ]β¦ D') (g' : B' [ g ]β¦ C') (h' : A' [ h ]β¦ B')
β (f' β' (g' β' h')) [ Ξ±β f g h ]β ((f' β' g') β' h')
= associator'.from' .Ξ·' (f' , g' , h')
Ξ±β' f' g' h'
: β {A B C D A' B' C' D'}
Ξ±βnat' {fβ fβ : C β¦ D} {gβ gβ : B β¦ C} {hβ hβ : A β¦ B}
{Ξ² : fβ β fβ} {Ξ³ : gβ β gβ} {Ξ΄ : hβ β hβ}
{fβ' : C' [ fβ ]β¦ D'} {fβ' : C' [ fβ ]β¦ D'}
{gβ' : B' [ gβ ]β¦ C'} {gβ' : B' [ gβ ]β¦ C'}
{hβ' : A' [ hβ ]β¦ B'} {hβ' : A' [ hβ ]β¦ B'}
β (Ξ²' : fβ' [ Ξ² ]β fβ') (Ξ³' : gβ' [ Ξ³ ]β gβ') (Ξ΄' : hβ' [ Ξ΄ ]β hβ')
β (Ξ±β' _ _ _ β' (Ξ²' β' (Ξ³' β' Ξ΄'))) Hom[].β‘[ Ξ±βnat Ξ² Ξ³ Ξ΄ ]
(((Ξ²' β' Ξ³') β' Ξ΄') β' Ξ±β' _ _ _)
=
Ξ±βnat' Ξ²' Ξ³' Ξ΄' .from' .is-natural' (_ , _ , _) (_ , _ , _) (Ξ²' , Ξ³' , Ξ΄')
associator'
: β {A B C D A' B' C' D'}
Ξ±βnat' {fβ fβ : C β¦ D} {gβ gβ : B β¦ C} {hβ hβ : A β¦ B}
{Ξ² : fβ β fβ} {Ξ³ : gβ β gβ} {Ξ΄ : hβ β hβ}
{fβ' : C' [ fβ ]β¦ D'} {fβ' : C' [ fβ ]β¦ D'}
{gβ' : B' [ gβ ]β¦ C'} {gβ' : B' [ gβ ]β¦ C'}
{hβ' : A' [ hβ ]β¦ B'} {hβ' : A' [ hβ ]β¦ B'}
β (Ξ²' : fβ' [ Ξ² ]β fβ') (Ξ³' : gβ' [ Ξ³ ]β gβ') (Ξ΄' : hβ' [ Ξ΄ ]β hβ')
β (Ξ±β' _ _ _ β' ((Ξ²' β' Ξ³') β' Ξ΄')) Hom[].β‘[ Ξ±βnat Ξ² Ξ³ Ξ΄ ]
((Ξ²' β' (Ξ³' β' Ξ΄')) β' Ξ±β' _ _ _)
=
Ξ±βnat' Ξ²' Ξ³' Ξ΄' .to' .is-natural' (_ , _ , _) (_ , _ , _) (Ξ²' , Ξ³' , Ξ΄') associator'
As do the triangle and pentagon identities.
field
triangle' : β {A B C A' B' C'} {f : B β¦ C} {g : A β¦ B}
β (f' : B' [ f ]β¦ C') (g' : A' [ g ]β¦ B')
β ((Οβ' f' β' g') β' Ξ±β' f' β¦id' g') Hom[].β‘[ triangle f g ] (f' βΆ' Ξ»β' g')
pentagon': β {A B C D E A' B' C' D' E'}
β {f : D β¦ E} {g : C β¦ D} {h : B β¦ C} {i : A β¦ B}
β (f' : D' [ f ]β¦ E')
β (g' : C' [ g ]β¦ D')
β (h' : B' [ h ]β¦ C')
β (i' : A' [ i ]β¦ B')
β ((Ξ±β' f' g' h' β' i') β' Ξ±β' f' (g' β' h') i' β' (f' βΆ' Ξ±β' g' h' i'))
.β‘[ pentagon f g h i ]
Hom[](Ξ±β' (f' β' g') h' i' β' Ξ±β' f' g' (h' β' i'))
The displayed bicategory of displayed categoriesπ
Displayed categories naturally assemble into a displayed biacategory over with displayed functor categories as
open Bidisplayed hiding (_β'_)
: β o β o' β' β Bidisplayed (Cat o β) _ _ _
Displayed-cat .Ob[_] C = Displayed C o' β'
Displayed-cat o β o' β' .Hom[_,_] D E = Disp[ D , E ]
Displayed-cat o β o' β' .β¦id' = Id'
Displayed-cat o β o' β' .compose' = Fβ'-functor
Displayed-cat o β o' β' .unitor-l' {B' = B'} = to-natural-iso' ni where
Displayed-cat o β o' β' open DR B'
: make-natural-iso[ _ ] _ _
ni .eta' x' = NT' (Ξ» _ β id') Ξ» _ _ _ β id-comm-sym[]
ni .inv' x' = NT' (Ξ» _ β id') Ξ» _ _ _ β id-comm-sym[]
ni .etaβinv' x' = Nat'-path Ξ» x'' β idl' _
ni .invβeta' x' = Nat'-path Ξ» x'' β idl' _
ni .natural' x' y' f' = Nat'-path Ξ» x'' β cast[] $ symP $ (idr' _ β[] id-comm[])
ni
.unitor-r' {B' = B'} = to-natural-iso' ni where
Displayed-cat o β o' β' open DR B'
: make-natural-iso[ _ ] _ _
ni .eta' x' = NT' (Ξ» _ β id') Ξ» _ _ _ β id-comm-sym[]
ni .inv' x' = NT' (Ξ» _ β id') Ξ» _ _ _ β id-comm-sym[]
ni .etaβinv' x' = Nat'-path Ξ» x'' β idl' _
ni .invβeta' x' = Nat'-path Ξ» x'' β idl' _
ni .natural' x' y' f' = Nat'-path Ξ» x'' β cast[] $ (idl' _ β[] symP (idr' _ β[] ((y' .F-id' β©β'β¨refl) β[] idl' _)))
ni
.associator' {C' = C'} {D' = D'} = to-natural-iso' ni where
Displayed-cat o β o' β' open DR D'
module C' = Displayed C'
: make-natural-iso[ _ ] _ _
ni .eta' x' = NT' (Ξ» _ β id') Ξ» _ _ _ β id-comm-sym[]
ni .inv' x' = NT' (Ξ» _ β id') Ξ» _ _ _ β id-comm-sym[]
ni .etaβinv' x' = Nat'-path (Ξ» _ β idl' _)
ni .invβeta' x' = Nat'-path (Ξ» _ β idl' _)
ni .natural' (xβ , xβ , xβ) (yβ , yβ , yβ) (Ξ±β , Ξ±β , Ξ±β) = Nat'-path Ξ» z β cast[] $
ni (idl' _ β[] symP (pushl[] _ (yβ .F-β')) β[] symP (idr' _))
.triangle' {B' = B'} {C' = C'} f' g' = Nat'-path Ξ» x' β C'.idr' _ where
Displayed-cat o β o' β' module C' = Displayed C'
.pentagon' {B' = B'} {C' = C'} {D' = D'} {E' = E'} f' g' h' i' = Nat'-path Ξ» x' β cast[] $
Displayed-cat o β o' β' (f' .Fβ' (g' .Fβ' (h' .Fβ' B'.id')) β' id') β' (id' β' f' .Fβ' D'.id' β' id') β‘[]β¨ idr' _ β©β'β¨ idl' _ β©
(f' .Fβ' (g' .Fβ' (h' .Fβ' B'.id'))) β' (f' .Fβ' D'.id' β' id') β‘[]β¨ ((apd (Ξ» _ z β f' .Fβ' (g' .Fβ' z)) (h' .F-id')) β©β'β¨ (idr' _)) β©
(f' .Fβ' (g' .Fβ' C'.id')) β' (f' .Fβ' D'.id') β‘[]β¨ ((apd (Ξ» _ β f' .Fβ') (g' .F-id') β[] f' .F-id') β©β'β¨ f' .F-id') β©
id' β' id' βwhere
open DR E'
module B' = Displayed B'
module C' = Displayed C'
module D' = Displayed D'
References
- Ahrens B, Maggesi M, Frumin D. 2022. βBicategories in Univalent Foundations.β Mathematical Structures in Computer Science 31 (10): 1232β69. https://doi.org/10.1017/S0960129522000032.