Skip to content

defn: Pseudofunctor bicategories and the Grothendieck construction as a lax colimit#612

Open
aathn wants to merge 16 commits intothe1lab:mainfrom
aathn:cat-lax-colim
Open

defn: Pseudofunctor bicategories and the Grothendieck construction as a lax colimit#612
aathn wants to merge 16 commits intothe1lab:mainfrom
aathn:cat-lax-colim

Conversation

@aathn
Copy link
Copy Markdown
Contributor

@aathn aathn commented Mar 26, 2026

Description

Proves that the (contravariant) Grothendieck construction of a pseudofunctor F : Pseudofunctor (Locally-discrete (I ^op)) (Cat _ _) is the lax colimit of F (see nlab; note that the covariant construction is the oplax colimit and vice versa).

This required adding a lot of bicategorical definitions, including composition of lax functors, lax transformations, and modifications. I defined the Grothendieck construction by way of the canonical displayed category associated with F, and also proved some properties about the latter. I have tried to separate the PR into a series of meaningful commits with somewhat descriptive messages.

This is marked as a draft because I am still working on the prose, todo:

  • Cat.Bi.Lax-functor.Hom
  • Cat.Bi.Lax-functor.Constant
  • Cat.Bi.Equivalence
  • Cat.Bi.Lax-functor.IndexedCategory
  • Cat.Bi.Diagram.Colimit

Also note that this PR sits on top of the functor solver branch which is not yet merged (note that the first three commits are from that branch and are not part of the main content of this PR).

Checklist

Before submitting a merge request, please check the items below:

  • I've read the contributing guidelines.
  • The imports of new modules have been sorted with support/sort-imports.hs (or nix run --experimental-features nix-command -f . sort-imports).
  • All new code blocks have "agda" as their language.

If your change affects many files without adding substantial content, and
you don't want your name to appear on those pages (for example, treewide
refactorings or reformattings), start the commit message and PR title with chore:.

@Lavenza
Copy link
Copy Markdown
Member

Lavenza commented Mar 26, 2026

@aathn aathn force-pushed the cat-lax-colim branch 16 times, most recently from e2f5d1a to 62bf56f Compare April 2, 2026 00:03
@aathn aathn force-pushed the cat-lax-colim branch 7 times, most recently from 7c4cd8c to f3ef5e2 Compare April 10, 2026 20:47
@aathn aathn force-pushed the cat-lax-colim branch 5 times, most recently from 8b4b980 to b723bc9 Compare April 11, 2026 18:43
aathn added 10 commits April 11, 2026 21:31
Adds the canonical inclusion functor from the fibre categories of a
displayed category into the total category.  Also adds lemmas relating
this functor to the base change functor when the displayed category is a fibration.
Adds identity and composite constructions for lax functors and
pseudofunctors, as well as reasoning modules with helper lemmas.
Adds identity and composition constructions for lax and pseudonatural transformations.
Adds identity, vertical, and horizontal composition constructions for
modifications between lax transformations.  Also adds the boilerplate to
show modifications form a set, and sets up an extensionality
characterization similar to that for natural transformations.
Defines opposite and conjugate bicategories, obtained by swapping the
direction of 1-cells and 2-cells, respectively.  Also defines an oplax
functor as a lax functor on the conjugate categories, and defines the
conjugate dual of a pseudofunctor.

In addition, I added an explicit definition of the opposite product
category duality which computes better.
Defines the category of lax transformations between two
lax/pseudo-functors and modifications between them, and the same for
oplax transformations.  Defines the bicategories of lax/pseudo-functors
between two bicategories and (op-)lax transformations between them.
Adds the covariant pseudofunctor which given a fixed object X maps an
object Y to the hom-category from X to Y
Defines the constant pseudofunctor between bicategories B and C given
a fixed object in C, as well as the curried pseudofunctor from C into
the (oplax) pseudofunctor bicategory between B and C.
Defines adjunctions in a bicategory and adjoint equivalences, and proves
that they correspond to the familiar notions in Cat.  Also defines
pseudonatural equivalences as a pseudonatural transformations which are
componentwise equivalences.
Defines the canonical displayed category associated with a contravariant
pseudofunctor from a locally discrete category into Cat, and proves it
is a fibration.  Also proves that the fibres of the displayed category
coincide with the values of the pseudofunctor, and that the base change
functors coincide with the pseudofunctor mapping.

Defines the total category of this fibration using Cat.Displayed.Total
and specializes the canonical inclusion functor using the equivalences
mentioned above.

Finally, the module defines some specialized lemmas for indexed
categories and lax-transformations between them.
This defines the notion of a lax colimit, and shows that the
contravariant Grothendieck construction of a pseudofunctor F corresponds
to the lax colimit of F.
@aathn aathn marked this pull request as ready for review April 11, 2026 19:44
Copy link
Copy Markdown
Member

@plt-amy plt-amy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay i have like round one

Comment thread src/Cat/Bi/Functor/Base.lagda.md
Comment thread src/Cat/Bi/Functor/Constant.lagda.md
Comment thread src/Cat/Bi/Functor/Hom.lagda.md
Comment thread src/Cat/Bi/Functor/IndexedCategory.lagda.md
Comment thread src/Cat/Bi/Functor/Transformation.lagda.md
Comment thread src/Cat/Bi/Duality.lagda.md
Comment thread src/Cat/Bi/Equivalence.lagda.md Outdated
×^op← .F-∘ f g = refl

private
×^op←-is-inverse : ×^op← ≡ is-equivalence.F⁻¹ ×^op-is-equiv
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did this actually get used? paths of functors are kind of iffy, i would prefer if it was a natural isomorphism.

Copy link
Copy Markdown
Contributor Author

@aathn aathn Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So what happened is that before the bifunctor refactor I needed ×^op← when defining the co-bicategory, but the existing one was defined as is-equivalence.F⁻¹ ×^op-is-equiv (where ×^op-is-equiv was derived from a precat-iso) which gave a bunch of unreduced transports. So I changed it to a direct definition and thought I should at least give a proof that they are the same. But after the bifunctor refactor I'm not using it anymore.

Now I rewrote this to show the equivalence directly. I could also revert the changes entirely since they are not really related to the PR anymore.

Comment thread src/Cat/Bi/Instances/Functor.lagda.md
Comment thread src/Cat/Bi/Diagram/Colimit.lagda.md Outdated
@aathn aathn force-pushed the cat-lax-colim branch 3 times, most recently from a0e8d78 to ed95d81 Compare April 13, 2026 19:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants