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']
    

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
      (HomologicalComplex.d
        (ChainComplex.of
          (fun n =>
            (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) } })
                n).X₀)
          (fun n =>
            (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) } })
                n).d₀)
          (_ :
            ∀ (n : ℕ),
              (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) } })
                      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) } })
                      n).d₀ =
                0))
        (Nat.succ n✝ + 1 + 1) (Nat.succ n✝ + 1))
      (HomologicalComplex.d
        (ChainComplex.of
          (fun n =>
            (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) } })
                n).X₀)
          (fun n =>
            (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) } })
                n).d₀)
          (_ :
            ∀ (n : ℕ),
              (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) } })
                      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) } })
                      n).d₀ =
                0))
        (Nat.succ n✝ + 1) (Nat.succ n✝))
      (_ :
        HomologicalComplex.d
              (ChainComplex.of
                (fun n =>
                  (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) } })
                      n).X₀)
                (fun n =>
                  (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) } })
                      n).d₀)
                (_ :
                  ∀ (n : ℕ),
                    (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) } })
                            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) } })
                            n).d₀ =
                      0))
              (Nat.succ n✝ + 1 + 1) (Nat.succ n✝ + 1) ≫
            HomologicalComplex.d
              (ChainComplex.of
                (fun n =>
                  (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) } })
                      n).X₀)
                (fun n =>
                  (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) } })
                      n).d₀)
                (_ :
                  ∀ (n : ℕ),
                    (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) } })
                            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) } })
                            n).d₀ =
                      0))
              (Nat.succ n✝ + 1) (Nat.succ n✝) =
          0))

Next tactic:
simp