The pointwise shift on a functor category #
A shift on Y induces one on X ⥤ Y, by postcomposition: G⟦n⟧ = G ⋙ Y⟦n⟧.
Mathlib does not carry this instance at the pinned revision, and this file adds
it.
Why the construction is short #
Every comparison the shift needs is already an identity of functors in Mathlib,
not merely an isomorphism: whiskeringRight_obj_id and
whiskeringRight_obj_comp are both rfl. So the zero and add isomorphisms
are the images of shiftFunctorZero Y and shiftFunctorAdd Y under
whiskeringRight, with no transport, and the three coherence axioms of
ShiftMkCore reduce componentwise to their counterparts on Y.
The evaluation functors commute with the shift on the nose #
(evaluation X Y).obj E sends G to G.obj E, so it sends G ⋙ Y⟦n⟧ to
(G.obj E)⟦n⟧: the two sides of its commutation isomorphism are equal, and
Iso.refl is a CommShift structure for it. This is what lets a functor
K ⥤ (X ⥤ Y) that commutes with the shift be evaluated at a source object and
still commute with the shift, by Mathlib's composition instance alone.
Naturality of a whole family, for free #
A family of functors F : K ⥤ (X ⥤ Y) equipped with F.CommShift A carries
one isomorphism shiftFunctor K n ⋙ F ≅ F ⋙ shiftFunctor (X ⥤ Y) n in the
functor category, so its components at a source object are natural in that
object by construction, and the zero and addition laws are Mathlib's.
Triangulated/ExactFunctorFamily.lean therefore extends this ordinary
CommShift instead of storing evaluated structures and their naturality by
hand.
For F : K ⥤ X ⥤ Y carrying Mathlib's CommShift₂, the two explicit
adapters below assemble the shift data in either variable into a CommShift
on F or F.flip. Composing those structures with strict evaluation gives
exactly the partial structures selected by CommShift₂; the equality is a
theorem, not an instance, so consumers can transport data without creating a
typeclass diamond.
The pointwise shift on X ⥤ Y: shifting by n is postcomposition with
Y⟦n⟧.
The three coherence fields are the coherences of the shift on Y, applied at
G.obj E; the whiskering comparisons contribute nothing because they are
identities.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A functor category inherits the shift of its target, pointwise.
Equations
Evaluation commutes with the pointwise shift on the nose.
(G ⋙ Y⟦n⟧).obj E and (G.obj E)⟦n⟧ are the same object, so the commutation
isomorphism is the identity and both coherence laws reduce to the
corresponding law on Y.
Equations
- One or more equations did not get rendered due to their size.
Assemble the shift coherence in the first variable of a bifunctor into
an ordinary CommShift structure on its functor-valued family.
This is an explicit definition rather than an instance: a consumer may have
already selected another CommShift structure on F.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The first-family shift comparison evaluates to the partial comparison
selected by CommShift₂.
Assemble the shift coherence in the second variable of a bifunctor into
an ordinary CommShift structure on the flipped functor-valued family.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The second-family shift comparison evaluates to the partial comparison
selected by CommShift₂.
The first-family shift structure, composed with strict evaluation.
Equations
Instances For
Evaluation of the assembled first-family structure is exactly the
partial structure selected by CommShift₂.
The second-family shift structure, composed with strict evaluation.
Equations
Instances For
Evaluation of the assembled second-family structure is exactly the
partial structure selected by CommShift₂.