-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Opposite.Basic (goal)
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : HasShift.{v_1, u_1, 0} C ℤ
X : C
n : ℤ
hmn : -n + n = 0
⊢ Eq.{v_1 + 1} (α :=
    Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ (-n)) (Opposite.op X) ⟶
      Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ (-n))
        (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ n)
          (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))
    (NatTrans.app (Iso.hom (shiftFunctorOpIso C (-n) n ⋯)) (Opposite.op X) ≫
      CategoryStruct.comp (Y :=
        Opposite.op
          (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n)
            (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (-n))
              (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))
        (Quiver.Hom.op
          (NatTrans.app (Iso.hom (shiftFunctorCompIsoId C (-n) n ⋯))
            (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)))
        (Quiver.Hom.op
            (Functor.map (shiftFunctor C n)
              (Quiver.Hom.unop
                (NatTrans.app (Iso.inv (shiftFunctorOpIso C n (-n) ⋯))
                  (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))) ≫
          NatTrans.app (Iso.inv (shiftFunctorOpIso C (-n) n ⋯))
            (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ n)
              (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)))))
    (CategoryStruct.comp (Y :=
      Opposite.op
        (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (-n))
          (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n)
            (Opposite.unop (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ (-n)) (Opposite.op X))))))
      (Quiver.Hom.op
        (NatTrans.app (Iso.hom (shiftFunctorCompIsoId C n (-n) ⋯))
          (Opposite.unop (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ (-n)) (Opposite.op X)))))
      (Quiver.Hom.op
          (Functor.map (shiftFunctor C (-n))
            (Functor.map (shiftFunctor C n)
              (Quiver.Hom.unop (NatTrans.app (Iso.hom (shiftFunctorOpIso C (-n) n hmn)) (Opposite.op X))))) ≫
        Quiver.Hom.op
            (Functor.map (shiftFunctor C (-n))
              (Quiver.Hom.unop
                (NatTrans.app (Iso.inv (shiftFunctorOpIso C (-n) n hmn))
                  (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))) ≫
          Quiver.Hom.op
              (Functor.map (shiftFunctor C (-n))
                (Quiver.Hom.unop
                  (NatTrans.app (Iso.hom (shiftFunctorOpIso C (-n) n ⋯))
                    (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))) ≫
            Quiver.Hom.op
                (NatTrans.app (Iso.inv (shiftFunctorCompIsoId C n (-n) ⋯))
                  (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)) ≫
              CategoryStruct.comp (Y :=
                Opposite.op
                  (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (-n) ⋙ shiftFunctor C n)
                    (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)))
                (Quiver.Hom.op
                  (NatTrans.app (Iso.hom (shiftFunctorCompIsoId C (-n) n ⋯))
                    (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)))
                (Quiver.Hom.op
                    (Functor.map (shiftFunctor C n)
                      (Quiver.Hom.unop
                        (NatTrans.app (Iso.inv (shiftFunctorOpIso C n (-n) ⋯))
                          (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))) ≫
                  NatTrans.app (Iso.inv (shiftFunctorOpIso C (-n) n ⋯))
                    (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ n)
                      (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))))
have a : Eq.{v_1 + 1} (α :=
  Opposite.unop
      (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ (-n))
        (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ n)
          (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)))) ⟶
    Opposite.unop (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ (-n)) (Opposite.op X)))
  (Quiver.Hom.unop
    (NatTrans.app (Iso.hom (shiftFunctorOpIso C (-n) n sorry)) (Opposite.op X) ≫
      CategoryStruct.comp (Y :=
        Opposite.op
          (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n)
            (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (-n))
              (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))
        (Quiver.Hom.op
          (NatTrans.app (Iso.hom (shiftFunctorCompIsoId C (-n) n sorry))
            (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)))
        (Quiver.Hom.op
            (Functor.map (shiftFunctor C n)
              (Quiver.Hom.unop
                (NatTrans.app (Iso.inv (shiftFunctorOpIso C n (-n) sorry))
                  (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))) ≫
          NatTrans.app (Iso.inv (shiftFunctorOpIso C (-n) n sorry))
            (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ n)
              (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))))
  (Quiver.Hom.unop
    (CategoryStruct.comp (Y :=
      Opposite.op
        (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (-n))
          (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n)
            (Opposite.unop (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ (-n)) (Opposite.op X))))))
      (Quiver.Hom.op
        (NatTrans.app (Iso.hom (shiftFunctorCompIsoId C n (-n) sorry))
          (Opposite.unop (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ (-n)) (Opposite.op X)))))
      (Quiver.Hom.op
          (Functor.map (shiftFunctor C (-n))
            (Functor.map (shiftFunctor C n)
              (Quiver.Hom.unop (NatTrans.app (Iso.hom (shiftFunctorOpIso C (-n) n hmn)) (Opposite.op X))))) ≫
        Quiver.Hom.op
            (Functor.map (shiftFunctor C (-n))
              (Quiver.Hom.unop
                (NatTrans.app (Iso.inv (shiftFunctorOpIso C (-n) n hmn))
                  (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))) ≫
          Quiver.Hom.op
              (Functor.map (shiftFunctor C (-n))
                (Quiver.Hom.unop
                  (NatTrans.app (Iso.hom (shiftFunctorOpIso C (-n) n sorry))
                    (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))) ≫
            Quiver.Hom.op
                (NatTrans.app (Iso.inv (shiftFunctorCompIsoId C n (-n) sorry))
                  (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)) ≫
              CategoryStruct.comp (Y :=
                Opposite.op
                  (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (-n) ⋙ shiftFunctor C n)
                    (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)))
                (Quiver.Hom.op
                  (NatTrans.app (Iso.hom (shiftFunctorCompIsoId C (-n) n sorry))
                    (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)))
                (Quiver.Hom.op
                    (Functor.map (shiftFunctor C n)
                      (Quiver.Hom.unop
                        (NatTrans.app (Iso.inv (shiftFunctorOpIso C n (-n) sorry))
                          (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X))))) ≫
                  NatTrans.app (Iso.inv (shiftFunctorOpIso C (-n) n sorry))
                    (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor Cᵒᵖ n)
                      (Opposite.op (Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C n) X)))))))
Tactic: apply Quiver.Hom.unop_inj