Documentation

Mathlib.Algebra.Homology.SpectralObject.HasSpectralSequence

Shapes of spectral sequences obtained from a spectral object #

This file prepares for the construction of the spectral sequence of a spectral object in an abelian category which shall be conducted in the file Mathlib/Algebra/Homology/SpectralObject/SpectralSequence.lean (TODO).

In this file, we introduce a structure SpectralSequenceDataCore which contains a recipe for the construction of the pages of the spectral sequence. For example, from a spectral object X indexed by EInt the definition coreE₂Cohomological will allow to construct an E₂ cohomological spectral sequence such that the object on position (p, q) on the rth page is E^{p + q}(q - r + 2 ≤ q ≤ q + 1 ≤ q + r - 1). The data (and properties) in the structure SpectralSequenceDataCore allow to define the pages and the differentials directly from the SpectralObject API from the files Mathlib/Algebra/Homology/SpectralObject/Page.lean and Mathlib/Algebra/Homology/SpectralObject/Differentials.lean. However, the computation of the homology of the differentials in Mathlib/Algebra/Homology/SpectralObject/Homology.lean may not directly apply: we introduce a typeclass HasSpectralSequence which puts additional conditions on the spectral object so that the homology of a page identifies to the next page. These conditions are automatically satisfied for coreE₂Cohomological, but this design allows to obtain a spectral sequence with objects of the pages indexed by ℕ × ℕ instead of ℤ × ℤ when suitable conditions are satisfied by a spectral object indexed by EInt (see coreE₂CohomologicalNat and the typeclass IsFirstQuadrant).

structure CategoryTheory.Abelian.SpectralObject.SpectralSequenceDataCore (ι : Type u_2) {κ : Type u_3} [Preorder ι] (c : ComplexShape κ) (r₀ : ) :
Type (max u_2 u_3)

