File: Mathlib/AlgebraicTopology/DoldKan/Projections.lean

full_name: AlgebraicTopology.DoldKan.P
code: /-- This is the inductive definition of the projections `P q : K[X] ⟶ K[X]`,
with `P 0 := 𝟙 _` and `P (q+1) := P q ≫ (𝟙 _ + Hσ q)`. -/
noncomputable def P : ℕ → (K[X] ⟶ K[X])
  
goal: ℕ → (K[X] ⟶ K[X])

full_name: AlgebraicTopology.DoldKan.P_zero
code: lemma P_zero : (P 0 : K[X] ⟶ K[X]) = 𝟙 _ 
goal: AlgebraicTopology.DoldKan.P 0 = 𝟙 K[X]

full_name: AlgebraicTopology.DoldKan.P_succ
code: lemma P_succ (q : ℕ) : (P (q+1) : K[X] ⟶ K[X]) = P q ≫ (𝟙 _ + Hσ q) 
goal: AlgebraicTopology.DoldKan.P (q + 1) = AlgebraicTopology.DoldKan.P q ≫ (𝟙 K[X] + AlgebraicTopology.DoldKan.Hσ q)

full_name: AlgebraicTopology.DoldKan.P_f_0_eq
code: /-- All the `P q` coincide with `𝟙 _` in degree 0. -/
@[simp]
theorem P_f_0_eq (q : ℕ) : ((P q).f 0 : X _[0] ⟶ X _[0]) = 𝟙 _ 
goal: (AlgebraicTopology.DoldKan.P q).f 0 = 𝟙 (K[X].X 0)

full_name: AlgebraicTopology.DoldKan.Q
code: /-- `Q q` is the complement projection associated to `P q` -/
def Q (q : ℕ) : K[X] ⟶ K[X] 
goal: K[X] ⟶ K[X]

full_name: AlgebraicTopology.DoldKan.P_add_Q
code: theorem P_add_Q (q : ℕ) : P q + Q q = 𝟙 K[X] 
goal: AlgebraicTopology.DoldKan.P q + AlgebraicTopology.DoldKan.Q q = 𝟙 K[X]

full_name: AlgebraicTopology.DoldKan.P_add_Q_f
code: theorem P_add_Q_f (q n : ℕ) : (P q).f n + (Q q).f n = 𝟙 (X _[n]) 
goal: (AlgebraicTopology.DoldKan.P q).f n + (AlgebraicTopology.DoldKan.Q q).f n = 𝟙 (X _[n])

full_name: AlgebraicTopology.DoldKan.Q_zero
code: @[simp]
theorem Q_zero : (Q 0 : K[X] ⟶ _) = 0 
goal: AlgebraicTopology.DoldKan.Q 0 = 0

full_name: AlgebraicTopology.DoldKan.Q_succ
code: theorem Q_succ (q : ℕ) : (Q (q + 1) : K[X] ⟶ _) = Q q - P q ≫ Hσ q 
goal: AlgebraicTopology.DoldKan.Q (q + 1) =
  AlgebraicTopology.DoldKan.Q q - AlgebraicTopology.DoldKan.P q ≫ AlgebraicTopology.DoldKan.Hσ q

full_name: AlgebraicTopology.DoldKan.Q_f_0_eq
code: /-- All the `Q q` coincide with `0` in degree 0. -/
@[simp]
theorem Q_f_0_eq (q : ℕ) : ((Q q).f 0 : X _[0] ⟶ X _[0]) = 0 
goal: (AlgebraicTopology.DoldKan.Q q).f 0 = 0

full_name: AlgebraicTopology.DoldKan.HigherFacesVanish.of_P
code: /-- This lemma expresses the vanishing of
`(P q).f (n+1) ≫ X.δ k : X _[n+1] ⟶ X _[n]` when `k≠0` and `k≥n-q+2` -/
theorem of_P : ∀ q n : ℕ, HigherFacesVanish q ((P q).f (n + 1) : X _[n + 1] ⟶ X _[n + 1])
  
goal: AlgebraicTopology.DoldKan.HigherFacesVanish q ((AlgebraicTopology.DoldKan.P q).f (n + 1))

full_name: AlgebraicTopology.DoldKan.HigherFacesVanish.comp_P_eq_self
code: @[reassoc]
theorem comp_P_eq_self {Y : C} {n q : ℕ} {φ : Y ⟶ X _[n + 1]} (v : HigherFacesVanish q φ) :
    φ ≫ (P q).f (n + 1) = φ 
goal: φ ≫ (AlgebraicTopology.DoldKan.P q).f (n + 1) = φ

full_name: AlgebraicTopology.DoldKan.comp_P_eq_self_iff
code: theorem comp_P_eq_self_iff {Y : C} {n q : ℕ} {φ : Y ⟶ X _[n + 1]} :
    φ ≫ (P q).f (n + 1) = φ ↔ HigherFacesVanish q φ 
goal: φ ≫ (AlgebraicTopology.DoldKan.P q).f (n + 1) = φ ↔ AlgebraicTopology.DoldKan.HigherFacesVanish q φ

