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

Proof state:
case succ
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Abelian C
inst✝ : EnoughInjectives C
Z : C
n✝ : ℕ
⊢ ShortComplex.Exact
    (ShortComplex.mk
      (HomologicalComplex.d
        (CochainComplex.of
          (fun n =>
            (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                (_ :
                  { fst := under Z, snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                      {
                            fst :=
                              syzygies
                                { fst := under Z,
                                      snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                            snd :=
                              {
                                fst :=
                                  d
                                    { fst := under Z,
                                          snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                snd :=
                                  (_ :
                                    { fst := under Z,
                                              snd :=
                                                { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd ≫
                                        cokernel.π
                                            { fst := under Z,
                                                  snd :=
                                                    { fst := syzygies (Injective.ι Z),
                                                      snd := d (Injective.ι Z) } }.2.snd ≫
                                          Injective.ι
                                            (cokernel
                                              { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd) =
                                      0) } }.snd.fst =
                    0)
                (fun t =>
                  { fst := syzygies t.snd.snd.snd.snd.fst,
                    snd :=
                      { fst := d t.snd.snd.snd.snd.fst,
                        snd :=
                          (_ :
                            t.snd.snd.snd.snd.fst ≫
                                cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                              0) } })
                n).X₀)
          (fun n =>
            (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                (_ :
                  { fst := under Z, snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                      {
                            fst :=
                              syzygies
                                { fst := under Z,
                                      snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                            snd :=
                              {
                                fst :=
                                  d
                                    { fst := under Z,
                                          snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                snd :=
                                  (_ :
                                    { fst := under Z,
                                              snd :=
                                                { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd ≫
                                        cokernel.π
                                            { fst := under Z,
                                                  snd :=
                                                    { fst := syzygies (Injective.ι Z),
                                                      snd := d (Injective.ι Z) } }.2.snd ≫
                                          Injective.ι
                                            (cokernel
                                              { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd) =
                                      0) } }.snd.fst =
                    0)
                (fun t =>
                  { fst := syzygies t.snd.snd.snd.snd.fst,
                    snd :=
                      { fst := d t.snd.snd.snd.snd.fst,
                        snd :=
                          (_ :
                            t.snd.snd.snd.snd.fst ≫
                                cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                              0) } })
                n).d₀)
          (_ :
            ∀ (n : ℕ),
              (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                      (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                      (_ :
                        { fst := under Z,
                                  snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                            {
                                  fst :=
                                    syzygies
                                      { fst := under Z,
                                            snd :=
                                              { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                  snd :=
                                    {
                                      fst :=
                                        d
                                          { fst := under Z,
                                                snd :=
                                                  { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                      snd :=
                                        (_ :
                                          { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd ≫
                                              cokernel.π
                                                  { fst := under Z,
                                                        snd :=
                                                          { fst := syzygies (Injective.ι Z),
                                                            snd := d (Injective.ι Z) } }.2.snd ≫
                                                Injective.ι
                                                  (cokernel
                                                    { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd) =
                                            0) } }.snd.fst =
                          0)
                      (fun t =>
                        { fst := syzygies t.snd.snd.snd.snd.fst,
                          snd :=
                            { fst := d t.snd.snd.snd.snd.fst,
                              snd :=
                                (_ :
                                  t.snd.snd.snd.snd.fst ≫
                                      cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                    0) } })
                      n).d₀ ≫
                  (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                      (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                      (_ :
                        { fst := under Z,
                                  snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                            {
                                  fst :=
                                    syzygies
                                      { fst := under Z,
                                            snd :=
                                              { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                  snd :=
                                    {
                                      fst :=
                                        d
                                          { fst := under Z,
                                                snd :=
                                                  { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                      snd :=
                                        (_ :
                                          { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd ≫
                                              cokernel.π
                                                  { fst := under Z,
                                                        snd :=
                                                          { fst := syzygies (Injective.ι Z),
                                                            snd := d (Injective.ι Z) } }.2.snd ≫
                                                Injective.ι
                                                  (cokernel
                                                    { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd) =
                                            0) } }.snd.fst =
                          0)
                      (fun t =>
                        { fst := syzygies t.snd.snd.snd.snd.fst,
                          snd :=
                            { fst := d t.snd.snd.snd.snd.fst,
                              snd :=
                                (_ :
                                  t.snd.snd.snd.snd.fst ≫
                                      cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                    0) } })
                      n).d₁ =
                0))
        (Nat.succ n✝) (Nat.succ n✝ + 1))
      (HomologicalComplex.d
        (CochainComplex.of
          (fun n =>
            (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                (_ :
                  { fst := under Z, snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                      {
                            fst :=
                              syzygies
                                { fst := under Z,
                                      snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                            snd :=
                              {
                                fst :=
                                  d
                                    { fst := under Z,
                                          snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                snd :=
                                  (_ :
                                    { fst := under Z,
                                              snd :=
                                                { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd ≫
                                        cokernel.π
                                            { fst := under Z,
                                                  snd :=
                                                    { fst := syzygies (Injective.ι Z),
                                                      snd := d (Injective.ι Z) } }.2.snd ≫
                                          Injective.ι
                                            (cokernel
                                              { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd) =
                                      0) } }.snd.fst =
                    0)
                (fun t =>
                  { fst := syzygies t.snd.snd.snd.snd.fst,
                    snd :=
                      { fst := d t.snd.snd.snd.snd.fst,
                        snd :=
                          (_ :
                            t.snd.snd.snd.snd.fst ≫
                                cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                              0) } })
                n).X₀)
          (fun n =>
            (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                (_ :
                  { fst := under Z, snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                      {
                            fst :=
                              syzygies
                                { fst := under Z,
                                      snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                            snd :=
                              {
                                fst :=
                                  d
                                    { fst := under Z,
                                          snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                snd :=
                                  (_ :
                                    { fst := under Z,
                                              snd :=
                                                { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd ≫
                                        cokernel.π
                                            { fst := under Z,
                                                  snd :=
                                                    { fst := syzygies (Injective.ι Z),
                                                      snd := d (Injective.ι Z) } }.2.snd ≫
                                          Injective.ι
                                            (cokernel
                                              { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd) =
                                      0) } }.snd.fst =
                    0)
                (fun t =>
                  { fst := syzygies t.snd.snd.snd.snd.fst,
                    snd :=
                      { fst := d t.snd.snd.snd.snd.fst,
                        snd :=
                          (_ :
                            t.snd.snd.snd.snd.fst ≫
                                cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                              0) } })
                n).d₀)
          (_ :
            ∀ (n : ℕ),
              (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                      (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                      (_ :
                        { fst := under Z,
                                  snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                            {
                                  fst :=
                                    syzygies
                                      { fst := under Z,
                                            snd :=
                                              { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                  snd :=
                                    {
                                      fst :=
                                        d
                                          { fst := under Z,
                                                snd :=
                                                  { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                      snd :=
                                        (_ :
                                          { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd ≫
                                              cokernel.π
                                                  { fst := under Z,
                                                        snd :=
                                                          { fst := syzygies (Injective.ι Z),
                                                            snd := d (Injective.ι Z) } }.2.snd ≫
                                                Injective.ι
                                                  (cokernel
                                                    { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd) =
                                            0) } }.snd.fst =
                          0)
                      (fun t =>
                        { fst := syzygies t.snd.snd.snd.snd.fst,
                          snd :=
                            { fst := d t.snd.snd.snd.snd.fst,
                              snd :=
                                (_ :
                                  t.snd.snd.snd.snd.fst ≫
                                      cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                    0) } })
                      n).d₀ ≫
                  (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                      (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                      (_ :
                        { fst := under Z,
                                  snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                            {
                                  fst :=
                                    syzygies
                                      { fst := under Z,
                                            snd :=
                                              { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                  snd :=
                                    {
                                      fst :=
                                        d
                                          { fst := under Z,
                                                snd :=
                                                  { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                      snd :=
                                        (_ :
                                          { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd ≫
                                              cokernel.π
                                                  { fst := under Z,
                                                        snd :=
                                                          { fst := syzygies (Injective.ι Z),
                                                            snd := d (Injective.ι Z) } }.2.snd ≫
                                                Injective.ι
                                                  (cokernel
                                                    { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd) =
                                            0) } }.snd.fst =
                          0)
                      (fun t =>
                        { fst := syzygies t.snd.snd.snd.snd.fst,
                          snd :=
                            { fst := d t.snd.snd.snd.snd.fst,
                              snd :=
                                (_ :
                                  t.snd.snd.snd.snd.fst ≫
                                      cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                    0) } })
                      n).d₁ =
                0))
        (Nat.succ n✝ + 1) (Nat.succ n✝ + 1 + 1))
      (_ :
        HomologicalComplex.d
              (CochainComplex.of
                (fun n =>
                  (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                      (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                      (_ :
                        { fst := under Z,
                                  snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                            {
                                  fst :=
                                    syzygies
                                      { fst := under Z,
                                            snd :=
                                              { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                  snd :=
                                    {
                                      fst :=
                                        d
                                          { fst := under Z,
                                                snd :=
                                                  { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                      snd :=
                                        (_ :
                                          { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd ≫
                                              cokernel.π
                                                  { fst := under Z,
                                                        snd :=
                                                          { fst := syzygies (Injective.ι Z),
                                                            snd := d (Injective.ι Z) } }.2.snd ≫
                                                Injective.ι
                                                  (cokernel
                                                    { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd) =
                                            0) } }.snd.fst =
                          0)
                      (fun t =>
                        { fst := syzygies t.snd.snd.snd.snd.fst,
                          snd :=
                            { fst := d t.snd.snd.snd.snd.fst,
                              snd :=
                                (_ :
                                  t.snd.snd.snd.snd.fst ≫
                                      cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                    0) } })
                      n).X₀)
                (fun n =>
                  (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                      (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                      (_ :
                        { fst := under Z,
                                  snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                            {
                                  fst :=
                                    syzygies
                                      { fst := under Z,
                                            snd :=
                                              { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                  snd :=
                                    {
                                      fst :=
                                        d
                                          { fst := under Z,
                                                snd :=
                                                  { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                      snd :=
                                        (_ :
                                          { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd ≫
                                              cokernel.π
                                                  { fst := under Z,
                                                        snd :=
                                                          { fst := syzygies (Injective.ι Z),
                                                            snd := d (Injective.ι Z) } }.2.snd ≫
                                                Injective.ι
                                                  (cokernel
                                                    { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd) =
                                            0) } }.snd.fst =
                          0)
                      (fun t =>
                        { fst := syzygies t.snd.snd.snd.snd.fst,
                          snd :=
                            { fst := d t.snd.snd.snd.snd.fst,
                              snd :=
                                (_ :
                                  t.snd.snd.snd.snd.fst ≫
                                      cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                    0) } })
                      n).d₀)
                (_ :
                  ∀ (n : ℕ),
                    (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                            (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                            (_ :
                              { fst := under Z,
                                        snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                                  {
                                        fst :=
                                          syzygies
                                            { fst := under Z,
                                                  snd :=
                                                    { fst := syzygies (Injective.ι Z),
                                                      snd := d (Injective.ι Z) } }.2.snd,
                                        snd :=
                                          {
                                            fst :=
                                              d
                                                { fst := under Z,
                                                      snd :=
                                                        { fst := syzygies (Injective.ι Z),
                                                          snd := d (Injective.ι Z) } }.2.snd,
                                            snd :=
                                              (_ :
                                                { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd ≫
                                                    cokernel.π
                                                        { fst := under Z,
                                                              snd :=
                                                                { fst := syzygies (Injective.ι Z),
                                                                  snd := d (Injective.ι Z) } }.2.snd ≫
                                                      Injective.ι
                                                        (cokernel
                                                          { fst := under Z,
                                                                snd :=
                                                                  { fst := syzygies (Injective.ι Z),
                                                                    snd := d (Injective.ι Z) } }.2.snd) =
                                                  0) } }.snd.fst =
                                0)
                            (fun t =>
                              { fst := syzygies t.snd.snd.snd.snd.fst,
                                snd :=
                                  { fst := d t.snd.snd.snd.snd.fst,
                                    snd :=
                                      (_ :
                                        t.snd.snd.snd.snd.fst ≫
                                            cokernel.π t.snd.snd.snd.snd.fst ≫
                                              Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                          0) } })
                            n).d₀ ≫
                        (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                            (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                            (_ :
                              { fst := under Z,
                                        snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                                  {
                                        fst :=
                                          syzygies
                                            { fst := under Z,
                                                  snd :=
                                                    { fst := syzygies (Injective.ι Z),
                                                      snd := d (Injective.ι Z) } }.2.snd,
                                        snd :=
                                          {
                                            fst :=
                                              d
                                                { fst := under Z,
                                                      snd :=
                                                        { fst := syzygies (Injective.ι Z),
                                                          snd := d (Injective.ι Z) } }.2.snd,
                                            snd :=
                                              (_ :
                                                { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd ≫
                                                    cokernel.π
                                                        { fst := under Z,
                                                              snd :=
                                                                { fst := syzygies (Injective.ι Z),
                                                                  snd := d (Injective.ι Z) } }.2.snd ≫
                                                      Injective.ι
                                                        (cokernel
                                                          { fst := under Z,
                                                                snd :=
                                                                  { fst := syzygies (Injective.ι Z),
                                                                    snd := d (Injective.ι Z) } }.2.snd) =
                                                  0) } }.snd.fst =
                                0)
                            (fun t =>
                              { fst := syzygies t.snd.snd.snd.snd.fst,
                                snd :=
                                  { fst := d t.snd.snd.snd.snd.fst,
                                    snd :=
                                      (_ :
                                        t.snd.snd.snd.snd.fst ≫
                                            cokernel.π t.snd.snd.snd.snd.fst ≫
                                              Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                          0) } })
                            n).d₁ =
                      0))
              (Nat.succ n✝) (Nat.succ n✝ + 1) ≫
            HomologicalComplex.d
              (CochainComplex.of
                (fun n =>
                  (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                      (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                      (_ :
                        { fst := under Z,
                                  snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                            {
                                  fst :=
                                    syzygies
                                      { fst := under Z,
                                            snd :=
                                              { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                  snd :=
                                    {
                                      fst :=
                                        d
                                          { fst := under Z,
                                                snd :=
                                                  { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                      snd :=
                                        (_ :
                                          { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd ≫
                                              cokernel.π
                                                  { fst := under Z,
                                                        snd :=
                                                          { fst := syzygies (Injective.ι Z),
                                                            snd := d (Injective.ι Z) } }.2.snd ≫
                                                Injective.ι
                                                  (cokernel
                                                    { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd) =
                                            0) } }.snd.fst =
                          0)
                      (fun t =>
                        { fst := syzygies t.snd.snd.snd.snd.fst,
                          snd :=
                            { fst := d t.snd.snd.snd.snd.fst,
                              snd :=
                                (_ :
                                  t.snd.snd.snd.snd.fst ≫
                                      cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                    0) } })
                      n).X₀)
                (fun n =>
                  (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                      (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                      (_ :
                        { fst := under Z,
                                  snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                            {
                                  fst :=
                                    syzygies
                                      { fst := under Z,
                                            snd :=
                                              { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                  snd :=
                                    {
                                      fst :=
                                        d
                                          { fst := under Z,
                                                snd :=
                                                  { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.2.snd,
                                      snd :=
                                        (_ :
                                          { fst := under Z,
                                                    snd :=
                                                      { fst := syzygies (Injective.ι Z),
                                                        snd := d (Injective.ι Z) } }.2.snd ≫
                                              cokernel.π
                                                  { fst := under Z,
                                                        snd :=
                                                          { fst := syzygies (Injective.ι Z),
                                                            snd := d (Injective.ι Z) } }.2.snd ≫
                                                Injective.ι
                                                  (cokernel
                                                    { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd) =
                                            0) } }.snd.fst =
                          0)
                      (fun t =>
                        { fst := syzygies t.snd.snd.snd.snd.fst,
                          snd :=
                            { fst := d t.snd.snd.snd.snd.fst,
                              snd :=
                                (_ :
                                  t.snd.snd.snd.snd.fst ≫
                                      cokernel.π t.snd.snd.snd.snd.fst ≫ Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                    0) } })
                      n).d₀)
                (_ :
                  ∀ (n : ℕ),
                    (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                            (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                            (_ :
                              { fst := under Z,
                                        snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                                  {
                                        fst :=
                                          syzygies
                                            { fst := under Z,
                                                  snd :=
                                                    { fst := syzygies (Injective.ι Z),
                                                      snd := d (Injective.ι Z) } }.2.snd,
                                        snd :=
                                          {
                                            fst :=
                                              d
                                                { fst := under Z,
                                                      snd :=
                                                        { fst := syzygies (Injective.ι Z),
                                                          snd := d (Injective.ι Z) } }.2.snd,
                                            snd :=
                                              (_ :
                                                { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd ≫
                                                    cokernel.π
                                                        { fst := under Z,
                                                              snd :=
                                                                { fst := syzygies (Injective.ι Z),
                                                                  snd := d (Injective.ι Z) } }.2.snd ≫
                                                      Injective.ι
                                                        (cokernel
                                                          { fst := under Z,
                                                                snd :=
                                                                  { fst := syzygies (Injective.ι Z),
                                                                    snd := d (Injective.ι Z) } }.2.snd) =
                                                  0) } }.snd.fst =
                                0)
                            (fun t =>
                              { fst := syzygies t.snd.snd.snd.snd.fst,
                                snd :=
                                  { fst := d t.snd.snd.snd.snd.fst,
                                    snd :=
                                      (_ :
                                        t.snd.snd.snd.snd.fst ≫
                                            cokernel.π t.snd.snd.snd.snd.fst ≫
                                              Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                          0) } })
                            n).d₀ ≫
                        (CochainComplex.mkAux (under Z) (syzygies (Injective.ι Z)) (syzygies (d (Injective.ι Z)))
                            (d (Injective.ι Z)) (d (d (Injective.ι Z)))
                            (_ :
                              { fst := under Z,
                                        snd := { fst := syzygies (Injective.ι Z), snd := d (Injective.ι Z) } }.snd.snd ≫
                                  {
                                        fst :=
                                          syzygies
                                            { fst := under Z,
                                                  snd :=
                                                    { fst := syzygies (Injective.ι Z),
                                                      snd := d (Injective.ι Z) } }.2.snd,
                                        snd :=
                                          {
                                            fst :=
                                              d
                                                { fst := under Z,
                                                      snd :=
                                                        { fst := syzygies (Injective.ι Z),
                                                          snd := d (Injective.ι Z) } }.2.snd,
                                            snd :=
                                              (_ :
                                                { fst := under Z,
                                                          snd :=
                                                            { fst := syzygies (Injective.ι Z),
                                                              snd := d (Injective.ι Z) } }.2.snd ≫
                                                    cokernel.π
                                                        { fst := under Z,
                                                              snd :=
                                                                { fst := syzygies (Injective.ι Z),
                                                                  snd := d (Injective.ι Z) } }.2.snd ≫
                                                      Injective.ι
                                                        (cokernel
                                                          { fst := under Z,
                                                                snd :=
                                                                  { fst := syzygies (Injective.ι Z),
                                                                    snd := d (Injective.ι Z) } }.2.snd) =
                                                  0) } }.snd.fst =
                                0)
                            (fun t =>
                              { fst := syzygies t.snd.snd.snd.snd.fst,
                                snd :=
                                  { fst := d t.snd.snd.snd.snd.fst,
                                    snd :=
                                      (_ :
                                        t.snd.snd.snd.snd.fst ≫
                                            cokernel.π t.snd.snd.snd.snd.fst ≫
                                              Injective.ι (cokernel t.snd.snd.snd.snd.fst) =
                                          0) } })
                            n).d₁ =
                      0))
              (Nat.succ n✝ + 1) (Nat.succ n✝ + 1 + 1) =
          0))

Next tactic:
simp