Computation of Over A
for a presheaf A
#
Let A : Cᵒᵖ ⥤ Type v
be a presheaf. In this file, we construct an equivalence
e : Over A ≌ (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
and show that there is a quasi-commutative
diagram
CostructuredArrow yoneda A ⥤ Over A
⇘ ⥥
PSh(CostructuredArrow yoneda A)
where the top arrow is the forgetful functor forgetting the yoneda-costructure, the right arrow is the aforementioned equivalence and the diagonal arrow is the Yoneda embedding.
In the notation of Kashiwara-Schapira, the type of the equivalence is written C^ₐ ≌ Cₐ^
, where
·ₐ
is CostructuredArrow
(with the functor S
being either the identity or the Yoneda
embedding) and ^
is taking presheaves. The equivalence is a key ingredient in various results in
Kashiwara-Schapira.
The proof is somewhat long and technical, in part due to the construction inherently involving a sigma type which comes with the usual DTT issues. However, a user of this result should not need to interact with the actual construction, the mere existence of the equivalence and the commutative triangle should generally be sufficient.
Main results #
overEquivPresheafCostructuredArrow
: the equivalenceOver A ≌ (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
CostructuredArrow.toOverCompOverEquivPresheafCostructuredArrow
: the natural isomorphismCostructuredArrow.toOver yoneda A ⋙ (overEquivPresheafCostructuredArrow A).functor ≅ yoneda
Implementation details #
The proof needs to introduce "correction terms" in various places in order to overcome DTT issues,
and these need to be canceled against each other when appropriate. It is important to deal with
these in a structured manner, otherwise you get large goals containing many correction terms which
are very tedious to manipulate. We avoid this blowup by carefully controlling which definitions
(d)simp
is allowed to unfold and stating many lemmas explicitly before they are required. This
leads to manageable goals containing only a small number of correction terms. Generally, we use
the form F.map (eqToHom _)
for these correction terms and try to push them as far outside as
possible.
Future work #
- If needed, it should be possible to show that the equivalence is natural in
A
.
References #
- [M. Kashiwara, P. Schapira, Categories and Sheaves][Kashiwara2006], Lemma 1.4.12
Tags #
presheaf, over category, coyoneda
Construction of the forward functor Over A ⥤ (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
#
Via the Yoneda lemma, u : F.obj (op X)
defines a natural transformation yoneda.obj X ⟶ F
and via the element η.app (op X) u
also a morphism yoneda.obj X ⟶ A
. This structure
witnesses the fact that these morphisms from a commutative triangle with η : F ⟶ A
, i.e.,
that yoneda.obj X ⟶ F
lifts to a morphism in Over A
.
- app : η.app (Opposite.op X) u = CategoryTheory.yonedaEquiv s
Instances For
"Functoriality" of MakesOverArrow η s
in η
.
"Functoriality of MakesOverArrow η s
in s
.
This is equivalent to the type Over.mk s ⟶ Over.mk η
, but that lives in the wrong universe.
However, if F = yoneda.obj Y
for some Y
, then (using that the Yoneda embedding is fully
faithful) we get a good statement, see OverArrow.costructuredArrowIso
.
Equations
Instances For
Since OverArrows η s
can be thought of to contain certain morphisms yoneda.obj X ⟶ F
, the
Yoneda lemma yields elements F.obj (op X)
.
Equations
- CategoryTheory.OverPresheafAux.OverArrows.val = Subtype.val
Instances For
The defining property of OverArrows.val
.
In the special case F = yoneda.obj Y
, the element p.val
for p : OverArrows η s
is itself
a morphism X ⟶ Y
.
Functoriality of OverArrows η s
in η
.
Equations
- u.map₁ ε hε = ⟨ε.app (Opposite.op X) u.val, ⋯⟩
Instances For
Functoriality of OverArrows η s
in s
.
Equations
- u.map₂ f hst = ⟨F.map f.op u.val, ⋯⟩
Instances For
Construct an element of OverArrows η s
with F = yoneda.obj Y
from a suitable morphism
f : X ⟶ Y
.
Equations
Instances For
If η
is also yoneda
-costructured, then OverArrows η s
is just morphisms of costructured
arrows.
Equations
- One or more equations did not get rendered due to their size.
Instances For
This is basically just yoneda.obj η : (Over A)ᵒᵖ ⥤ Type (max u v)
restricted along the
forgetful functor CostructuredArrow yoneda A ⥤ Over A
, but done in a way that we land in a
smaller universe.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Functoriality of restrictedYonedaObj η
in η
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
This is basically just yoneda : Over A ⥤ (Over A)ᵒᵖ ⥤ Type (max u v)
restricted in the second
argument along the forgetful functor CostructuredArrow yoneda A ⥤ Over A
, but done in a way
that we land in a smaller universe.
This is one direction of the equivalence we're constructing.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Further restricting the functor
restrictedYoneda : Over A ⥤ (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
along the forgetful
functor in the first argument recovers the Yoneda embedding
CostructuredArrow yoneda A ⥤ (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
. This basically follows
from the fact that the Yoneda embedding on C
is fully faithful.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construction of the backward functor ((CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v) ⥤ Over A
#
This lemma will be key to establishing good simp normal forms.
To give an object of Over A
, we will in particular need a presheaf Cᵒᵖ ⥤ Type v
. This is the
definition of that presheaf on objects.
We would prefer to think of this sigma type to be indexed by natural transformations
yoneda.obj X ⟶ A
instead of A.obj (op X)
. These are equivalent by the Yoneda lemma, but
we cannot use the former because that type lives in the wrong universe. Hence, we will provide
a lot of API that will enable us to pretend that we are really indexing over
yoneda.obj X ⟶ A
.
Equations
- CategoryTheory.OverPresheafAux.YonedaCollection F X = ((s : A.obj (Opposite.op X)) × F.obj (Opposite.op (CategoryTheory.CostructuredArrow.mk (CategoryTheory.yonedaEquiv.symm s))))
Instances For
Given a costructured arrow s : yoneda.obj X ⟶ A
and an element x : F.obj s
, construct
an element of YonedaCollection F X
.
Equations
- CategoryTheory.OverPresheafAux.YonedaCollection.mk s x = ⟨CategoryTheory.yonedaEquiv s, F.map (CategoryTheory.eqToHom ⋯) x⟩
Instances For
Access the first component of an element of YonedaCollection F X
.
Equations
- p.fst = CategoryTheory.yonedaEquiv.symm p.fst
Instances For
Access the second component of an element of YonedaCollection F X
.
Equations
- p.snd = p.snd
Instances For
This is a definition because it will be helpful to be able to control precisely when this definition is unfolded.
Equations
- p.yonedaEquivFst = CategoryTheory.yonedaEquiv p.fst
Instances For
Functoriality of YonedaCollection F X
in F
.
Equations
- CategoryTheory.OverPresheafAux.YonedaCollection.map₁ η p = CategoryTheory.OverPresheafAux.YonedaCollection.mk p.fst (η.app (Opposite.op (CategoryTheory.CostructuredArrow.mk p.fst)) p.snd)
Instances For
Functoriality of YonedaCollection F X
in X
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
, this is the presheaf that is given by
YonedaCollection F X
on objects.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Functoriality of yonedaCollectionPresheaf A F
in F
.
Equations
- CategoryTheory.OverPresheafAux.yonedaCollectionPresheafMap₁ η = { app := fun (X : Cᵒᵖ) => CategoryTheory.OverPresheafAux.YonedaCollection.map₁ η, naturality := ⋯ }
Instances For
This is the functor F ↦ X ↦ YonedaCollection F X
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Yoneda lemma yields a natural transformation yonedaCollectionPresheaf A F ⟶ A
.
Equations
- CategoryTheory.OverPresheafAux.yonedaCollectionPresheafToA F = { app := fun (X : Cᵒᵖ) => CategoryTheory.OverPresheafAux.YonedaCollection.yonedaEquivFst, naturality := ⋯ }
Instances For
This is the reverse direction of the equivalence we're constructing.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construction of the unit #
Forward direction of the unit.
Equations
Instances For
Backward direction of the unit.
Equations
- CategoryTheory.OverPresheafAux.unitBackward η X x = CategoryTheory.OverPresheafAux.YonedaCollection.mk (CategoryTheory.yonedaEquiv.symm (η.app (Opposite.op X) x)) ⟨x, ⋯⟩
Instances For
Intermediate stage of assembling the unit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Intermediate stage of assembling the unit.
Equations
Instances For
Intermediate stage of assembling the unit.
Equations
Instances For
The unit of the equivalence we're constructing.
Equations
- CategoryTheory.OverPresheafAux.unit A = (CategoryTheory.NatIso.ofComponents CategoryTheory.OverPresheafAux.unitAux ⋯).symm
Instances For
Construction of the counit #
Forward direction of the counit.
Equations
Instances For
Backward direction of the counit.
Equations
Instances For
Intermediate stage of assembling the counit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Intermediate stage of assembling the counit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The counit of the equivalence we're constructing.
Equations
- CategoryTheory.OverPresheafAux.counit A = (CategoryTheory.NatIso.ofComponents CategoryTheory.OverPresheafAux.counitAux ⋯).symm
Instances For
If A : Cᵒᵖ ⥤ Type v
is a presheaf, then we have an equivalence between presheaves lying over
A
and the category of presheaves on CostructuredArrow yoneda A
. There is a quasicommutative
triangle involving this equivalence, see
CostructuredArrow.toOverCompOverEquivPresheafCostructuredArrow
.
This is Lemma 1.4.12 in [Kashiwara2006].
Equations
- One or more equations did not get rendered due to their size.
Instances For
If A : Cᵒᵖ ⥤ Type v
is a presheaf, then the Yoneda embedding for
CostructuredArrow yoneda A
factors through Over A
via a forgetful functor and an
equivalence.
This is Lemma 1.4.12 in [Kashiwara2006].