Commutation with shifts of functors in two variables #
We introduce a typeclass Functor.CommShift₂Int for a bifunctor G : C₁ ⥤ C₂ ⥤ D
(with D a preadditive category) as the two variable analogue of Functor.CommShift.
We require that G commutes with the shifts in both variables and that the two
ways to identify (G.obj (X₁⟦p⟧)).obj (X₂⟦q⟧) to ((G.obj X₁).obj X₂)⟦p + q⟧
differ by the sign (-1) ^ (p + q).
This is implemented using a structure Functor.CommShift₂ which does not depend
on the preadditive structure on D: instead of signs, elements in (CatCenter D)ˣ
are used. These elements are part of a CommShift₂Setup structure which extends
a TwistShiftData structure (see the file Mathlib.CategoryTheory.Shift.Twist).
TODO (@joelriou) #
- Show that
G : C₁ ⥤ C₂ ⥤ DsatisfiesFunctor.CommShift₂Intiff the uncurried functorC₁ × C₂ ⥤ Dcommutes with the shift byℤ × ℤ, whereC₁ × C₂is equipped with the obvious product shift, andDis equipped with the twisted shift.
Given a category D equipped with a shift by an additive monoid M, this
structure CommShift₂Setup D M allows to define what it means for a bifunctor
C₁ ⥤ C₂ ⥤ D to commute with shifts by M with respect to both variables.
This structure consists of a TwistShiftData for the shift by M × M on D
obtained by pulling back the addition map M × M →+ M, with two axioms z_zero₁
and z_zero₂. We also require an additional data of ε m n : (CatCenter D)ˣ
for m and n: even though this is determined by the z field of TwistShiftData,
we make it a separate field so as to have control on its definitional properties.
The invertible elements in the center of
Dthat are equal to(z (0, n) (m, 0))⁻¹ * z (m, 0) (0, n).
Instances For
The standard setup for the commutation of bifunctors with shifts by ℤ.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A bifunctor G : C₁ ⥤ C₂ ⥤ D commutes with the shifts by M if all functors
G.obj X₁ and G.flip X₂ are equipped with Functor.CommShift structures, in a way
that is natural in X₁ and X₂, and that these isomorphisms commute up to
the multiplication with an element in (CatCenter D)ˣ which is determined by
a CommShift₂Setup D M structure. (In most cases, one should use the
abbreviation CommShift₂Int.)
- comm (X₁ : C₁) (X₂ : C₂) (m n : M) : CategoryStruct.comp ((commShiftIso (G.obj ((shiftFunctor C₁ m).obj X₁)) n).hom.app X₂) ((shiftFunctor D n).map ((commShiftIso (G.flip.obj X₂) m).hom.app X₁)) = CategoryStruct.comp ((commShiftIso (G.flip.obj ((shiftFunctor C₂ n).obj X₂)) m).hom.app X₁) (CategoryStruct.comp ((shiftFunctor D m).map ((commShiftIso (G.obj X₁) n).hom.app X₂)) (CategoryStruct.comp (shiftComm ((G.obj X₁).obj X₂) m n).inv ((↑(h.ε m n)).app ((shiftFunctor D n).obj ((shiftFunctor D m).obj ((G.obj X₁).obj X₂))))))
Instances
This alias for Functor.CommShift₂.comm allows to use the dot notation.
This alias for Functor.CommShift₂.comm allows to use the dot notation.
A bifunctor G : C₁ ⥤ C₂ ⥤ D commutes with the shifts by ℤ if all functors
G.obj X₁ and G.flip X₂ are equipped with Functor.CommShift structures, in a way
that is natural in X₁ and X₂, and that these isomorphisms for the shift by p
on the first variable and the shift by q on the second variable commute up
to the sign (-1) ^ (p * q).
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
If τ : G₁ ⟶ G₂ is a natural transformation between two bifunctors
which commute shifts on both variables, this typeclass asserts a compatibility of τ
with these shifts.
Instances
If τ : G₁ ⟶ G₂ is a natural transformation between two bifunctors
which commute shifts on both variables, this typeclass asserts a compatibility of τ
with these shifts.