awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
P Q : CochainComplex.{v, u, 0} V ℕ
e : P ⟶ Q
zero : P.X 1 ⟶ Q.X 0
comm_zero : e.f 0 = P.d 0 1 ≫ zero
one : P.X 2 ⟶ Q.X 1
comm_one : e.f 1 = zero ≫ Q.d 0 1 + P.d 1 2 ≫ one
succ :
  (n : ℕ) →
    (p :
        (f : P.X (n + 1) ⟶ Q.X n) ×'
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') →
      (f'' : P.X (n + 3) ⟶ Q.X (n + 2)) ×'
        e.f (n + 2) =
          p.snd (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                    (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f').fst
                (β := fun (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ↦
                e.f (n + 1) =
                  p.fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×'
                          e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
                      Q.d n (n + 1) +
                    P.d (n + 1) (n + 2) ≫ f') ≫
              Q.d (n + 1) (n + 2) +
            P.d (n + 2) (n + 3) ≫ f''
i : ℕ
⊢ (xNextIso P ⋯).inv ≫
      PSigma.fst (β := fun (f' : xNext P (i + 1 + 1) ⟶ Q.X (i + 1 + 1)) ↦
        e.f (i + 1 + 1) =
          PSigma.fst (β := fun (f : P.X (i + 1 + 1) ⟶ xPrev Q (i + 1 + 1)) ↦
                (f' : xNext P (i + 1 + 1) ⟶ Q.X (i + 1 + 1)) ×'
                  e.f (i + 1 + 1) = f ≫ dTo Q (i + 1 + 1) + dFrom P (i + 1 + 1) ≫ f')
                (mkCoinductiveAux₂ e zero comm_zero one comm_one succ (i + 1 + 1)) ≫
              dTo Q (i + 1 + 1) +
            dFrom P (i + 1 + 1) ≫ f')
        (PSigma.snd (β := fun (f : P.X (i + 1 + 1) ⟶ xPrev Q (i + 1 + 1)) ↦
          (f' : xNext P (i + 1 + 1) ⟶ Q.X (i + 1 + 1)) ×'
            e.f (i + 1 + 1) = f ≫ dTo Q (i + 1 + 1) + dFrom P (i + 1 + 1) ≫ f')
          (mkCoinductiveAux₂ e zero comm_zero one comm_one succ (i + 1 + 1))) =
    PSigma.fst (β := fun (f : P.X (i + 1 + 1 + 1) ⟶ xPrev Q (i + 1 + 1 + 1)) ↦
        (f' : xNext P (i + 1 + 1 + 1) ⟶ Q.X (i + 1 + 1 + 1)) ×'
          e.f (i + 1 + 1 + 1) = f ≫ dTo Q (i + 1 + 1 + 1) + dFrom P (i + 1 + 1 + 1) ≫ f')
        (mkCoinductiveAux₂ e zero comm_zero one comm_one succ (i + 1 + 1 + 1)) ≫
      (xPrevIso Q ⋯).hom

Tactic:
simp [mkCoinductiveAux₂]

Premises used: Homotopy.mkCoinductiveAux₂
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f g : C ⟶ D
h k : D ⟶ E
i_1 : ι
P Q : CochainComplex.{v, u, 0} V ℕ
e : P ⟶ Q
zero : P.X 1 ⟶ Q.X 0
comm_zero : e.f 0 = P.d 0 1 ≫ zero
one : P.X 2 ⟶ Q.X 1
comm_one : e.f 1 = zero ≫ Q.d 0 1 + P.d 1 2 ≫ one
succ :
  (n : ℕ) →
    (p :
        (f : P.X (n + 1) ⟶ Q.X n) ×'
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') →
      (f'' : P.X (n + 3) ⟶ Q.X (n + 2)) ×'
        e.f (n + 2) =
          p.snd (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                    (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f').fst
                (β := fun (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ↦
                e.f (n + 1) =
                  p.fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×'
                          e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
                      Q.d n (n + 1) +
                    P.d (n + 1) (n + 2) ≫ f') ≫
              Q.d (n + 1) (n + 2) +
            P.d (n + 2) (n + 3) ≫ f''
i j : ℕ
w : ¬(ComplexShape.up ℕ).Rel j i
hnc : ¬j + 1 = i
⊢ Eq.{v + 1} (α := P.X i ⟶ Q.X j)
    (if h : j + 1 = i then
      (xNextIso P h).inv ≫
        (mkCoinductiveAux₂ e zero comm_zero one comm_one succ j).snd (β := fun (f : P.X j ⟶ xPrev Q j) ↦
              (f' : xNext P j ⟶ Q.X j) ×' e.f j = f ≫ dTo Q j + dFrom P j ≫ f').fst
          (β := fun (f' : xNext P j ⟶ Q.X j) ↦
          e.f j =
            (mkCoinductiveAux₂ e zero comm_zero one comm_one succ j).fst (β := fun (f : P.X j ⟶ xPrev Q j) ↦
                  (f' : xNext P j ⟶ Q.X j) ×' e.f j = f ≫ dTo Q j + dFrom P j ≫ f') ≫
                dTo Q j +
              dFrom P j ≫ f')
    else 0)
    0

Tactic:
rw [dif_neg]

Premises used: dif_neg
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f g : C ⟶ D
h k : D ⟶ E
i_1 : ι
P Q : CochainComplex.{v, u, 0} V ℕ
e : P ⟶ Q
zero : P.X 1 ⟶ Q.X 0
comm_zero : e.f 0 = P.d 0 1 ≫ zero
one : P.X 2 ⟶ Q.X 1
comm_one : e.f 1 = zero ≫ Q.d 0 1 + P.d 1 2 ≫ one
succ :
  (n : ℕ) →
    (p :
        (f : P.X (n + 1) ⟶ Q.X n) ×'
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') →
      (f'' : P.X (n + 3) ⟶ Q.X (n + 2)) ×'
        e.f (n + 2) =
          p.snd (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                    (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f').fst
                (β := fun (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ↦
                e.f (n + 1) =
                  p.fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×'
                          e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
                      Q.d n (n + 1) +
                    P.d (n + 1) (n + 2) ≫ f') ≫
              Q.d (n + 1) (n + 2) +
            P.d (n + 2) (n + 3) ≫ f''
i j : ℕ
w : ¬(ComplexShape.up ℕ).Rel j i
⊢ ¬j + 1 = i

Tactic:
w
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f g : C ⟶ D
h k : D ⟶ E
i_1 : ι
P Q : CochainComplex.{v, u, 0} V ℕ
e : P ⟶ Q
zero : P.X 1 ⟶ Q.X 0
comm_zero : e.f 0 = P.d 0 1 ≫ zero
one : P.X 2 ⟶ Q.X 1
comm_one : e.f 1 = zero ≫ Q.d 0 1 + P.d 1 2 ≫ one
succ :
  (n : ℕ) →
    (p :
        (f : P.X (n + 1) ⟶ Q.X n) ×'
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') →
      (f'' : P.X (n + 3) ⟶ Q.X (n + 2)) ×'
        e.f (n + 2) =
          p.snd (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                    (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f').fst
                (β := fun (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ↦
                e.f (n + 1) =
                  p.fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×'
                          e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
                      Q.d n (n + 1) +
                    P.d (n + 1) (n + 2) ≫ f') ≫
              Q.d (n + 1) (n + 2) +
            P.d (n + 2) (n + 3) ≫ f''
i j : ℕ
w : ¬(ComplexShape.up ℕ).Rel j i
⊢ ¬j + 1 = i

Tactic:
exact w
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f g : C ⟶ D
h k : D ⟶ E
i_1 : ι
P Q : CochainComplex.{v, u, 0} V ℕ
e : P ⟶ Q
zero : P.X 1 ⟶ Q.X 0
comm_zero : e.f 0 = P.d 0 1 ≫ zero
one : P.X 2 ⟶ Q.X 1
comm_one : e.f 1 = zero ≫ Q.d 0 1 + P.d 1 2 ≫ one
succ :
  (n : ℕ) →
    (p :
        (f : P.X (n + 1) ⟶ Q.X n) ×'
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') →
      (f'' : P.X (n + 3) ⟶ Q.X (n + 2)) ×'
        e.f (n + 2) =
          p.snd (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                    (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f').fst
                (β := fun (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ↦
                e.f (n + 1) =
                  p.fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×'
                          e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
                      Q.d n (n + 1) +
                    P.d (n + 1) (n + 2) ≫ f') ≫
              Q.d (n + 1) (n + 2) +
            P.d (n + 2) (n + 3) ≫ f''
i : ℕ
⊢ e.f i =
    HAdd.hAdd (α := P.X i ⟶ Q.X i) (β := P.X i ⟶ Q.X i)
      (((toPrev i : (a : (i j : ℕ) → P.X i ⟶ Q.X j) → P.X i ⟶ xPrev Q i) fun (i j : ℕ) ↦
            if h : j + 1 = i then
              (xNextIso P h).inv ≫
                (mkCoinductiveAux₂ e zero comm_zero one comm_one succ j).snd (β := fun (f : P.X j ⟶ xPrev Q j) ↦
                      (f' : xNext P j ⟶ Q.X j) ×' e.f j = f ≫ dTo Q j + dFrom P j ≫ f').fst
                  (β := fun (f' : xNext P j ⟶ Q.X j) ↦
                  e.f j =
                    (mkCoinductiveAux₂ e zero comm_zero one comm_one succ j).fst (β := fun (f : P.X j ⟶ xPrev Q j) ↦
                          (f' : xNext P j ⟶ Q.X j) ×' e.f j = f ≫ dTo Q j + dFrom P j ≫ f') ≫
                        dTo Q j +
                      dFrom P j ≫ f')
            else 0) ≫
          dTo Q i :
        P.X i ⟶ Q.X i)
      (dFrom P i ≫
        (fromNext i : (a : (i j : ℕ) → P.X i ⟶ Q.X j) → xNext P i ⟶ Q.X i) fun (i j : ℕ) ↦
          if h : j + 1 = i then
            (xNextIso P h).inv ≫
              (mkCoinductiveAux₂ e zero comm_zero one comm_one succ j).snd (β := fun (f : P.X j ⟶ xPrev Q j) ↦
                    (f' : xNext P j ⟶ Q.X j) ×' e.f j = f ≫ dTo Q j + dFrom P j ≫ f').fst
                (β := fun (f' : xNext P j ⟶ Q.X j) ↦
                e.f j =
                  (mkCoinductiveAux₂ e zero comm_zero one comm_one succ j).fst (β := fun (f : P.X j ⟶ xPrev Q j) ↦
                        (f' : xNext P j ⟶ Q.X j) ×' e.f j = f ≫ dTo Q j + dFrom P j ≫ f') ≫
                      dTo Q j +
                    dFrom P j ≫ f')
          else 0)

Tactic:
(mkCoinductiveAux₂ e zero comm_zero one comm_one succ i).2.2.trans ?_

Premises used: PSigma.snd, Homotopy.mkCoinductiveAux₂, Eq.trans
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : CochainComplex.{v, u, 0} V ℕ
e : P ⟶ Q
zero : P.X 1 ⟶ Q.X 0
comm_zero : e.f 0 = P.d 0 1 ≫ zero
one : P.X 2 ⟶ Q.X 1
comm_one : e.f 1 = zero ≫ Q.d 0 1 + P.d 1 2 ≫ one
succ :
  (n : ℕ) →
    (p :
        (f : P.X (n + 1) ⟶ Q.X n) ×'
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') →
      (f'' : P.X (n + 3) ⟶ Q.X (n + 2)) ×'
        e.f (n + 2) =
          p.snd (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                    (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f').fst
                (β := fun (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ↦
                e.f (n + 1) =
                  p.fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×'
                          e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
                      Q.d n (n + 1) +
                    P.d (n + 1) (n + 2) ≫ f') ≫
              Q.d (n + 1) (n + 2) +
            P.d (n + 2) (n + 3) ≫ f''
⊢ Eq (α := P.X 0 ⟶ xPrev Q 0)
    (PSigma.fst (β := fun (f : P.X 0 ⟶ xPrev Q 0) ↦ (f' : xNext P 0 ⟶ Q.X 0) ×' e.f 0 = f ≫ dTo Q 0 + dFrom P 0 ≫ f')
      (mkCoinductiveAux₂ e zero comm_zero one comm_one succ 0))
    ((toPrev 0 : (a : (i j : ℕ) → P.X i ⟶ Q.X j) → P.X 0 ⟶ xPrev Q 0) fun (i j : ℕ) ↦
      if h : j + 1 = i then
        (xNextIso P h).inv ≫
          (mkCoinductiveAux₂ e zero comm_zero one comm_one succ j).snd (β := fun (f : P.X j ⟶ xPrev Q j) ↦
                (f' : xNext P j ⟶ Q.X j) ×' e.f j = f ≫ dTo Q j + dFrom P j ≫ f').fst
            (β := fun (f' : xNext P j ⟶ Q.X j) ↦
            e.f j =
              (mkCoinductiveAux₂ e zero comm_zero one comm_one succ j).fst (β := fun (f : P.X j ⟶ xPrev Q j) ↦
                    (f' : xNext P j ⟶ Q.X j) ×' e.f j = f ≫ dTo Q j + dFrom P j ≫ f') ≫
                  dTo Q j +
                dFrom P j ≫ f')
      else 0)

Tactic:
dsimp [toPrev, mkCoinductiveAux₂]

Premises used: toPrev, Homotopy.mkCoinductiveAux₂
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : CochainComplex.{v, u, 0} V ℕ
e : P ⟶ Q
zero : P.X 1 ⟶ Q.X 0
comm_zero : e.f 0 = P.d 0 1 ≫ zero
one : P.X 2 ⟶ Q.X 1
comm_one : e.f 1 = zero ≫ Q.d 0 1 + P.d 1 2 ≫ one
succ :
  (n : ℕ) →
    (p :
        (f : P.X (n + 1) ⟶ Q.X n) ×'
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') →
      (f'' : P.X (n + 3) ⟶ Q.X (n + 2)) ×'
        e.f (n + 2) =
          p.snd (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                    (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f').fst
                (β := fun (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ↦
                e.f (n + 1) =
                  p.fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×'
                          e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
                      Q.d n (n + 1) +
                    P.d (n + 1) (n + 2) ≫ f') ≫
              Q.d (n + 1) (n + 2) +
            P.d (n + 2) (n + 3) ≫ f''
n : ℕ
e_a :
  (mkCoinductiveAux₁ e zero one comm_one succ n).fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
      eqToHom ⋯ =
    ((mkCoinductiveAux₁ e zero one comm_one succ n).fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
        eqToHom ⋯) ≫
      𝟙 (xPrev Q (n + 1))
⊢ (mkCoinductiveAux₁ e zero one comm_one succ n).fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
      Iso.inv (xPrevIso Q ⋯) =
    PSigma.fst (β := fun (f : P.X (n + 1) ⟶ xPrev Q (n + 1)) ↦
        (f' : xNext P (n + 1) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ dTo Q (n + 1) + dFrom P (n + 1) ≫ f')
        (mkCoinductiveAux₂ e zero comm_zero one comm_one succ (n + 1)) ≫
      (xPrevIso Q ⋯).hom

Tactic:
dsimp [xPrevIso]

Premises used: HomologicalComplex.xPrevIso
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : CochainComplex.{v, u, 0} V ℕ
e : P ⟶ Q
zero : P.X 1 ⟶ Q.X 0
comm_zero : e.f 0 = P.d 0 1 ≫ zero
one : P.X 2 ⟶ Q.X 1
comm_one : e.f 1 = zero ≫ Q.d 0 1 + P.d 1 2 ≫ one
succ :
  (n : ℕ) →
    (p :
        (f : P.X (n + 1) ⟶ Q.X n) ×'
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') →
      (f'' : P.X (n + 3) ⟶ Q.X (n + 2)) ×'
        e.f (n + 2) =
          p.snd (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                    (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f').fst
                (β := fun (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ↦
                e.f (n + 1) =
                  p.fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×'
                          e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
                      Q.d n (n + 1) +
                    P.d (n + 1) (n + 2) ≫ f') ≫
              Q.d (n + 1) (n + 2) +
            P.d (n + 2) (n + 3) ≫ f''
n : ℕ
e_a e_a₁ :
  (mkCoinductiveAux₁ e zero one comm_one succ n).fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
      eqToHom ⋯ =
    (mkCoinductiveAux₁ e zero one comm_one succ n).fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
      eqToHom ⋯
⊢ (mkCoinductiveAux₁ e zero one comm_one succ n).fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
      eqToHom ⋯ =
    ((mkCoinductiveAux₁ e zero one comm_one succ n).fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
        eqToHom ⋯) ≫
      𝟙 (xPrev Q (n + 1))

Tactic:
rw [comp_id]

Premises used: CategoryTheory.Category.comp_id
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f g : C ⟶ D
h k : D ⟶ E
i_1 : ι
P Q : CochainComplex.{v, u, 0} V ℕ
e : P ⟶ Q
zero : P.X 1 ⟶ Q.X 0
comm_zero : e.f 0 = P.d 0 1 ≫ zero
one : P.X 2 ⟶ Q.X 1
comm_one : e.f 1 = zero ≫ Q.d 0 1 + P.d 1 2 ≫ one
succ :
  (n : ℕ) →
    (p :
        (f : P.X (n + 1) ⟶ Q.X n) ×'
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') →
      (f'' : P.X (n + 3) ⟶ Q.X (n + 2)) ×'
        e.f (n + 2) =
          p.snd (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                    (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f').fst
                (β := fun (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ↦
                e.f (n + 1) =
                  p.fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×'
                          e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
                      Q.d n (n + 1) +
                    P.d (n + 1) (n + 2) ≫ f') ≫
              Q.d (n + 1) (n + 2) +
            P.d (n + 2) (n + 3) ≫ f''
i : ℕ
⊢ i + 1 = (ComplexShape.up ℕ).next i

Tactic:
simp only [CochainComplex.next]

Premises used: CochainComplex.next
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f g : C ⟶ D
h k : D ⟶ E
i_1 : ι
P Q : CochainComplex.{v, u, 0} V ℕ
e : P ⟶ Q
zero : P.X 1 ⟶ Q.X 0
comm_zero : e.f 0 = P.d 0 1 ≫ zero
one : P.X 2 ⟶ Q.X 1
comm_one : e.f 1 = zero ≫ Q.d 0 1 + P.d 1 2 ≫ one
succ :
  (n : ℕ) →
    (p :
        (f : P.X (n + 1) ⟶ Q.X n) ×'
          (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') →
      (f'' : P.X (n + 3) ⟶ Q.X (n + 2)) ×'
        e.f (n + 2) =
          p.snd (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                    (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×' e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f').fst
                (β := fun (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ↦
                e.f (n + 1) =
                  p.fst (β := fun (f : P.X (n + 1) ⟶ Q.X n) ↦
                        (f' : P.X (n + 2) ⟶ Q.X (n + 1)) ×'
                          e.f (n + 1) = f ≫ Q.d n (n + 1) + P.d (n + 1) (n + 2) ≫ f') ≫
                      Q.d n (n + 1) +
                    P.d (n + 1) (n + 2) ≫ f') ≫
              Q.d (n + 1) (n + 2) +
            P.d (n + 2) (n + 3) ≫ f''
i : ℕ
⊢ (mkCoinductiveAux₂ e zero comm_zero one comm_one succ i).snd (β := fun (f : P.X i ⟶ xPrev Q i) ↦
          (f' : xNext P i ⟶ Q.X i) ×' e.f i = f ≫ dTo Q i + dFrom P i ≫ f').fst
      (β := fun (f' : xNext P i ⟶ Q.X i) ↦
      e.f i =
        (mkCoinductiveAux₂ e zero comm_zero one comm_one succ i).fst (β := fun (f : P.X i ⟶ xPrev Q i) ↦
              (f' : xNext P i ⟶ Q.X i) ×' e.f i = f ≫ dTo Q i + dFrom P i ≫ f') ≫
            dTo Q i +
          dFrom P i ≫ f') =
    (xNextIso P ⋯).inv ≫
      (mkCoinductiveAux₂ e zero comm_zero one comm_one succ i).snd (β := fun (f : P.X i ⟶ xPrev Q i) ↦
            (f' : xNext P i ⟶ Q.X i) ×' e.f i = f ≫ dTo Q i + dFrom P i ≫ f').fst
        (β := fun (f' : xNext P i ⟶ Q.X i) ↦
        e.f i =
          (mkCoinductiveAux₂ e zero comm_zero one comm_one succ i).fst (β := fun (f : P.X i ⟶ xPrev Q i) ↦
                (f' : xNext P i ⟶ Q.X i) ×' e.f i = f ≫ dTo Q i + dFrom P i ≫ f') ≫
              dTo Q i +
            dFrom P i ≫ f')

Tactic:
simp [xNextIso, id_comp]

Premises used: HomologicalComplex.xNextIso, CategoryTheory.Category.id_comp
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C_1 D E : HomologicalComplex.{v, u, u_1} V c
f g : C_1 ⟶ D
h k : D ⟶ E
i : ι
C : HomologicalComplex.{v, u, u_1} V c
⊢ 𝟙 C ≫ 𝟙 C = 𝟙 C

Tactic:
simp
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C_1 D_1 E_1 : HomologicalComplex.{v, u, u_1} V c
f_1 g_1 : C_1 ⟶ D_1
h k : D_1 ⟶ E_1
i : ι
C D E : HomologicalComplex.{v, u, u_1} V c
f : HomotopyEquiv C D
g : HomotopyEquiv D E
⊢ Homotopy ((f.hom ≫ g.hom) ≫ g.inv ≫ f.inv) (𝟙 C)

Tactic:
simpa using
    ((g.homotopyHomInvId.compRightId f.inv).compLeft f.hom).trans f.homotopyHomInvId

Premises used: Homotopy.compRightId, HomotopyEquiv.hom, HomotopyEquiv.inv, Homotopy.trans, Homotopy.compLeft, HomotopyEquiv.homotopyHomInvId
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C_1 D_1 E_1 : HomologicalComplex.{v, u, u_1} V c
f_1 g_1 : C_1 ⟶ D_1
h k : D_1 ⟶ E_1
i : ι
C D E : HomologicalComplex.{v, u, u_1} V c
f : HomotopyEquiv C D
g : HomotopyEquiv D E
⊢ Homotopy ((g.inv ≫ f.inv) ≫ f.hom ≫ g.hom) (𝟙 E)

Tactic:
simpa using
    ((f.homotopyInvHomId.compRightId g.hom).compLeft g.inv).trans g.homotopyInvHomId

Premises used: Homotopy.compRightId, HomotopyEquiv.homotopyInvHomId, HomotopyEquiv.hom, HomotopyEquiv.inv, Homotopy.trans, Homotopy.compLeft
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f_1 g_1 : C ⟶ D
h_1 k : D ⟶ E
i_1 : ι
W : Type u_2
inst_2 : Category.{v_1, u_2} W
inst_3 : Preadditive.{v_1, u_2} W
F : Functor.{v, v_1, u, u_2} V W
inst_4 : F.Additive
f g : C ⟶ D
h : Homotopy f g
i j : ι
w : ¬c.Rel j i
dsimp : F.map (h.hom i j) = 0
⊢ F.map (h.hom i j) = 0

Tactic:
dsimp
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f_1 g_1 : C ⟶ D
h_1 k : D ⟶ E
i_1 : ι
W : Type u_2
inst_2 : Category.{v_1, u_2} W
inst_3 : Preadditive.{v_1, u_2} W
F : Functor.{v, v_1, u, u_2} V W
inst_4 : F.Additive
f g : C ⟶ D
h : Homotopy f g
i j : ι
w : ¬c.Rel j i
rw : Eq (α := F.obj (C.X i) ⟶ F.obj (D.X j)) (F.map 0) 0
rw₁ rw₂ : Eq.{v_1 + 1} (α := F.obj (C.X i) ⟶ F.obj (D.X j)) 0 0
⊢ F.map (h.hom i j) = 0

Tactic:
rw [h.zero i j w, F.map_zero]

Premises used: CategoryTheory.Functor.map_zero, Homotopy.zero
-- Module: Mathlib.Algebra.Homology.Homotopy
Goal:
ι : Type u_1
V : Type u
inst : Category.{v, u} V
inst_1 : Preadditive.{v, u} V
c : ComplexShape ι
C D E : HomologicalComplex.{v, u, u_1} V c
f_1 g_1 : C ⟶ D
h_1 k : D ⟶ E
i_1 : ι
W : Type u_2
inst_2 : Category.{v_1, u_2} W
inst_3 : Preadditive.{v_1, u_2} W
F : Functor.{v, v_1, u, u_2} V W
inst_4 : F.Additive
f g : C ⟶ D
h : Homotopy f g
i : ι
⊢ f.f i =
    HAdd.hAdd (α := C.X i ⟶ D.X i) (β := C.X i ⟶ D.X i)
        ((dNext i : (a : (i j : ι) → C.X i ⟶ D.X j) → C.X i ⟶ D.X i) h.hom : C.X i ⟶ D.X i)
        ((prevD i : (a : (i j : ι) → C.X i ⟶ D.X j) → C.X i ⟶ D.X i) h.hom : C.X i ⟶ D.X i) +
      g.f i

Tactic:
have H := h.comm i