Theorem: CategoryTheory.ComposableArrows.ext_succ
File: Mathlib/CategoryTheory/ComposableArrows.lean

tactic: intro ⟨i, hi⟩
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
⊢ ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
state_after: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
i : ℕ
hi : i < n + 1 + 1
⊢ F.obj ⟨i, hi⟩ = G.obj ⟨i, hi⟩

tactic: cases' i with i
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
i : ℕ
hi : i < n + 1 + 1
⊢ F.obj ⟨i, hi⟩ = G.obj ⟨i, hi⟩
state_after: case zero
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
hi : 0 < n + 1 + 1
⊢ F.obj ⟨0, hi⟩ = G.obj ⟨0, hi⟩

case succ
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
i : ℕ
hi : i + 1 < n + 1 + 1
⊢ F.obj ⟨i + 1, hi⟩ = G.obj ⟨i + 1, hi⟩

tactic: exact h₀
state_before: case zero
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
hi : 0 < n + 1 + 1
⊢ F.obj ⟨0, hi⟩ = G.obj ⟨0, hi⟩
state_after: no goals

tactic: exact Functor.congr_obj h ⟨i, by valid⟩
state_before: case succ
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
i : ℕ
hi : i + 1 < n + 1 + 1
⊢ F.obj ⟨i + 1, hi⟩ = G.obj ⟨i + 1, hi⟩
state_after: no goals

tactic: valid
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
i : ℕ
hi : i + 1 < n + 1 + 1
⊢ i < n + 1
state_after: no goals

tactic: rw [w]
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
⊢ F.map' 0 1 ⋯ ⋯ ≫ app' (eqToIso h).hom 0 ⋯ = (eqToIso h₀).hom ≫ G.map' 0 1 ⋯ ⋯
state_after: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
⊢ (eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯) ≫ app' (eqToIso h).hom 0 ⋯ = (eqToIso h₀).hom ≫ G.map' 0 1 ⋯ ⋯

tactic: dsimp [app']
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
⊢ (eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯) ≫ app' (eqToIso h).hom 0 ⋯ = (eqToIso h₀).hom ≫ G.map' 0 1 ⋯ ⋯
state_after: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
⊢ (eqToHom h₀ ≫ G.map (homOfLE ⋯) ≫ eqToHom ⋯) ≫ (eqToHom h).app 0 = eqToHom h₀ ≫ G.map (homOfLE ⋯)

tactic: erw [eqToHom_app, assoc, assoc, eqToHom_trans, eqToHom_refl, comp_id]
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
⊢ (eqToHom h₀ ≫ G.map (homOfLE ⋯) ≫ eqToHom ⋯) ≫ (eqToHom h).app 0 = eqToHom h₀ ≫ G.map (homOfLE ⋯)
state_after: no goals

tactic: rintro ⟨i, hi⟩
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
⊢ ∀ (X : Fin (n + 1 + 1)), (isoMkSucc (eqToIso h₀) (eqToIso h) ⋯).hom.app X = eqToHom ⋯
state_after: case mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
i : ℕ
hi : i < n + 1 + 1
⊢ (isoMkSucc (eqToIso h₀) (eqToIso h) ⋯).hom.app ⟨i, hi⟩ = eqToHom ⋯

tactic: dsimp
state_before: case mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
i : ℕ
hi : i < n + 1 + 1
⊢ (isoMkSucc (eqToIso h₀) (eqToIso h) ⋯).hom.app ⟨i, hi⟩ = eqToHom ⋯
state_after: case mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
i : ℕ
hi : i < n + 1 + 1
⊢ (homMkSucc (eqToHom h₀) (eqToHom h) ⋯).app ⟨i, hi⟩ = eqToHom ⋯

tactic: cases' i with i
state_before: case mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
i : ℕ
hi : i < n + 1 + 1
⊢ (homMkSucc (eqToHom h₀) (eqToHom h) ⋯).app ⟨i, hi⟩ = eqToHom ⋯
state_after: case mk.zero
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
hi : 0 < n + 1 + 1
⊢ (homMkSucc (eqToHom h₀) (eqToHom h) ⋯).app ⟨0, hi⟩ = eqToHom ⋯

case mk.succ
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
i : ℕ
hi : i + 1 < n + 1 + 1
⊢ (homMkSucc (eqToHom h₀) (eqToHom h) ⋯).app ⟨i + 1, hi⟩ = eqToHom ⋯

tactic: erw [homMkSucc_app_zero]
state_before: case mk.zero
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
hi : 0 < n + 1 + 1
⊢ (homMkSucc (eqToHom h₀) (eqToHom h) ⋯).app ⟨0, hi⟩ = eqToHom ⋯
state_after: no goals

tactic: erw [homMkSucc_app_succ]
state_before: case mk.succ
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
i : ℕ
hi : i + 1 < n + 1 + 1
⊢ (homMkSucc (eqToHom h₀) (eqToHom h) ⋯).app ⟨i + 1, hi⟩ = eqToHom ⋯
state_after: case mk.succ
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
i : ℕ
hi : i + 1 < n + 1 + 1
⊢ app' (eqToHom h) i ⋯ = eqToHom ⋯

tactic: dsimp [app']
state_before: case mk.succ
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
i : ℕ
hi : i + 1 < n + 1 + 1
⊢ app' (eqToHom h) i ⋯ = eqToHom ⋯
state_after: case mk.succ
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
i : ℕ
hi : i + 1 < n + 1 + 1
⊢ (eqToHom h).app ⟨i, ⋯⟩ = eqToHom ⋯

tactic: erw [eqToHom_app]
state_before: case mk.succ
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C (n + 1)
h₀ : F.obj' 0 ⋯ = G.obj' 0 ⋯
h : F.δ₀ = G.δ₀
w : F.map' 0 1 ⋯ ⋯ = eqToHom h₀ ≫ G.map' 0 1 ⋯ ⋯ ≫ eqToHom ⋯
this : ∀ (i : Fin (n + 1 + 1)), F.obj i = G.obj i
i : ℕ
hi : i + 1 < n + 1 + 1
⊢ (eqToHom h).app ⟨i, ⋯⟩ = eqToHom ⋯
state_after: no goals