-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.TStructure.ETrunc (goal)
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasShift.{v_1, u_1, 0} C ℤ
inst_4 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_5 : Pretriangulated.{v_1, u_1} C
t : TStructure.{v_1, u_1} C
n : EInt
bot :
  Eq (α :=
    Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
      (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 ⊥ :
        Functor.{v_1, v_1, u_1, u_1} C C)
      (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 ⊥ :
        Functor.{v_1, v_1, u_1, u_1} C C))
    (WithBotTop.rec (motive := fun {x : EInt} ↦
        (f : x ⟶ ⊥) →
          Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
            (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 x :
              Functor.{v_1, v_1, u_1, u_1} C C)
            (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 ⊥ :
              Functor.{v_1, v_1, u_1, u_1} C C))
        (fun (f : Quiver.Hom (V := EInt) ⊥ ⊥) ↦
          WithBotTop.rec (motive := fun {y : EInt} ↦
            (f : ⊥ ⟶ y) →
              Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    ⊥ :
                  Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    y :
                  Functor.{v_1, v_1, u_1, u_1} C C))
            (fun (f : Quiver.Hom (V := EInt) ⊥ ⊥) ↦
              𝟙
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                  ⊥))
            (fun (b : ℤ) (f : ⊥ ⟶ WithBotTop.coe b) ↦ t.truncGEπ b) (fun (f : Quiver.Hom (V := EInt) ⊥ ⊤) ↦ 0) ⊥ f)
        (fun (a : ℤ) (f : WithBotTop.coe a ⟶ ⊥) ↦
          WithBotTop.rec (motive := fun {y : EInt} ↦
            (f : WithBotTop.coe a ⟶ y) →
              Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    (WithBotTop.coe a) :
                  Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    y :
                  Functor.{v_1, v_1, u_1, u_1} C C))
            (fun (f : WithBotTop.coe a ⟶ ⊥) ↦ 0)
            (fun (b : ℤ) (f : WithBotTop.coe a ⟶ WithBotTop.coe b) ↦ t.natTransTruncGEOfLE a b ⋯)
            (fun (f : WithBotTop.coe a ⟶ ⊤) ↦ 0) ⊥ f)
        (fun (f : Quiver.Hom (V := EInt) ⊤ ⊥) ↦
          WithBotTop.rec (motive := fun {y : EInt} ↦
            (f : ⊤ ⟶ y) →
              Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    ⊤ :
                  Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    y :
                  Functor.{v_1, v_1, u_1, u_1} C C))
            (fun (f : Quiver.Hom (V := EInt) ⊤ ⊥) ↦ 0) (fun (b : ℤ) (f : ⊤ ⟶ WithBotTop.coe b) ↦ 0)
            (fun (f : Quiver.Hom (V := EInt) ⊤ ⊤) ↦
              𝟙
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                  ⊤))
            ⊥ f)
        ⊥ (𝟙 ⊥) :
      Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 ⊥ :
          Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 ⊥ :
          Functor.{v_1, v_1, u_1, u_1} C C))
    (𝟙 (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 ⊥) :
      Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 ⊥ :
          Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 ⊥ :
          Functor.{v_1, v_1, u_1, u_1} C C))
⊢ Eq (α :=
    Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
      (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 n :
        Functor.{v_1, v_1, u_1, u_1} C C)
      (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 n :
        Functor.{v_1, v_1, u_1, u_1} C C))
    (WithBotTop.rec (motive := fun {x : EInt} ↦
        (f : x ⟶ n) →
          Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
            (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 x :
              Functor.{v_1, v_1, u_1, u_1} C C)
            (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 n :
              Functor.{v_1, v_1, u_1, u_1} C C))
        (fun (f : ⊥ ⟶ n) ↦
          WithBotTop.rec (motive := fun {y : EInt} ↦
            (f : ⊥ ⟶ y) →
              Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    ⊥ :
                  Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    y :
                  Functor.{v_1, v_1, u_1, u_1} C C))
            (fun (f : Quiver.Hom (V := EInt) ⊥ ⊥) ↦
              𝟙
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                  ⊥))
            (fun (b : ℤ) (f : ⊥ ⟶ WithBotTop.coe b) ↦ t.truncGEπ b) (fun (f : Quiver.Hom (V := EInt) ⊥ ⊤) ↦ 0) n f)
        (fun (a : ℤ) (f : WithBotTop.coe a ⟶ n) ↦
          WithBotTop.rec (motive := fun {y : EInt} ↦
            (f : WithBotTop.coe a ⟶ y) →
              Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    (WithBotTop.coe a) :
                  Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    y :
                  Functor.{v_1, v_1, u_1, u_1} C C))
            (fun (f : WithBotTop.coe a ⟶ ⊥) ↦ 0)
            (fun (b : ℤ) (f : WithBotTop.coe a ⟶ WithBotTop.coe b) ↦ t.natTransTruncGEOfLE a b ⋯)
            (fun (f : WithBotTop.coe a ⟶ ⊤) ↦ 0) n f)
        (fun (f : ⊤ ⟶ n) ↦
          WithBotTop.rec (motive := fun {y : EInt} ↦
            (f : ⊤ ⟶ y) →
              Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    ⊤ :
                  Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    y :
                  Functor.{v_1, v_1, u_1, u_1} C C))
            (fun (f : Quiver.Hom (V := EInt) ⊤ ⊥) ↦ 0) (fun (b : ℤ) (f : ⊤ ⟶ WithBotTop.coe b) ↦ 0)
            (fun (f : Quiver.Hom (V := EInt) ⊤ ⊤) ↦
              𝟙
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                  ⊤))
            n f)
        n (𝟙 n) :
      Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 n :
          Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 n :
          Functor.{v_1, v_1, u_1, u_1} C C))
    (𝟙 (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 n) :
      Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 n :
          Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 n :
          Functor.{v_1, v_1, u_1, u_1} C C))
