Documentation

Mathlib.Algebra.Homology.TotalComplexShift

Behaviour of the total complex with respect to shifts #

There are two ways to shift objects in HomologicalComplex₂ C (up ℤ) (up ℤ):

These two sorts of shift functors shall be abbreviated as HomologicalComplex₂.shiftFunctor₁ C x and HomologicalComplex₂.shiftFunctor₂ C y.

In this file, for any K : HomologicalComplex₂ C (up ℤ) (up ℤ), we define an isomorphism K.totalShift₁Iso x : ((shiftFunctor₁ C x).obj K).total (up ℤ) ≅ (K.total (up ℤ))⟦x⟧ for any x : ℤ (which does not involve signs) and an isomorphism K.totalShift₂Iso y : ((shiftFunctor₂ C y).obj K).total (up ℤ) ≅ (K.total (up ℤ))⟦y⟧ for any y : ℤ (which is given by the multiplication by (p * y).negOnePow on the summand in bidegree (p, q) of K).

Depending on the order of the "composition" of the two isomorphisms totalShift₁Iso and totalShift₂Iso, we get two ways to identify ((shiftFunctor₁ C x).obj ((shiftFunctor₂ C y).obj K)).total (up ℤ) and (K.total (up ℤ))⟦x + y⟧. The lemma totalShift₁Iso_trans_totalShift₂Iso shows that these two compositions of isomorphisms differ by the sign (x * y).negOnePow.

@[reducible, inline]

The shift on bicomplexes obtained by shifting the second indices (and changing the sign of differentials).

