Shift #
A Shift on a category C indexed by a monoid A is nothing more than a monoidal functor
from A to C ⥤ C. A typical example to keep in mind might be the category of
complexes ⋯ → C_{n-1} → C_n → C_{n+1} → ⋯. It has a shift indexed by ℤ, where we assign to
each n : ℤ the functor C ⥤ C that re-indexes the terms, so the degree i term of Shift n C
would be the degree i+n-th term of C.
Main definitions #
HasShift: A typeclass asserting the existence of a shift functor.shiftEquiv: When the indexing monoid is a group, then the functor indexed bynand-nforms a self-equivalence ofC.shiftComm: When the indexing monoid is commutative, then shifts commute as well.
Implementation Notes #
[HasShift C A] is implemented using monoidal functors from Discrete A to C ⥤ C.
However, the API of monoidal functors is used only internally: one should use the API of
shifts functors which includes shiftFunctor C a : C ⥤ C for a : A,
shiftFunctorZero C A : shiftFunctor C (0 : A) ≅ 𝟭 C and
shiftFunctorAdd C i j : shiftFunctor C (i + j) ≅ shiftFunctor C i ⋙ shiftFunctor C j
(and its variant shiftFunctorAdd'). These isomorphisms satisfy some coherence properties
which are stated in lemmas like shiftFunctorAdd'_assoc, shiftFunctorAdd'_zero_add and
shiftFunctorAdd'_add_zero.
A category has a shift indexed by an additive monoid A
if there is a monoidal functor from A to C ⥤ C.
a shift is a monoidal functor from
AtoC ⥤ Cshiftis monoidal
Instances
A helper structure to construct the shift functor (Discrete A) ⥤ (C ⥤ C).
- F : A → Functor C C
the family of shift functors
the shift by 0 identifies to the identity functor
the composition of shift functors identifies to the shift by the sum
- assoc_hom_app (m₁ m₂ m₃ : A) (X : C) : CategoryStruct.comp ((self.add (m₁ + m₂) m₃).hom.app X) ((self.F m₃).map ((self.add m₁ m₂).hom.app X)) = CategoryStruct.comp (eqToHom ⋯) (CategoryStruct.comp ((self.add m₁ (m₂ + m₃)).hom.app X) ((self.add m₂ m₃).hom.app ((self.F m₁).obj X)))
compatibility with the associativity
- zero_add_hom_app (n : A) (X : C) : (self.add 0 n).hom.app X = CategoryStruct.comp (eqToHom ⋯) ((self.F n).map (self.zero.inv.app X))
compatibility with the left addition with 0
- add_zero_hom_app (n : A) (X : C) : (self.add n 0).hom.app X = CategoryStruct.comp (eqToHom ⋯) (self.zero.inv.app ((self.F n).obj X))
compatibility with the right addition with 0
Instances For
Equations
- One or more equations did not get rendered due to their size.
Constructs a HasShift C A instance from ShiftMkCore.
Equations
- CategoryTheory.hasShiftMk C A h = { shift := CategoryTheory.Discrete.functor h.F, shiftMonoidal := inferInstance }
Instances For
The monoidal functor from A to C ⥤ C given a HasShift instance.
Instances For
The shift autoequivalence, moving objects and morphisms 'up'.
Equations
- CategoryTheory.shiftFunctor C i = (CategoryTheory.shiftMonoidalFunctor C A).obj { as := i }
Instances For
Shifting by i + j is the same as shifting by i and then shifting by j.
Equations
- CategoryTheory.shiftFunctorAdd C i j = (CategoryTheory.Functor.Monoidal.μIso (CategoryTheory.shiftMonoidalFunctor C A) { as := i } { as := j }).symm
Instances For
When k = i + j, shifting by k is the same as shifting by i and then shifting by j.
Equations
- CategoryTheory.shiftFunctorAdd' C i j k h = CategoryTheory.eqToIso ⋯ ≪≫ CategoryTheory.shiftFunctorAdd C i j
Instances For
Shifting by zero is the identity functor.
Equations
Instances For
Shifting by a such that a = 0 identifies to the identity functor.
Equations
Instances For
shifting an object X by n is obtained by the notation X⟦n⟧
Equations
- One or more equations did not get rendered due to their size.
Instances For
shifting a morphism f by n is obtained by the notation f⟦n⟧'
Equations
- One or more equations did not get rendered due to their size.
Instances For
Shifting by i + j is the same as shifting by i and then shifting by j.
Equations
- CategoryTheory.shiftAdd X i j = (CategoryTheory.shiftFunctorAdd C i j).app X
Instances For
Shifting by zero is the identity functor.
Equations
- CategoryTheory.shiftZero A X = (CategoryTheory.shiftFunctorZero C A).app X
Instances For
When i + j = 0, shifting by i and by j gives the identity functor
Equations
- CategoryTheory.shiftFunctorCompIsoId C i j h = (CategoryTheory.shiftFunctorAdd' C i j 0 h).symm ≪≫ CategoryTheory.shiftFunctorZero C A
Instances For
Shifting by i and shifting by j forms an equivalence when i + j = 0.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Shifting by n and shifting by -n forms an equivalence.
Equations
- CategoryTheory.shiftEquiv C n = CategoryTheory.shiftEquiv' C n (-n) ⋯
Instances For
Shifting by i is an equivalence.
Shifting by i and then shifting by -i is the identity.
Equations
- CategoryTheory.shiftShiftNeg X i = (CategoryTheory.shiftEquiv C i).unitIso.symm.app X
Instances For
Shifting by -i and then shifting by i is the identity.
Equations
Instances For
When shifts are indexed by an additive commutative monoid, then shifts commute.
Equations
- CategoryTheory.shiftFunctorComm C i j = (CategoryTheory.shiftFunctorAdd C i j).symm ≪≫ CategoryTheory.shiftFunctorAdd' C j i (i + j) ⋯
Instances For
When shifts are indexed by an additive commutative monoid, then shifts commute.
Equations
- CategoryTheory.shiftComm X i j = (CategoryTheory.shiftFunctorComm C i j).app X
Instances For
When shifts are indexed by an additive commutative monoid, then shifts commute.
auxiliary definition for FullyFaithful.hasShift
Equations
- One or more equations did not get rendered due to their size.
Instances For
auxiliary definition for FullyFaithful.hasShift
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a family of endomorphisms of C which are intertwined by a fully faithful F : C ⥤ D
with shift functors on D, we can promote that family to shift functors on C.
Equations
- One or more equations did not get rendered due to their size.