Theorem: AlgebraicTopology.DoldKan.hσ'_naturality
File: Mathlib/AlgebraicTopology/DoldKan/Homotopies.lean

tactic: have h : n + 1 = m := hnm
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n m : ℕ
hnm : c.Rel m n
X Y : SimplicialObject C
f : X ⟶ Y
⊢ f.app { unop := [n] } ≫ hσ' q n m hnm = hσ' q n m hnm ≫ f.app { unop := [m] }
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n m : ℕ
hnm : c.Rel m n
X Y : SimplicialObject C
f : X ⟶ Y
h : n + 1 = m
⊢ f.app { unop := [n] } ≫ hσ' q n m hnm = hσ' q n m hnm ≫ f.app { unop := [m] }

tactic: subst h
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n m : ℕ
hnm : c.Rel m n
X Y : SimplicialObject C
f : X ⟶ Y
h : n + 1 = m
⊢ f.app { unop := [n] } ≫ hσ' q n m hnm = hσ' q n m hnm ≫ f.app { unop := [m] }
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
⊢ f.app { unop := [n] } ≫ hσ' q n (n + 1) hnm = hσ' q n (n + 1) hnm ≫ f.app { unop := [n + 1] }

tactic: simp only [hσ', eqToHom_refl, comp_id]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
⊢ f.app { unop := [n] } ≫ hσ' q n (n + 1) hnm = hσ' q n (n + 1) hnm ≫ f.app { unop := [n + 1] }
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
⊢ f.app { unop := [n] } ≫ hσ q n = hσ q n ≫ f.app { unop := [n + 1] }

tactic: unfold hσ
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
⊢ f.app { unop := [n] } ≫ hσ q n = hσ q n ≫ f.app { unop := [n + 1] }
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
⊢ (f.app { unop := [n] } ≫ if n < q then 0 else (-1) ^ (n - q) • Y.σ ⟨n - q, ⋯⟩) =
    (if n < q then 0 else (-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ f.app { unop := [n + 1] }

tactic: split_ifs
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
⊢ (f.app { unop := [n] } ≫ if n < q then 0 else (-1) ^ (n - q) • Y.σ ⟨n - q, ⋯⟩) =
    (if n < q then 0 else (-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ f.app { unop := [n + 1] }
state_after: case pos
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
h✝ : n < q
⊢ f.app { unop := [n] } ≫ 0 = 0 ≫ f.app { unop := [n + 1] }

case neg
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
h✝ : ¬n < q
⊢ f.app { unop := [n] } ≫ ((-1) ^ (n - q) • Y.σ ⟨n - q, ⋯⟩) =
    ((-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ f.app { unop := [n + 1] }

tactic: rw [zero_comp, comp_zero]
state_before: case pos
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
h✝ : n < q
⊢ f.app { unop := [n] } ≫ 0 = 0 ≫ f.app { unop := [n + 1] }
state_after: no goals

tactic: simp only [zsmul_comp, comp_zsmul]
state_before: case neg
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
h✝ : ¬n < q
⊢ f.app { unop := [n] } ≫ ((-1) ^ (n - q) • Y.σ ⟨n - q, ⋯⟩) =
    ((-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ f.app { unop := [n + 1] }
state_after: case neg
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
h✝ : ¬n < q
⊢ (-1) ^ (n - q) • f.app { unop := [n] } ≫ Y.σ ⟨n - q, ⋯⟩ = (-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩ ≫ f.app { unop := [n + 1] }

tactic: erw [f.naturality]
state_before: case neg
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
h✝ : ¬n < q
⊢ (-1) ^ (n - q) • f.app { unop := [n] } ≫ Y.σ ⟨n - q, ⋯⟩ = (-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩ ≫ f.app { unop := [n + 1] }
state_after: case neg
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
h✝ : ¬n < q
⊢ (-1) ^ (n - q) • f.app { unop := [n] } ≫ Y.σ ⟨n - q, ⋯⟩ =
    (-1) ^ (n - q) • f.app { unop := [n] } ≫ Y.map (SimplexCategory.σ ⟨n - q, ⋯⟩).op

tactic: rfl
state_before: case neg
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ : SimplicialObject C
q n : ℕ
X Y : SimplicialObject C
f : X ⟶ Y
hnm : c.Rel (n + 1) n
h✝ : ¬n < q
⊢ (-1) ^ (n - q) • f.app { unop := [n] } ≫ Y.σ ⟨n - q, ⋯⟩ =
    (-1) ^ (n - q) • f.app { unop := [n] } ≫ Y.map (SimplexCategory.σ ⟨n - q, ⋯⟩).op
state_after: no goals