Theorem: SimplicialObject.Splitting.σ_comp_πSummand_id_eq_zero
File: Mathlib/AlgebraicTopology/DoldKan/SplitSimplicialObject.lean

tactic: apply s.hom_ext'
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
⊢ X.σ i ≫ s.πSummand (IndexSet.id { unop := [n + 1] }) = 0
state_after: case h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
⊢ ∀ (A : IndexSet { unop := [n] }),
    (s.cofan { unop := [n] }).inj A ≫ X.σ i ≫ s.πSummand (IndexSet.id { unop := [n + 1] }) =
      (s.cofan { unop := [n] }).inj A ≫ 0

tactic: intro A
state_before: case h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
⊢ ∀ (A : IndexSet { unop := [n] }),
    (s.cofan { unop := [n] }).inj A ≫ X.σ i ≫ s.πSummand (IndexSet.id { unop := [n + 1] }) =
      (s.cofan { unop := [n] }).inj A ≫ 0
state_after: case h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ (s.cofan { unop := [n] }).inj A ≫ X.σ i ≫ s.πSummand (IndexSet.id { unop := [n + 1] }) =
    (s.cofan { unop := [n] }).inj A ≫ 0

tactic: dsimp only [SimplicialObject.σ]
state_before: case h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ (s.cofan { unop := [n] }).inj A ≫ X.σ i ≫ s.πSummand (IndexSet.id { unop := [n + 1] }) =
    (s.cofan { unop := [n] }).inj A ≫ 0
state_after: case h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ (s.cofan { unop := [n] }).inj A ≫ X.map (SimplexCategory.σ i).op ≫ s.πSummand (IndexSet.id { unop := [n + 1] }) =
    (s.cofan { unop := [n] }).inj A ≫ 0

tactic: rw [comp_zero, s.cofan_inj_epi_naturality_assoc A (SimplexCategory.σ i).op,
  cofan_inj_πSummand_eq_zero]
state_before: case h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ (s.cofan { unop := [n] }).inj A ≫ X.map (SimplexCategory.σ i).op ≫ s.πSummand (IndexSet.id { unop := [n + 1] }) =
    (s.cofan { unop := [n] }).inj A ≫ 0
state_after: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ IndexSet.id { unop := [n + 1] } ≠ A.epiComp (SimplexCategory.σ i).op

tactic: rw [ne_comm]
state_before: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ IndexSet.id { unop := [n + 1] } ≠ A.epiComp (SimplexCategory.σ i).op
state_after: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ A.epiComp (SimplexCategory.σ i).op ≠ IndexSet.id { unop := [n + 1] }

tactic: change ¬(A.epiComp (SimplexCategory.σ i).op).EqId
state_before: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ A.epiComp (SimplexCategory.σ i).op ≠ IndexSet.id { unop := [n + 1] }
state_after: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ ¬(A.epiComp (SimplexCategory.σ i).op).EqId

tactic: rw [IndexSet.eqId_iff_len_eq]
state_before: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ ¬(A.epiComp (SimplexCategory.σ i).op).EqId
state_after: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ ¬(A.epiComp (SimplexCategory.σ i).op).fst.unop.len = { unop := [n + 1] }.unop.len

tactic: have h := SimplexCategory.len_le_of_epi (inferInstance : Epi A.e)
state_before: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
⊢ ¬(A.epiComp (SimplexCategory.σ i).op).fst.unop.len = { unop := [n + 1] }.unop.len
state_after: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
h : A.fst.unop.len ≤ { unop := [n] }.unop.len
⊢ ¬(A.epiComp (SimplexCategory.σ i).op).fst.unop.len = { unop := [n + 1] }.unop.len

tactic: dsimp at h ⊢
state_before: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
h : A.fst.unop.len ≤ { unop := [n] }.unop.len
⊢ ¬(A.epiComp (SimplexCategory.σ i).op).fst.unop.len = { unop := [n + 1] }.unop.len
state_after: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
h : A.fst.unop.len ≤ n
⊢ ¬A.fst.unop.len = n + 1

tactic: omega
state_before: case h.h
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X : SimplicialObject C
s : Splitting X
inst✝ : Preadditive C
n : ℕ
i : Fin (n + 1)
A : IndexSet { unop := [n] }
h : A.fst.unop.len ≤ n
⊢ ¬A.fst.unop.len = n + 1
state_after: no goals