have coe : ∀ (a : ℤ),
  Eq (α :=
    Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
      (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
          (WithBotTop.coe a) :
        Functor.{v_1, v_1, u_1, u_1} C C)
      (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
          (WithBotTop.coe a) :
        Functor.{v_1, v_1, u_1, u_1} C C))
    (WithBotTop.rec (motive := fun {x : EInt} ↦
        (f : x ⟶ WithBotTop.coe a) →
          Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
            (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0 x :
              Functor.{v_1, v_1, u_1, u_1} C C)
            (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                (WithBotTop.coe a) :
              Functor.{v_1, v_1, u_1, u_1} C C))
        (fun (f : ⊥ ⟶ WithBotTop.coe a) ↦
          WithBotTop.rec (motive := fun {y : EInt} ↦
            (f : ⊥ ⟶ y) →
              Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    ⊥ :
                  Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    y :
                  Functor.{v_1, v_1, u_1, u_1} C C))
            (fun (f : Quiver.Hom (V := EInt) ⊥ ⊥) ↦
              𝟙
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                  ⊥))
            (fun (b : ℤ) (f : ⊥ ⟶ WithBotTop.coe b) ↦ t.truncGEπ b) (fun (f : Quiver.Hom (V := EInt) ⊥ ⊤) ↦ 0)
            (WithBotTop.coe a) f)
        (fun (a_1 : ℤ) (f : WithBotTop.coe a_1 ⟶ WithBotTop.coe a) ↦
          WithBotTop.rec (motive := fun {y : EInt} ↦
            (f : WithBotTop.coe a_1 ⟶ y) →
              Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    (WithBotTop.coe a_1) :
                  Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    y :
                  Functor.{v_1, v_1, u_1, u_1} C C))
            (fun (f : WithBotTop.coe a_1 ⟶ ⊥) ↦ 0)
            (fun (b : ℤ) (f : WithBotTop.coe a_1 ⟶ WithBotTop.coe b) ↦ t.natTransTruncGEOfLE a_1 b sorry)
            (fun (f : WithBotTop.coe a_1 ⟶ ⊤) ↦ 0) (WithBotTop.coe a) f)
        (fun (f : ⊤ ⟶ WithBotTop.coe a) ↦
          WithBotTop.rec (motive := fun {y : EInt} ↦
            (f : ⊤ ⟶ y) →
              Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    ⊤ :
                  Functor.{v_1, v_1, u_1, u_1} C C)
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                    y :
                  Functor.{v_1, v_1, u_1, u_1} C C))
            (fun (f : Quiver.Hom (V := EInt) ⊤ ⊥) ↦ 0) (fun (b : ℤ) (f : ⊤ ⟶ WithBotTop.coe b) ↦ 0)
            (fun (f : Quiver.Hom (V := EInt) ⊤ ⊤) ↦
              𝟙
                (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
                  ⊤))
            (WithBotTop.coe a) f)
        (WithBotTop.coe a) (𝟙 (WithBotTop.coe a)) :
      Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
            (WithBotTop.coe a) :
          Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
            (WithBotTop.coe a) :
          Functor.{v_1, v_1, u_1, u_1} C C))
    (𝟙
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
          (WithBotTop.coe a)) :
      Quiver.Hom (V := Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
            (WithBotTop.coe a) :
          Functor.{v_1, v_1, u_1, u_1} C C)
        (WithBotTop.rec (motive := fun (x : WithBotTop ℤ) ↦ Functor.{v_1, v_1, u_1, u_1} C C) (𝟭 C) t.truncGE 0
            (WithBotTop.coe a) :
          Functor.{v_1, v_1, u_1, u_1} C C))
Tactic: induction n using WithBotTop.rec
Cleared hypotheses: n