File: Mathlib/AlgebraicTopology/DoldKan/Homotopies.lean

full_name: AlgebraicTopology.DoldKan.c
code: /-- As we are using chain complexes indexed by `ℕ`, we shall need the relation
`c` such `c m n` if and only if `n+1=m`. -/
abbrev c 
goal: ComplexShape ℕ

full_name: AlgebraicTopology.DoldKan.c_mk
code: /-- Helper when we need some `c.rel i j` (i.e. `ComplexShape.down ℕ`),
e.g. `c_mk n (n+1) rfl` -/
theorem c_mk (i j : ℕ) (h : j + 1 = i) : c.Rel i j 
goal: AlgebraicTopology.DoldKan.c.Rel i j

full_name: AlgebraicTopology.DoldKan.cs_down_0_not_rel_left
code: /-- This lemma is meant to be used with `nullHomotopicMap'_f_of_not_rel_left` -/
theorem cs_down_0_not_rel_left (j : ℕ) : ¬c.Rel 0 j 
goal: ¬AlgebraicTopology.DoldKan.c.Rel 0 j

full_name: AlgebraicTopology.DoldKan.hσ
code: /-- The sequence of maps which gives the null homotopic maps `Hσ` that shall be in
the inductive construction of the projections `P q : K[X] ⟶ K[X]` -/
def hσ (q : ℕ) (n : ℕ) : X _[n] ⟶ X _[n + 1] 
goal: X _[n] ⟶ X _[n + 1]

full_name: AlgebraicTopology.DoldKan.hσ'
code: /-- We can turn `hσ` into a datum that can be passed to `nullHomotopicMap'`. -/
def hσ' (q : ℕ) : ∀ n m, c.Rel m n → (K[X].X n ⟶ K[X].X m) 
goal: AlgebraicTopology.DoldKan.c.Rel m n → (K[X].X n ⟶ K[X].X m)

full_name: AlgebraicTopology.DoldKan.hσ'_eq_zero
code: theorem hσ'_eq_zero {q n m : ℕ} (hnq : n < q) (hnm : c.Rel m n) :
    (hσ' q n m hnm : X _[n] ⟶ X _[m]) = 0 
goal: AlgebraicTopology.DoldKan.hσ' q n m hnm = 0

full_name: AlgebraicTopology.DoldKan.hσ'_eq
code: theorem hσ'_eq {q n a m : ℕ} (ha : n = a + q) (hnm : c.Rel m n) :
    (hσ' q n m hnm : X _[n] ⟶ X _[m]) =
      ((-1 : ℤ) ^ a • X.σ ⟨a, Nat.lt_succ_iff.mpr (Nat.le.intro (Eq.symm ha))⟩) ≫
        eqToHom (by congr) 
goal: AlgebraicTopology.DoldKan.hσ' q n m hnm = ((-1) ^ a • X.σ ⟨a, ⋯⟩) ≫ CategoryTheory.eqToHom ⋯

full_name: AlgebraicTopology.DoldKan.hσ'_eq'
code: theorem hσ'_eq' {q n a : ℕ} (ha : n = a + q) :
    (hσ' q n (n + 1) rfl : X _[n] ⟶ X _[n + 1]) =
      (-1 : ℤ) ^ a • X.σ ⟨a, Nat.lt_succ_iff.mpr (Nat.le.intro (Eq.symm ha))⟩ 
goal: AlgebraicTopology.DoldKan.hσ' q n (n + 1) ⋯ = (-1) ^ a • X.σ ⟨a, ⋯⟩

full_name: AlgebraicTopology.DoldKan.Hσ
code: /-- The null homotopic map $(hσ q) ∘ d + d ∘ (hσ q)$ -/
def Hσ (q : ℕ) : K[X] ⟶ K[X] 
goal: K[X] ⟶ K[X]

full_name: AlgebraicTopology.DoldKan.homotopyHσToZero
code: /-- `Hσ` is null homotopic -/
def homotopyHσToZero (q : ℕ) : Homotopy (Hσ q : K[X] ⟶ K[X]) 0 
goal: Homotopy (AlgebraicTopology.DoldKan.Hσ q) 0

full_name: AlgebraicTopology.DoldKan.Hσ_eq_zero
code: /-- In degree `0`, the null homotopic map `Hσ` is zero. -/
theorem Hσ_eq_zero (q : ℕ) : (Hσ q : K[X] ⟶ K[X]).f 0 = 0 
goal: (AlgebraicTopology.DoldKan.Hσ q).f 0 = 0

full_name: AlgebraicTopology.DoldKan.hσ'_naturality
code: /-- The maps `hσ' q n m hnm` are natural on the simplicial object -/
theorem hσ'_naturality (q : ℕ) (n m : ℕ) (hnm : c.Rel m n) {X Y : SimplicialObject C} (f : X ⟶ Y) :
    f.app (op [n]) ≫ hσ' q n m hnm = hσ' q n m hnm ≫ f.app (op [m]) 
goal: f.app (Opposite.op [n]) ≫ AlgebraicTopology.DoldKan.hσ' q n m hnm =
  AlgebraicTopology.DoldKan.hσ' q n m hnm ≫ f.app (Opposite.op [m])

full_name: AlgebraicTopology.DoldKan.natTransHσ
code: /-- For each q, `Hσ q` is a natural transformation. -/
def natTransHσ (q : ℕ) : alternatingFaceMapComplex C ⟶ alternatingFaceMapComplex C 
goal: AlgebraicTopology.alternatingFaceMapComplex C ⟶ AlgebraicTopology.alternatingFaceMapComplex C

full_name: AlgebraicTopology.DoldKan.map_hσ'
code: /-- The maps `hσ' q n m hnm` are compatible with the application of additive functors. -/
theorem map_hσ' {D : Type*} [Category D] [Preadditive D] (G : C ⥤ D) [G.Additive]
    (X : SimplicialObject C) (q n m : ℕ) (hnm : c.Rel m n) :
    (hσ' q n m hnm : K[((whiskering _ _).obj G).obj X].X n ⟶ _) =
      G.map (hσ' q n m hnm : K[X].X n ⟶ _) 
goal: AlgebraicTopology.DoldKan.hσ' q n m hnm = G.map (AlgebraicTopology.DoldKan.hσ' q n m hnm)

full_name: AlgebraicTopology.DoldKan.map_Hσ
code: /-- The null homotopic maps `Hσ` are compatible with the application of additive functors. -/
theorem map_Hσ {D : Type*} [Category D] [Preadditive D] (G : C ⥤ D) [G.Additive]
    (X : SimplicialObject C) (q n : ℕ) :
    (Hσ q : K[((whiskering C D).obj G).obj X] ⟶ _).f n = G.map ((Hσ q : K[X] ⟶ _).f n) 
goal: (AlgebraicTopology.DoldKan.Hσ q).f n = G.map ((AlgebraicTopology.DoldKan.Hσ q).f n)