This data is a recipe in order to produce a spectral sequence starting on page r₀ (where the rth page is of shape c r) from a spectral object indexed by ι. The object on page r at the position pq : κ shall be E^(deg pq)(i₀ ≤ i₁i₂ ≤ i₃), where i₀i₁i₂i₃ are elements in the index type ι of the spectral object and deg pq : ℤ is a cohomological degree. The indices i₀ and i₃ depend on r and pq, but i₁, i₂ only depend on pq. Various conditions are added in order to construct the differentials on the pages and show that the homology of a page identifies to the next page; in certain cases, additional conditions may be required on the spectral object.

  • deg : κ

    The cohomological degree of objects in the pages

  • i₀ (r : ) (pq : κ) (hr : r₀ r := by lia) : ι

    The zeroth index

  • i₁ (pq : κ) : ι

    The first index

  • i₂ (pq : κ) : ι

    The second index

  • i₃ (r : ) (pq : κ) (hr : r₀ r := by lia) : ι

    The third index

  • le₀₁ (r : ) (pq : κ) (hr : r₀ r := by lia) : self.i₀ r pq self.i₁ pq
  • le₁₂ (pq : κ) : self.i₁ pq self.i₂ pq
  • le₂₃ (r : ) (pq : κ) (hr : r₀ r := by lia) : self.i₂ pq self.i₃ r pq
  • hc (r : ) (pq pq' : κ) (hpq : (c r).Rel pq pq') (hr : r₀ r := by lia) : self.deg pq + 1 = self.deg pq'
  • hc₀₂ (r : ) (pq pq' : κ) (hpq : (c r).Rel pq pq') (hr : r₀ r := by lia) : self.i₀ r pq = self.i₂ pq'
  • hc₁₃ (r : ) (pq pq' : κ) (hpq : (c r).Rel pq pq') (hr : r₀ r := by lia) : self.i₁ pq = self.i₃ r pq'
  • antitone_i₀ (r r' : ) (pq : κ) (hr : r₀ r := by lia) (hrr' : r r' := by lia) : self.i₀ r' pq self.i₀ r pq
  • monotone_i₃ (r r' : ) (pq : κ) (hr : r₀ r := by lia) (hrr' : r r' := by lia) : self.i₃ r pq self.i₃ r' pq
  • i₀_prev (r r' : ) (pq pq' : κ) (hpq : (c r).Rel pq pq') (hrr' : r + 1 = r' := by lia) (hr : r₀ r := by lia) : self.i₀ r' pq = self.i₁ pq'
  • i₃_next (r r' : ) (pq pq' : κ) (hpq : (c r).Rel pq pq') (hrr' : r + 1 = r' := by lia) (hr : r₀ r := by lia) : self.i₃ r' pq' = self.i₂ pq
Instances For
    theorem CategoryTheory.Abelian.SpectralObject.SpectralSequenceDataCore.i₀_le {ι : Type u_2} {κ : Type u_3} [Preorder ι] {c : ComplexShape κ} {r₀ : } (data : SpectralSequenceDataCore ι c r₀) (r r' : ) (pq : κ) (hrr' : r + 1 = r' := by lia) (hr : r₀ r := by lia) :
    data.i₀ r' pq data.i₀ r pq
    theorem CategoryTheory.Abelian.SpectralObject.SpectralSequenceDataCore.i₃_le {ι : Type u_2} {κ : Type u_3} [Preorder ι] {c : ComplexShape κ} {r₀ : } (data : SpectralSequenceDataCore ι c r₀) (r r' : ) (pq : κ) (hrr' : r + 1 = r' := by lia) (hr : r₀ r := by lia) :
    data.i₃ r pq data.i₃ r' pq
    theorem CategoryTheory.Abelian.SpectralObject.SpectralSequenceDataCore.i₀_le' {ι : Type u_2} {κ : Type u_3} [Preorder ι] {c : ComplexShape κ} {r₀ : } (data : SpectralSequenceDataCore ι c r₀) {r r' : } (hrr' : r + 1 = r') (hr : r₀ r) (pq' : κ) {i₀' i₀ : ι} (hi₀' : i₀' = data.i₀ r' pq' ) (hi₀ : i₀ = data.i₀ r pq' ) :
    i₀' i₀
    theorem CategoryTheory.Abelian.SpectralObject.SpectralSequenceDataCore.le₀₁' {ι : Type u_2} {κ : Type u_3} [Preorder ι] {c : ComplexShape κ} {r₀ : } (data : SpectralSequenceDataCore ι c r₀) (r : ) (hr : r₀ r) (pq' : κ) {i₀ i₁ : ι} (hi₀ : i₀ = data.i₀ r pq' ) (hi₁ : i₁ = data.i₁ pq') :
    i₀ i₁
    theorem CategoryTheory.Abelian.SpectralObject.SpectralSequenceDataCore.le₁₂' {ι : Type u_2} {κ : Type u_3} [Preorder ι] {c : ComplexShape κ} {r₀ : } (data : SpectralSequenceDataCore ι c r₀) (pq' : κ) {i₁ i₂ : ι} (hi₁ : i₁ = data.i₁ pq') (hi₂ : i₂ = data.i₂ pq') :
    i₁ i₂
    theorem CategoryTheory.Abelian.SpectralObject.SpectralSequenceDataCore.le₂₃' {ι : Type u_2} {κ : Type u_3} [Preorder ι] {c : ComplexShape κ} {r₀ : } (data : SpectralSequenceDataCore ι c r₀) (r : ) (hr : r₀ r) (pq' : κ) {i₂ i₃ : ι} (hi₂ : i₂ = data.i₂ pq') (hi₃ : i₃ = data.i₃ r pq' ) :
    i₂ i₃
    theorem CategoryTheory.Abelian.SpectralObject.SpectralSequenceDataCore.le₃₃' {ι : Type u_2} {κ : Type u_3} [Preorder ι] {c : ComplexShape κ} {r₀ : } (data : SpectralSequenceDataCore ι c r₀) {r r' : } (hrr' : r + 1 = r') (hr : r₀ r) (pq' : κ) {i₃ i₃' : ι} (hi₃ : i₃ = data.i₃ r pq' ) (hi₃' : i₃' = data.i₃ r' pq' ) :
    i₃ i₃'

    The data which allows to construct an E₂-cohomological spectral sequence indexed by ℤ × ℤ from a spectral object indexed by EInt.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      The data which allows to construct an E₂-cohomological spectral sequence indexed by ℕ × ℕ from a spectral object indexed by EInt. (Note: additional assumptions on the spectral object are required for the construction of the spectral sequence from this.)

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        The data which allows to construct an E₂-cohomological spectral sequence indexed by ℤ × Fin l from a spectral object indexed by Fin (l + 1).

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem CategoryTheory.Abelian.SpectralObject.coreE₂CohomologicalFin_i₃ (l : ) (r : ) (pq : × Fin l) (hr : 2 r) :
          (coreE₂CohomologicalFin l).i₃ r pq hr = Fin.clamp (pq.2 + (r - 1)).toNat l
          @[simp]
          theorem CategoryTheory.Abelian.SpectralObject.coreE₂CohomologicalFin_i₀ (l : ) (r : ) (pq : × Fin l) (hr : 2 r) :
          (coreE₂CohomologicalFin l).i₀ r pq hr = (pq.2 - (r - 2)).toNat,

          The data which allows to construct an E₂-homological spectral sequence indexed by ℕ × ℕ from a spectral object indexed by EInt. (Note: additional assumptions on the spectral object are required for the construction of the spectral sequence from this.)

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            class CategoryTheory.Abelian.SpectralObject.HasSpectralSequence {C : Type u_1} {ι : Type u_2} {κ : Type u_3} [Category.{v_1, u_1} C] [Abelian C] [Preorder ι] {c : ComplexShape κ} {r₀ : } (X : SpectralObject C ι) (data : SpectralSequenceDataCore ι c r₀) :

            Given X : SpectralObject C ι and data : SpectralSequenceDataCore ι c r₀, this is the property which allows to construct a spectral sequence by using the recipe given by data. The conditions given allow to show that the homology of a page identifies to the next page.

            Instances
              theorem CategoryTheory.Abelian.SpectralObject.isZero_H_obj_mk₁_i₀_le {C : Type u_1} {ι : Type u_2} {κ : Type u_3} [Category.{v_1, u_1} C] [Abelian C] [Preorder ι] {c : ComplexShape κ} {r₀ : } (X : SpectralObject C ι) (data : SpectralSequenceDataCore ι c r₀) [X.HasSpectralSequence data] (r r' : ) (hrr' : r + 1 = r') (hr : r₀ r) (pq : κ) (hpq : ∀ (pq' : κ), ¬(c r).Rel pq pq') (n : ) (hn : n = data.deg pq + 1) :
              theorem CategoryTheory.Abelian.SpectralObject.isZero_H_obj_mk₁_i₀_le' {C : Type u_1} {ι : Type u_2} {κ : Type u_3} [Category.{v_1, u_1} C] [Abelian C] [Preorder ι] {c : ComplexShape κ} {r₀ : } (X : SpectralObject C ι) (data : SpectralSequenceDataCore ι c r₀) [X.HasSpectralSequence data] (r r' : ) (hrr' : r + 1 = r') (hr : r₀ r) (pq : κ) (hpq : ∀ (pq' : κ), ¬(c r).Rel pq pq') (n : ) (hn : n = data.deg pq + 1) (i₀' i₀ : ι) (hi₀' : i₀' = data.i₀ r' pq ) (hi₀ : i₀ = data.i₀ r pq ) :
              theorem CategoryTheory.Abelian.SpectralObject.isZero_H_obj_mk₁_i₃_le {C : Type u_1} {ι : Type u_2} {κ : Type u_3} [Category.{v_1, u_1} C] [Abelian C] [Preorder ι] {c : ComplexShape κ} {r₀ : } (X : SpectralObject C ι) (data : SpectralSequenceDataCore ι c r₀) [X.HasSpectralSequence data] (r r' : ) (hrr' : r + 1 = r') (hr : r₀ r) (pq : κ) (hpq : ∀ (pq' : κ), ¬(c r).Rel pq' pq) (n : ) (hn : n = data.deg pq - 1) :
              theorem CategoryTheory.Abelian.SpectralObject.isZero_H_obj_mk₁_i₃_le' {C : Type u_1} {ι : Type u_2} {κ : Type u_3} [Category.{v_1, u_1} C] [Abelian C] [Preorder ι] {c : ComplexShape κ} {r₀ : } (X : SpectralObject C ι) (data : SpectralSequenceDataCore ι c r₀) [X.HasSpectralSequence data] (r r' : ) (hrr' : r + 1 = r') (hr : r₀ r) (pq : κ) (hpq : ∀ (pq' : κ), ¬(c r).Rel pq' pq) (n : ) (hn : n = data.deg pq - 1) (i₃ i₃' : ι) (hi₃ : i₃ = data.i₃ r pq ) (hi₃' : i₃' = data.i₃ r' pq ) :