module Cat.Displayed.Isofibration.Free where
Displayed categories from functorsπ
The construction presented in this page is adapted from Foundations of Relative Category Theory.
module _ {ob βb oe βe} {B : Precategory ob βb} {E : Precategory oe βe} (P : Functor E B) where private module P = Cat.Functor.Reasoning P module E = Precategory E open Cat.Reasoning B open Displayed open Functor
This page addresses the problem of comparing notions in the theory of displayed categories, as we have formalised it, with those in the traditional study of relative category theory, which are stated in terms of a projection functor Essentially, we want to replace with the total category of some displayed category so as to recover (up to equivalence) as the projection functor
Fixing a functor we define the type of objects over to consist of pairs where and β in other words, the objects over are not the type-theoretic fibre of over but instead the category-theoretic essential fibre of over
Free-isofibration : Displayed B (βb β oe) (βb β βe) Free-isofibration .Ob[_] x = Essential-fibre P x
To understand the types of maps in we will diagramatically denote a pair as a βlegβ
A morphism lying over is a map which, βoverβ the Isomorphisms and gets sent by to Pictorially, we understand the type of as that of dashed arrows in the diagram below, where the βlegβ on the left (resp. on the right) is drawn with towards the screen.
Free-isofibration .Hom[_] f (x' , p) (y' , q) = Ξ£[ g β E.Hom x' y' ] q .to β P.β g β‘ f β p .to
The operations (identities and composition) necessary to make
a displayed category are inherited from those in
with commutativity of the diagrams defining them assured by
functoriality of
The displayed category laws are directly inherited from
Free-isofibration .Hom[_]-set f a b = hlevel 2 Free-isofibration .id' = record where fst = E.id snd = P.elimr refl β introl refl Free-isofibration ._β'_ (f , Ο) (g , Ο) = record where fst = f E.β g snd = P.popl Ο β extendr Ο Free-isofibration .hom[_] p (f , Ξ±) = record { fst = f ; snd = Ξ± β car p } Free-isofibration .coh[_] _ _ = Ξ£-prop-pathp! refl Free-isofibration .idr' _ = Ξ£-prop-pathp! (E.idr _) Free-isofibration .idl' _ = Ξ£-prop-pathp! (E.idl _) Free-isofibration .assoc' _ _ _ = Ξ£-prop-pathp! (E.assoc _ _ _)
module _ {ob βb oe βe} {B : Precategory ob βb} {E : Precategory oe βe} (P : Functor E B) where private Pβ = Free-isofibration P module Iso[P] = Cat.Displayed.Morphism Pβ module P = Cat.Functor.Reasoning P module B = Cat.Reasoning B module E = Cat.Reasoning E open Displayed-functor open Isofibration open Functor open Lifting
As an isofibrationπ
The construction of a displayed category from a functor results in an isofibration, and indeed this is the isofibration over freely generated by in a suitable bicategorical sense.
To show this, we will first need a technical lemma stating that an
isomorphism
in
whose forward direction extends to a morphism
over the forward direction of an isomorphism
extends to a complete isomorphism
in
Free-isofibration-iso
: β {a b x y}
β {u : a B.β
b} {Ο : P.β x B.β
a} {Ο : P.β y B.β
b} (ΞΈ : x E.β
y)
β Ο .to B.β P.β (ΞΈ .to) β‘ u .to B.β Ο .to
β (x , Ο) Iso[P].β
[ u ] (y , Ο)
The details of the proof are not particularly interesting.
Free-isofibration-iso {u = u} {Ο} {Ο} ΞΈ p = Iso[P].make-iso[ u ] (ΞΈ .to , p) (ΞΈ .from , q) (Ξ£-prop-pathp! (ΞΈ .invl)) (Ξ£-prop-pathp! (ΞΈ .invr)) where abstract q : Ο .to B.β P.β (ΞΈ .from) β‘ u .from B.β Ο .to q = flip Equiv.from refl $ Ο .to B.β P.β (ΞΈ .from) β‘ u .from B.β Ο .to ββ¨ B.post-invl (B.isoβinvertible u) β©β u .to B.β Ο .to B.β P.β (ΞΈ .from) β‘ Ο .to ββ¨ β-pre-equiv (B.extendl p) β©β Ο .to B.β P.β (ΞΈ .to) B.β P.β (ΞΈ .from) β‘ Ο .to ββ¨ β-pre-equiv (B.intror (P.annihilate (ΞΈ .invl))) β©β Ο .to β‘ Ο .to ββ
With this in hand, showing that is an isofibration is extremely straightforward. Supposing we have an iso and drawing the object we want to lift as a βlegβ, we note that the lifting problem we have to solve involves a sequence of maps
whence it is immediate that the lifting we desire is
Free-isofibration-is-isofibration : Isofibration Pβ Free-isofibration-is-isofibration = record where _^*_ Ο (x , Ο) = x , Ο B.βIso Ο ^*-lifts Ο (x , Ο) = Free-isofibration-iso E.id-iso (P.elimr refl)
The total categoryπ
There is an evident lifting of against which sends an object to the pair
Free-isofibration-lifting : Lifting Pβ P Free-isofibration-lifting .Fβ' x = x , B.id-iso Free-isofibration-lifting .Fβ' f = f , B.id-comm-sym Free-isofibration-lifting .F-id' = Ξ£-prop-pathp! refl Free-isofibration-lifting .F-β' f g = Ξ£-prop-pathp! refl
Taken as a functor Eββ« from
this lifting extends to an equivalence of categories.
private
Eββ« : Functor E (β« Pβ)
Eββ« = LiftingβFunctor _ Free-isofibration-lifting
Free-isofibration-lifting-split-eso : is-split-eso Eββ«
Free-isofibration-lifting-is-ff : is-fully-faithful Eββ«
The proofs are, again, straightforward functoriality reasoning.
Eββ« from
this lifting extends to an equivalence of categories.Free-isofibration-lifting-split-eso (b , x , Ο) = record where fst = x snd = iso[]βtotal-iso _ {xβ y = Ο} $ Free-isofibration-iso E.id-iso $ B.cdr P.F-id Free-isofibration-lifting-is-ff = is-isoβis-equiv Ξ» where .is-iso.from h β h .snd .fst .is-iso.rinv h β β«Hom-path _ (B.introl refl ββ h .snd .snd ββ B.elimr refl) (Ξ£-prop-pathp! refl) .is-iso.linv h β refl
Finally, as desired, precomposition with this equivalence takes the projection functor to 1
Free-isofibration-recovers : ΟαΆ Pβ Fβ Eββ« β βΏ P Free-isofibration-recovers = Lifting-nat-iso _ _ niβ»ΒΉ
Freeness as an isofibrationπ
To show that is freely generated as an isofibration over by we show that any lifting of some other isofibration against can be re-expressed as a vertical functor
Free-isofibration-factor : β {oh βh} {H : Displayed B oh βh} β Isofibration H β Lifting H P β Vertical-functor Pβ H Free-isofibration-factor {H = H} H-isofib F = Fβ where
open Cat.Displayed.Reasoning H module H = Isofibration H-isofib module F = Lifting F renaming (Fβ' to β' ; Fβ' to β')
The gist of the construction is presented below. Starting with an object we obtain an which we can transport to our desired since is an isofibration.
Fβ : Vertical-functor Pβ H Fβ .Fβ' (x , Ο) = Ο H.^* F.β' x Fβ .Fβ' {a' = x , Ο} {b' = y , Ο} (h , p) = hom[ B.pulll p β B.cancelr (Ο .invl) ] (H.Ο* β' F.β' h β' H.ΞΉ!)
Verifying that this assignment is functorial boils down to a straightforward calculation, using functoriality of the lifting
Fβ .F-id' {x' = x , Ο} = begin[] hom[] (H.Ο* β' F.β' E.id β' H.ΞΉ!) β‘[]β¨ unwrap _ β©β‘[] H.Ο* β' F.β' E.id β' H.ΞΉ! β‘[]β¨ reflβ©β'β¨ eliml[] _ F.F-id' β©β‘[] H.Ο* β' H.ΞΉ! β‘[]β¨ H.^*-lifts _ _ .invl' β©β‘[] id' β[] Fβ .F-β' {a' = x , Ο} {b' = y , Ο} {c' = z , ΞΈ} {f' = f , p} {g' = g , q} = let open _β [_]_ (H.^*-lifts Ο (F.β' x)) renaming (from' to Ο^*β; to' to Ο^*β) open _β [_]_ (H.^*-lifts Ο (F.β' y)) renaming (from' to Ο^*β; to' to Ο^*β) open _β [_]_ (H.^*-lifts ΞΈ (F.β' z)) renaming (from' to ΞΈ^*β; to' to ΞΈ^*β) in begin[] hom[] (ΞΈ^*β β' F.β' (f E.β g) β' Ο^*β) β‘[]β¨ unwrap _ β©β‘[] ΞΈ^*β β' F.β' (f E.β g) β' Ο^*β β‘[]β¨ reflβ©β'β¨ (pushl[] _ (F.F-β' f g)) β©β‘[] ΞΈ^*β β' F.β' f β' F.β' g β' H.ΞΉ! β‘[]β¨ reflβ©β'β¨ reflβ©β'β¨ (introl[] _ (H.^*-lifts _ _ .invr')) β©β‘[] ΞΈ^*β β' F.β' f β' (Ο^*β β' Ο^*β) β' F.β' g β' H.ΞΉ! β‘[]β¨ reflβ©β'β¨ reflβ©β'β¨ pullr[] _ (wrap _) β©β‘[] ΞΈ^*β β' F.β' f β' Ο^*β β' hom[] (Ο^*β β' F.β' g β' Ο^*β) β‘[]β¨ pushr[] _ (assoc' _ _ _) β[] wrapl _ β©β‘[] hom[] (ΞΈ^*β β' F.β' f β' Ο^*β) β' hom[] (Ο^*β β' F.β' g β' Ο^*β) β[]