full_name: AlgebraicTopology.DoldKan.P_f_idem
code: @[reassoc (attr := simp)]
theorem P_f_idem (q n : ℕ) : ((P q).f n : X _[n] ⟶ _) ≫ (P q).f n = (P q).f n 
goal: (AlgebraicTopology.DoldKan.P q).f n ≫ (AlgebraicTopology.DoldKan.P q).f n = (AlgebraicTopology.DoldKan.P q).f n

full_name: AlgebraicTopology.DoldKan.Q_f_idem
code: @[reassoc (attr := simp)]
theorem Q_f_idem (q n : ℕ) : ((Q q).f n : X _[n] ⟶ _) ≫ (Q q).f n = (Q q).f n 
goal: (AlgebraicTopology.DoldKan.Q q).f n ≫ (AlgebraicTopology.DoldKan.Q q).f n = (AlgebraicTopology.DoldKan.Q q).f n

full_name: AlgebraicTopology.DoldKan.P_idem
code: @[reassoc (attr := simp)]
theorem P_idem (q : ℕ) : (P q : K[X] ⟶ K[X]) ≫ P q = P q 
goal: AlgebraicTopology.DoldKan.P q ≫ AlgebraicTopology.DoldKan.P q = AlgebraicTopology.DoldKan.P q

full_name: AlgebraicTopology.DoldKan.Q_idem
code: @[reassoc (attr := simp)]
theorem Q_idem (q : ℕ) : (Q q : K[X] ⟶ K[X]) ≫ Q q = Q q 
goal: AlgebraicTopology.DoldKan.Q q ≫ AlgebraicTopology.DoldKan.Q q = AlgebraicTopology.DoldKan.Q q

full_name: AlgebraicTopology.DoldKan.natTransP_app
code: /-- For each `q`, `P q` is a natural transformation. -/
@[simps]
def natTransP (q : ℕ) : alternatingFaceMapComplex C ⟶ alternatingFaceMapComplex C 
goal: (AlgebraicTopology.DoldKan.natTransP q).app X = AlgebraicTopology.DoldKan.P q

full_name: AlgebraicTopology.DoldKan.natTransP
code: /-- For each `q`, `P q` is a natural transformation. -/
@[simps]
def natTransP (q : ℕ) : alternatingFaceMapComplex C ⟶ alternatingFaceMapComplex C 
goal: AlgebraicTopology.alternatingFaceMapComplex C ⟶ AlgebraicTopology.alternatingFaceMapComplex C

full_name: AlgebraicTopology.DoldKan.P_f_naturality
code: @[reassoc (attr := simp)]
theorem P_f_naturality (q n : ℕ) {X Y : SimplicialObject C} (f : X ⟶ Y) :
    f.app (op [n]) ≫ (P q).f n = (P q).f n ≫ f.app (op [n]) 
goal: f.app (Opposite.op [n]) ≫ (AlgebraicTopology.DoldKan.P q).f n =
  (AlgebraicTopology.DoldKan.P q).f n ≫ f.app (Opposite.op [n])

full_name: AlgebraicTopology.DoldKan.Q_f_naturality
code: @[reassoc (attr := simp)]
theorem Q_f_naturality (q n : ℕ) {X Y : SimplicialObject C} (f : X ⟶ Y) :
    f.app (op [n]) ≫ (Q q).f n = (Q q).f n ≫ f.app (op [n]) 
goal: f.app (Opposite.op [n]) ≫ (AlgebraicTopology.DoldKan.Q q).f n =
  (AlgebraicTopology.DoldKan.Q q).f n ≫ f.app (Opposite.op [n])

full_name: AlgebraicTopology.DoldKan.natTransQ_app
code: /-- For each `q`, `Q q` is a natural transformation. -/
@[simps]
def natTransQ (q : ℕ) : alternatingFaceMapComplex C ⟶ alternatingFaceMapComplex C 
goal: (AlgebraicTopology.DoldKan.natTransQ q).app X = AlgebraicTopology.DoldKan.Q q

full_name: AlgebraicTopology.DoldKan.natTransQ
code: /-- For each `q`, `Q q` is a natural transformation. -/
@[simps]
def natTransQ (q : ℕ) : alternatingFaceMapComplex C ⟶ alternatingFaceMapComplex C 
goal: AlgebraicTopology.alternatingFaceMapComplex C ⟶ AlgebraicTopology.alternatingFaceMapComplex C

full_name: AlgebraicTopology.DoldKan.map_P
code: theorem map_P {D : Type*} [Category D] [Preadditive D] (G : C ⥤ D) [G.Additive]
    (X : SimplicialObject C) (q n : ℕ) :
    G.map ((P q : K[X] ⟶ _).f n) = (P q : K[((whiskering C D).obj G).obj X] ⟶ _).f n 
goal: G.map ((AlgebraicTopology.DoldKan.P q).f n) = (AlgebraicTopology.DoldKan.P q).f n

full_name: AlgebraicTopology.DoldKan.map_Q
code: theorem map_Q {D : Type*} [Category D] [Preadditive D] (G : C ⥤ D) [G.Additive]
    (X : SimplicialObject C) (q n : ℕ) :
    G.map ((Q q : K[X] ⟶ _).f n) = (Q q : K[((whiskering C D).obj G).obj X] ⟶ _).f n 
goal: G.map ((AlgebraicTopology.DoldKan.Q q).f n) = (AlgebraicTopology.DoldKan.Q q).f n