Equations
Instances For

    The isomorphism (((shiftFunctor₁ C x).obj K).X a).X b ≅ (K.X a').X b when a' = a + x.

    Equations
    Instances For

      The isomorphism (((shiftFunctor₂ C y).obj K).X a).X b ≅ (K.X a).X b' when b' = b + y.

      Equations
      Instances For

        Auxiliary definition for totalShift₁Iso.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem HomologicalComplex₂.D₁_totalShift₁XIso_hom {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (x : ) [K.HasTotal (ComplexShape.up )] (n₀ : ) (n₁ : ) (n₀' : ) (n₁' : ) (h₀ : n₀ + x = n₀') (h₁ : n₁ + x = n₁') :
          CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₁ C x).obj K).D₁ (ComplexShape.up ) n₀ n₁) (K.totalShift₁XIso x n₁ n₁' h₁).hom = x.negOnePow CategoryTheory.CategoryStruct.comp (K.totalShift₁XIso x n₀ n₀' h₀).hom (K.D₁ (ComplexShape.up ) n₀' n₁')
          theorem HomologicalComplex₂.D₁_totalShift₁XIso_hom_assoc {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (x : ) [K.HasTotal (ComplexShape.up )] (n₀ : ) (n₁ : ) (n₀' : ) (n₁' : ) (h₀ : n₀ + x = n₀') (h₁ : n₁ + x = n₁') {Z : C} (h : (K.total (ComplexShape.up )).X n₁' Z) :
          CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₁ C x).obj K).D₁ (ComplexShape.up ) n₀ n₁) (CategoryTheory.CategoryStruct.comp (K.totalShift₁XIso x n₁ n₁' h₁).hom h) = CategoryTheory.CategoryStruct.comp (x.negOnePow CategoryTheory.CategoryStruct.comp (K.totalShift₁XIso x n₀ n₀' h₀).hom (K.D₁ (ComplexShape.up ) n₀' n₁')) h
          theorem HomologicalComplex₂.D₂_totalShift₁XIso_hom {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (x : ) [K.HasTotal (ComplexShape.up )] (n₀ : ) (n₁ : ) (n₀' : ) (n₁' : ) (h₀ : n₀ + x = n₀') (h₁ : n₁ + x = n₁') :
          CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₁ C x).obj K).D₂ (ComplexShape.up ) n₀ n₁) (K.totalShift₁XIso x n₁ n₁' h₁).hom = x.negOnePow CategoryTheory.CategoryStruct.comp (K.totalShift₁XIso x n₀ n₀' h₀).hom (K.D₂ (ComplexShape.up ) n₀' n₁')
          theorem HomologicalComplex₂.D₂_totalShift₁XIso_hom_assoc {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (x : ) [K.HasTotal (ComplexShape.up )] (n₀ : ) (n₁ : ) (n₀' : ) (n₁' : ) (h₀ : n₀ + x = n₀') (h₁ : n₁ + x = n₁') {Z : C} (h : (K.total (ComplexShape.up )).X n₁' Z) :
          CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₁ C x).obj K).D₂ (ComplexShape.up ) n₀ n₁) (CategoryTheory.CategoryStruct.comp (K.totalShift₁XIso x n₁ n₁' h₁).hom h) = CategoryTheory.CategoryStruct.comp (x.negOnePow CategoryTheory.CategoryStruct.comp (K.totalShift₁XIso x n₀ n₀' h₀).hom (K.D₂ (ComplexShape.up ) n₀' n₁')) h

          The isomorphism ((shiftFunctor₁ C x).obj K).total (up ℤ) ≅ (K.total (up ℤ))⟦x⟧ expressing the compatibility of the total complex with the shift on the first indices. This isomorphism does not involve signs.

          Equations
          Instances For
            theorem HomologicalComplex₂.ι_totalShift₁Iso_hom_f {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (x : ) [K.HasTotal (ComplexShape.up )] (a : ) (b : ) (n : ) (h : a + b = n) (a' : ) (ha' : a' = a + x) (n' : ) (hn' : n' = n + x) :
            CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₁ C x).obj K).ιTotal (ComplexShape.up ) a b n h) ((K.totalShift₁Iso x).hom.f n) = CategoryTheory.CategoryStruct.comp (K.shiftFunctor₁XXIso a x a' ha' b).hom (CategoryTheory.CategoryStruct.comp (K.ιTotal (ComplexShape.up ) a' b n' ) (CochainComplex.shiftFunctorObjXIso (K.total (ComplexShape.up )) x n n' hn').inv)
            theorem HomologicalComplex₂.ι_totalShift₁Iso_hom_f_assoc {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (x : ) [K.HasTotal (ComplexShape.up )] (a : ) (b : ) (n : ) (h : a + b = n) (a' : ) (ha' : a' = a + x) (n' : ) (hn' : n' = n + x) {Z : C} (h : ((CategoryTheory.shiftFunctor (HomologicalComplex C (ComplexShape.up )) x).obj (K.total (ComplexShape.up ))).X n Z) :
            theorem HomologicalComplex₂.ι_totalShift₁Iso_inv_f {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (x : ) [K.HasTotal (ComplexShape.up )] (a : ) (b : ) (n : ) (h : a + b = n) (a' : ) (n' : ) (ha' : a' + b = n') (hn' : n' = n + x) :
            CategoryTheory.CategoryStruct.comp (K.ιTotal (ComplexShape.up ) a' b n' ha') (CategoryTheory.CategoryStruct.comp (CochainComplex.shiftFunctorObjXIso (K.total (ComplexShape.up )) x n n' hn').inv ((K.totalShift₁Iso x).inv.f n)) = CategoryTheory.CategoryStruct.comp (K.shiftFunctor₁XXIso a x a' b).inv (((HomologicalComplex₂.shiftFunctor₁ C x).obj K).ιTotal (ComplexShape.up ) a b n h)
            theorem HomologicalComplex₂.ι_totalShift₁Iso_inv_f_assoc {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (x : ) [K.HasTotal (ComplexShape.up )] (a : ) (b : ) (n : ) (h : a + b = n) (a' : ) (n' : ) (ha' : a' + b = n') (hn' : n' = n + x) {Z : C} (h : (((HomologicalComplex₂.shiftFunctor₁ C x).obj K).total (ComplexShape.up )).X n Z) :

            Auxiliary definition for totalShift₂Iso.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem HomologicalComplex₂.D₁_totalShift₂XIso_hom {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (y : ) [K.HasTotal (ComplexShape.up )] (n₀ : ) (n₁ : ) (n₀' : ) (n₁' : ) (h₀ : n₀ + y = n₀') (h₁ : n₁ + y = n₁') :
              CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₂ C y).obj K).D₁ (ComplexShape.up ) n₀ n₁) (K.totalShift₂XIso y n₁ n₁' h₁).hom = y.negOnePow CategoryTheory.CategoryStruct.comp (K.totalShift₂XIso y n₀ n₀' h₀).hom (K.D₁ (ComplexShape.up ) n₀' n₁')
              theorem HomologicalComplex₂.D₁_totalShift₂XIso_hom_assoc {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (y : ) [K.HasTotal (ComplexShape.up )] (n₀ : ) (n₁ : ) (n₀' : ) (n₁' : ) (h₀ : n₀ + y = n₀') (h₁ : n₁ + y = n₁') {Z : C} (h : (K.total (ComplexShape.up )).X n₁' Z) :
              CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₂ C y).obj K).D₁ (ComplexShape.up ) n₀ n₁) (CategoryTheory.CategoryStruct.comp (K.totalShift₂XIso y n₁ n₁' h₁).hom h) = CategoryTheory.CategoryStruct.comp (y.negOnePow CategoryTheory.CategoryStruct.comp (K.totalShift₂XIso y n₀ n₀' h₀).hom (K.D₁ (ComplexShape.up ) n₀' n₁')) h
              theorem HomologicalComplex₂.D₂_totalShift₂XIso_hom {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (y : ) [K.HasTotal (ComplexShape.up )] (n₀ : ) (n₁ : ) (n₀' : ) (n₁' : ) (h₀ : n₀ + y = n₀') (h₁ : n₁ + y = n₁') :
              CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₂ C y).obj K).D₂ (ComplexShape.up ) n₀ n₁) (K.totalShift₂XIso y n₁ n₁' h₁).hom = y.negOnePow CategoryTheory.CategoryStruct.comp (K.totalShift₂XIso y n₀ n₀' h₀).hom (K.D₂ (ComplexShape.up ) n₀' n₁')
              theorem HomologicalComplex₂.D₂_totalShift₂XIso_hom_assoc {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (y : ) [K.HasTotal (ComplexShape.up )] (n₀ : ) (n₁ : ) (n₀' : ) (n₁' : ) (h₀ : n₀ + y = n₀') (h₁ : n₁ + y = n₁') {Z : C} (h : (K.total (ComplexShape.up )).X n₁' Z) :
              CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₂ C y).obj K).D₂ (ComplexShape.up ) n₀ n₁) (CategoryTheory.CategoryStruct.comp (K.totalShift₂XIso y n₁ n₁' h₁).hom h) = CategoryTheory.CategoryStruct.comp (y.negOnePow CategoryTheory.CategoryStruct.comp (K.totalShift₂XIso y n₀ n₀' h₀).hom (K.D₂ (ComplexShape.up ) n₀' n₁')) h

              The isomorphism ((shiftFunctor₂ C y).obj K).total (up ℤ) ≅ (K.total (up ℤ))⟦y⟧ expressing the compatibility of the total complex with the shift on the second indices. This isomorphism involves signs: on the summand in degree (p, q) of K, it is given by the multiplication by (p * y).negOnePow.

              Equations
              Instances For
                theorem HomologicalComplex₂.ι_totalShift₂Iso_hom_f {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (y : ) [K.HasTotal (ComplexShape.up )] (a : ) (b : ) (n : ) (h : a + b = n) (b' : ) (hb' : b' = b + y) (n' : ) (hn' : n' = n + y) :
                CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₂ C y).obj K).ιTotal (ComplexShape.up ) a b n h) ((K.totalShift₂Iso y).hom.f n) = (a * y).negOnePow CategoryTheory.CategoryStruct.comp (K.shiftFunctor₂XXIso a b y b' hb').hom (CategoryTheory.CategoryStruct.comp (K.ιTotal (ComplexShape.up ) a b' n' ) (CochainComplex.shiftFunctorObjXIso (K.total (ComplexShape.up )) y n n' hn').inv)
                theorem HomologicalComplex₂.ι_totalShift₂Iso_hom_f_assoc {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (y : ) [K.HasTotal (ComplexShape.up )] (a : ) (b : ) (n : ) (h : a + b = n) (b' : ) (hb' : b' = b + y) (n' : ) (hn' : n' = n + y) {Z : C} (h : ((CategoryTheory.shiftFunctor (HomologicalComplex C (ComplexShape.up )) y).obj (K.total (ComplexShape.up ))).X n Z) :
                CategoryTheory.CategoryStruct.comp (((HomologicalComplex₂.shiftFunctor₂ C y).obj K).ιTotal (ComplexShape.up ) a b n h✝) (CategoryTheory.CategoryStruct.comp ((K.totalShift₂Iso y).hom.f n) h) = CategoryTheory.CategoryStruct.comp ((a * y).negOnePow CategoryTheory.CategoryStruct.comp (K.shiftFunctor₂XXIso a b y b' hb').hom (CategoryTheory.CategoryStruct.comp (K.ιTotal (ComplexShape.up ) a b' n' ) (CochainComplex.shiftFunctorObjXIso (K.total (ComplexShape.up )) y n n' hn').inv)) h
                theorem HomologicalComplex₂.ι_totalShift₂Iso_inv_f {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (y : ) [K.HasTotal (ComplexShape.up )] (a : ) (b : ) (n : ) (h : a + b = n) (b' : ) (n' : ) (hb' : a + b' = n') (hn' : n' = n + y) :
                CategoryTheory.CategoryStruct.comp (K.ιTotal (ComplexShape.up ) a b' n' hb') (CategoryTheory.CategoryStruct.comp (CochainComplex.shiftFunctorObjXIso (K.total (ComplexShape.up )) y n n' hn').inv ((K.totalShift₂Iso y).inv.f n)) = (a * y).negOnePow CategoryTheory.CategoryStruct.comp (K.shiftFunctor₂XXIso a b y b' ).inv (((HomologicalComplex₂.shiftFunctor₂ C y).obj K).ιTotal (ComplexShape.up ) a b n h)
                theorem HomologicalComplex₂.ι_totalShift₂Iso_inv_f_assoc {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] (K : HomologicalComplex₂ C (ComplexShape.up ) (ComplexShape.up )) (y : ) [K.HasTotal (ComplexShape.up )] (a : ) (b : ) (n : ) (h : a + b = n) (b' : ) (n' : ) (hb' : a + b' = n') (hn' : n' = n + y) {Z : C} (h : (((HomologicalComplex₂.shiftFunctor₂ C y).obj K).total (ComplexShape.up )).X n Z) :
                CategoryTheory.CategoryStruct.comp (K.ιTotal (ComplexShape.up ) a b' n' hb') (CategoryTheory.CategoryStruct.comp (CochainComplex.shiftFunctorObjXIso (K.total (ComplexShape.up )) y n n' hn').inv (CategoryTheory.CategoryStruct.comp ((K.totalShift₂Iso y).inv.f n) h)) = CategoryTheory.CategoryStruct.comp ((a * y).negOnePow CategoryTheory.CategoryStruct.comp (K.shiftFunctor₂XXIso a b y b' ).inv (((HomologicalComplex₂.shiftFunctor₂ C y).obj K).ιTotal (ComplexShape.up ) a b n h✝)) h

                The compatibility isomorphisms of the total complex with the shifts in both variables "commute" only up to a sign (x * y).negOnePow.