agda / cubical

An experimental library for Cubical Agda
https://agda.github.io/cubical/Cubical.README.html
Other
447 stars 136 forks source link

Add opcartesian fibrations #1026

Closed jpoiret closed 1 year ago

jpoiret commented 1 year ago

Hi everyone,

This adds reindexing of displayed categories, the basic definitions of opcartesian fibrations, as well as discrete opfibrations, some nice properties of opcartesian morphisms and the construction of the substitution functor. I stopped short of proving the pseudo-functorial laws of the latter mostly because I didn't care too much.

As opposed to the 1lab which reasons with displayed morphisms using regular paths and transports, I thought we could try having reasoning combinators for the PathP version, so I went with that and added the two abominations that are eq1 ≡[ p ∙ q ]∙ eq2 and eq1 ≡[ p ⋆ q ]⋆ eq2 which are respectively displayed versions of vertical and horizontal compositions of paths. This lets us input mostly "regular" proofs, with the caveat that Agda can't always infer p and q, and when it can it might hinder performance, so I chose to leave them explicit in the syntax. It's a little bit of an experiment but I found that the verbosity of proofs is not too bad considering you don't really need to read p and q. Also, you often end up with equalities over the wrong equality, but because the base category has homsets you can always rectify using ≡[]-rectify.

WDYT?