module Cat.Bi.Diagram.Colimit where
Bicategorical colimits🔗
private variable o h ℓ o' h' ℓ' : Level module _ {I : Prebicategory o h ℓ} {C : Prebicategory o' (o ⊔ h ⊔ ℓ ⊔ h' ⊔ ℓ') (o ⊔ h ⊔ ℓ ⊔ ℓ')} (F : Pseudofunctor I C) where open Prebicategory C open Pseudofunctor open Modification open Cr.Inverses open Cr._≅_ open _=>ₗ_ open _=>ₚ_ open _=>_
Colimits are ubiquitous in category theory, describing universal constructions of a certain form. The same is true in bicategory theory, where we can consider diagrams given by pseudofunctors and colimiting objects such that any cocone over with apex corresponds to an essentially unique morphism
The primary difference in dealing with bicategorical colimits compared to their 1-categorical counterparts is that commutativity requirements are relaxed to 2-cell isomorphisms. Bicategorical colimits are also more expressive in that the diagram can specify whether commutativity conditions should hold up to isomorphism or merely a directed transformation. For example, in a 1-category, given two parallel morphisms
we can consider a coequaliser, i.e., a universal morphism identifying and in the sense that In a bicategory we can consider a directed version of this construction, the coinserter, which consists of a universal 1-cell equipped with a 2-cell
Other prominent examples of bicategorical colimits include, e.g, cocomma categories, localisations, and Kleisli categories.
Bicolimits and lax colimits🔗
To avoid having to define the machinery of cones or Kan extensions at the level of bicategories, we use the characterisation of colimits as representing objects. In 1-category theory, a functor has a colimit if and only if there is an isomorphism natural in Similarly, in the setting of bicategories, we say that a pseudofunctor has a bicolimit if and only if there is an equivalence of categories pseudonatural in where is the bicategorical Hom functor, is the constant pseudofunctor at and is the bicategory of pseudofunctors from to pseudonatural transformations between them, and modifications between those.
Recall that a natural transformation specifies a cocone over the functor In the same way, a pseudonatural transformation specifies a cocone over the pseudofunctor illustrated in the diagram below.
For each object in the diagram, the map gives a leg of the cocone, and for any morphism we have an invertible 2-cell in place of the usual commutativity requirement for cocones.
As is often the case in bicategorical definitions, we have the choice of whether to consider cocones which commute strongly (so that is an isomorphism as above), or to take cocones with “directed” commutative squares (so that is a general 2-cell). The latter choice yields the notion of a lax colimit (or oplax, depending on the direction of the 2-cells). It is known that (op-)lax colimits can be expressed as bicolimits by altering the diagram category, but here we give a direct definition.
TODO: Also define bicolimits and oplax colimits properly.
Defining lax colimits🔗
A lax colimit of a pseudofunctor consists of an object in together with a pseudonatural equivalence where denotes the bicategory of pseudofunctors from to together with oplax transformations between them.1 The codomain of this equivalence can be translated into Mikan as follows.
lax-cocones-at : Pseudofunctor C (Cat _ _) lax-cocones-at = Hom-from-bi (Pseudoₒ I C) (opᵖ F) P∘ Const-pseudoₒ
Now, by a bicategorical Yoneda argument, any pseudonatural equivalence of the form above is determined by its value at which is a cocone namely the universal colimiting cocone. Conversely, any cocone at induces a functor by precomposition.
module _ (L : Ob) (univ-cocone : opᵖ F .lax =>ₒ ConstP L .lax) where hom→cocone₀ : (X : Ob) → Functor (Hom L X) Pseudoₒ[ opᵖ F , ConstP X ] hom→cocone₀ X = preaction (Pseudoₒ _ _) {opᵖ F} {ConstP L} {ConstP X} univ-cocone F∘ Const-pseudoₒ.Const₁
We can show that hom→cocone₀ extends to a
pseudonatural transformation without too much effort. We elide the
details, which mostly boil down to automated bicategory reasoning.
module _ {X Y : Ob} where hom→cocone-nat : preaction (Cat _ _) (hom→cocone₀ Y) F∘ Flip (Lax.compose _ _) F∘ Const-pseudoₒ.Const₁ ≅ⁿ postaction (Cat _ _) (hom→cocone₀ X) F∘ compose hom→cocone-nat = to-natural-iso ni where open make-natural-iso ni : make-natural-iso _ _ ni .eta f .η g .Γ a = α← _ ni .eta f .η g .is-natural = bicat! C ni .eta f .is-natural g h α = ext λ _ → bicat! C ni .inv f .η g .Γ a = α→ _ ni .inv f .η g .is-natural = bicat! C ni .inv f .is-natural g h α = ext λ _ → bicat! C ni .eta∘inv f = ext λ _ _ → Br.α≅ C .invr ni .inv∘eta f = ext λ _ _ → Br.α≅ C .invl ni .natural g h α = ext λ _ _ → bicat! C hom→cocone : Hom-from-bi C L .lax =>ₚ lax-cocones-at .lax hom→cocone .lax .σ = hom→cocone₀ hom→cocone .lax .naturator = hom→cocone-nat .to hom→cocone .lax .ν-compositor f g = ext λ _ _ → bicat! C hom→cocone .lax .ν-unitor = ext λ _ _ → bicat! C hom→cocone .naturator-inv f = Cr.iso→invertible Cat[ _ , _ ] (isoⁿ→iso hom→cocone-nat f)
In other words, to show that
is the lax colimit of
it suffices to provide a candidate cocone with apex
and show that the induced hom→cocone is a pseudonatural
equivalence, which corresponds to showing that the provided cocone is
universal.
is-lax-colimit : Type _ is-lax-colimit = is-equivalenceᵖ hom→cocone
The reason the definition involves oplax transformations is that a lax colimit is defined to coincide with a lax limit in the opposite bicategory, which ends up reversing the direction of cocone 2-cells.↩︎