lemma ofComplex_exactAt_succ (n : ℕ) :
    (ofComplex Z).ExactAt (n + 1) := by
  rw [HomologicalComplex.exactAt_iff' _ (n + 1 + 1) (n + 1) n (by simp) (by simp)]
  cases n
  all_goals
    dsimp [ofComplex, HomologicalComplex.sc', HomologicalComplex.shortComplexFunctor',
      ChainComplex.mk, ChainComplex.mk']
    simp
    

Proof state:
case succ
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasProjectiveResolutions C
inst✝ : EnoughProjectives C
Z : C
n✝ : ℕ
⊢ ShortComplex.Exact
    (ShortComplex.mk
      (ChainComplex.mkAux (over Z) (syzygies (Projective.π Z)) (syzygies (d (Projective.π Z))) (d (Projective.π Z))
          (d (d (Projective.π Z)))
          (_ :
            {
                      fst :=
                        syzygies
                          { fst := over Z,
                                snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd,
                      snd :=
                        {
                          fst :=
                            d
                              { fst := over Z,
                                    snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd,
                          snd :=
                            (_ :
                              (Projective.π
                                      (kernel
                                        { fst := over Z,
                                              snd :=
                                                { fst := syzygies (Projective.π Z),
                                                  snd := d (Projective.π Z) } }.2.snd) ≫
                                    kernel.ι
                                      { fst := over Z,
                                            snd :=
                                              { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd) ≫
                                  { fst := over Z,
                                        snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd =
                                0) } }.snd.fst ≫
                { fst := over Z, snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.snd.snd =
              0)
          (fun t =>
            { fst := syzygies t.snd.snd.snd.snd.fst,
              snd :=
                { fst := d t.snd.snd.snd.snd.fst,
                  snd :=
                    (_ :
                      (Projective.π (kernel t.snd.snd.snd.snd.fst) ≫ kernel.ι t.snd.snd.snd.snd.fst) ≫
                          t.snd.snd.snd.snd.fst =
                        0) } })
          (Nat.succ n✝ + 1)).d₀
      (ChainComplex.mkAux (over Z) (syzygies (Projective.π Z)) (syzygies (d (Projective.π Z))) (d (Projective.π Z))
          (d (d (Projective.π Z)))
          (_ :
            {
                      fst :=
                        syzygies
                          { fst := over Z,
                                snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd,
                      snd :=
                        {
                          fst :=
                            d
                              { fst := over Z,
                                    snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd,
                          snd :=
                            (_ :
                              (Projective.π
                                      (kernel
                                        { fst := over Z,
                                              snd :=
                                                { fst := syzygies (Projective.π Z),
                                                  snd := d (Projective.π Z) } }.2.snd) ≫
                                    kernel.ι
                                      { fst := over Z,
                                            snd :=
                                              { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd) ≫
                                  { fst := over Z,
                                        snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd =
                                0) } }.snd.fst ≫
                { fst := over Z, snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.snd.snd =
              0)
          (fun t =>
            { fst := syzygies t.snd.snd.snd.snd.fst,
              snd :=
                { fst := d t.snd.snd.snd.snd.fst,
                  snd :=
                    (_ :
                      (Projective.π (kernel t.snd.snd.snd.snd.fst) ≫ kernel.ι t.snd.snd.snd.snd.fst) ≫
                          t.snd.snd.snd.snd.fst =
                        0) } })
          (Nat.succ n✝)).d₀
      (_ :
        (ChainComplex.mkAux (over Z) (syzygies (Projective.π Z)) (syzygies (d (Projective.π Z))) (d (Projective.π Z))
                (d (d (Projective.π Z)))
                (_ :
                  {
                            fst :=
                              syzygies
                                { fst := over Z,
                                      snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd,
                            snd :=
                              {
                                fst :=
                                  d
                                    { fst := over Z,
                                          snd :=
                                            { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd,
                                snd :=
                                  (_ :
                                    (Projective.π
                                            (kernel
                                              { fst := over Z,
                                                    snd :=
                                                      { fst := syzygies (Projective.π Z),
                                                        snd := d (Projective.π Z) } }.2.snd) ≫
                                          kernel.ι
                                            { fst := over Z,
                                                  snd :=
                                                    { fst := syzygies (Projective.π Z),
                                                      snd := d (Projective.π Z) } }.2.snd) ≫
                                        { fst := over Z,
                                              snd :=
                                                { fst := syzygies (Projective.π Z),
                                                  snd := d (Projective.π Z) } }.2.snd =
                                      0) } }.snd.fst ≫
                      { fst := over Z,
                            snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.snd.snd =
                    0)
                (fun t =>
                  { fst := syzygies t.snd.snd.snd.snd.fst,
                    snd :=
                      { fst := d t.snd.snd.snd.snd.fst,
                        snd :=
                          (_ :
                            (Projective.π (kernel t.snd.snd.snd.snd.fst) ≫ kernel.ι t.snd.snd.snd.snd.fst) ≫
                                t.snd.snd.snd.snd.fst =
                              0) } })
                (Nat.succ n✝ + 1)).d₀ ≫
            (ChainComplex.mkAux (over Z) (syzygies (Projective.π Z)) (syzygies (d (Projective.π Z)))
                (d (Projective.π Z)) (d (d (Projective.π Z)))
                (_ :
                  {
                            fst :=
                              syzygies
                                { fst := over Z,
                                      snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd,
                            snd :=
                              {
                                fst :=
                                  d
                                    { fst := over Z,
                                          snd :=
                                            { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.2.snd,
                                snd :=
                                  (_ :
                                    (Projective.π
                                            (kernel
                                              { fst := over Z,
                                                    snd :=
                                                      { fst := syzygies (Projective.π Z),
                                                        snd := d (Projective.π Z) } }.2.snd) ≫
                                          kernel.ι
                                            { fst := over Z,
                                                  snd :=
                                                    { fst := syzygies (Projective.π Z),
                                                      snd := d (Projective.π Z) } }.2.snd) ≫
                                        { fst := over Z,
                                              snd :=
                                                { fst := syzygies (Projective.π Z),
                                                  snd := d (Projective.π Z) } }.2.snd =
                                      0) } }.snd.fst ≫
                      { fst := over Z,
                            snd := { fst := syzygies (Projective.π Z), snd := d (Projective.π Z) } }.snd.snd =
                    0)
                (fun t =>
                  { fst := syzygies t.snd.snd.snd.snd.fst,
                    snd :=
                      { fst := d t.snd.snd.snd.snd.fst,
                        snd :=
                          (_ :
                            (Projective.π (kernel t.snd.snd.snd.snd.fst) ≫ kernel.ι t.snd.snd.snd.snd.fst) ≫
                                t.snd.snd.snd.snd.fst =
                              0) } })
                (Nat.succ n✝)).d₀ =
          0))

Next tactic:
apply exact_d_f