-- Lean 4 proof step from Mathlib.CategoryTheory.Triangulated.Adjunction (goal)
Goal:
C : Type u_1
D : Type u_2
inst : Category.{v_1, u_1} C
inst_1 : Category.{v_2, u_2} D
inst_2 : HasZeroObject.{v_1, u_1} C
inst_3 : HasZeroObject.{v_2, u_2} D
inst_4 : Preadditive.{v_1, u_1} C
inst_5 : Preadditive.{v_2, u_2} D
inst_6 : HasShift.{v_1, u_1, 0} C ℤ
inst_7 : HasShift.{v_2, u_2, 0} D ℤ
inst_8 : ∀ (n : ℤ), Functor.Additive.{v_1, u_1, v_1, u_1} (shiftFunctor C n)
inst_9 : ∀ (n : ℤ), Functor.Additive.{v_2, u_2, v_2, u_2} (shiftFunctor D n)
inst_10 : Pretriangulated.{v_1, u_1} C
inst_11 : Pretriangulated.{v_2, u_2} D
F : Functor.{v_1, v_2, u_1, u_2} C D
G : Functor.{v_2, v_1, u_2, u_1} D C
adj : F ⊣ G
inst_12 : F.CommShift ℤ
inst_13 : G.CommShift ℤ
inst_14 : adj.CommShift ℤ
inst_15 : F.IsTriangulated
T : Triangle.{v_2, u_2} D
hT : Membership.mem (γ := Set (Triangle.{v_2, u_2} D)) (@distinguishedTriangles _ _ inst_3 _ inst_5 inst_9 _) T
this_1 : G.Additive
Z : C
f : G.obj T.obj₂ ⟶ Z
g : Z ⟶ Functor.obj.{v_1, v_1, u_1, u_1} (shiftFunctor C (A := ℤ) 1) (G.obj T.obj₁)
mem :
  Membership.mem (γ := Set (Triangle.{v_1, u_1} C)) (@distinguishedTriangles _ _ inst_2 _ inst_4 inst_8 _)
    (Triangle.mk (G.map T.mor₁) f g)
h : F.obj Z ⟶ T.obj₃
h₁ : F.map f ≫ h = adj.counit.app T.obj₂ ≫ T.mor₂
h₂ :
  F.map g ≫
      NatTrans.app (Iso.hom (Functor.commShiftIso F 1)) (G.obj T.obj₁) ≫
        Functor.map (shiftFunctor D (A := ℤ) 1) (adj.counit.app T.obj₁) =
    h ≫ T.mor₃
h₁' : f ≫ adj.unit.app Z ≫ G.map h = G.map T.mor₂
h₂' :
  Eq (α := Z ⟶ (shiftFunctor D (A := ℤ) 1 ⋙ G).obj T.obj₁)
    (g ≫ NatTrans.app (Iso.inv (Functor.commShiftIso G 1)) T.obj₁)
    (((adj.homEquiv Z T.obj₃ : Equiv.{v_2 + 1, v_1 + 1} (F.obj Z ⟶ T.obj₃) (Z ⟶ G.obj T.obj₃)) :
          (a : F.obj Z ⟶ T.obj₃) → Z ⟶ G.obj T.obj₃)
        h ≫
      G.map T.mor₃)
this_2 :
  Mono.{v_1, u_1} (X := Z)
    (((adj.homEquiv Z T.obj₃ : Equiv.{v_2 + 1, v_1 + 1} (F.obj Z ⟶ T.obj₃) (Z ⟶ G.obj T.obj₃)) :
          (a : F.obj Z ⟶ T.obj₃) → Z ⟶ G.obj T.obj₃)
        h :
      Z ⟶ G.obj T.obj₃)
this :
  IsIso.{v_1, u_1} (X := Z)
    (((adj.homEquiv Z T.obj₃ : Equiv.{v_2 + 1, v_1 + 1} (F.obj Z ⟶ T.obj₃) (Z ⟶ G.obj T.obj₃)) :
          (a : F.obj Z ⟶ T.obj₃) → Z ⟶ G.obj T.obj₃)
        h :
      Z ⟶ G.obj T.obj₃)
⊢ Eq.{v_2 + 1} (α := F.obj (Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ T.obj₃)
    (((Equiv.symm (adj.homEquiv (Triangle.mk (G.map T.mor₁) f g).obj₂ T.obj₃) :
            Equiv.{v_1 + 1, v_2 + 1} ((Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ G.obj T.obj₃)
              (F.obj (Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ T.obj₃)) :
          (a : (Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ G.obj T.obj₃) →
            F.obj (Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ T.obj₃)
        ((Triangle.mk (G.map T.mor₁) f g).mor₂ ≫
          Iso.hom
            (asIso
              (((adj.homEquiv Z T.obj₃ : Equiv.{v_2 + 1, v_1 + 1} (F.obj Z ⟶ T.obj₃) (Z ⟶ G.obj T.obj₃)) :
                  (a : F.obj Z ⟶ T.obj₃) → Z ⟶ G.obj T.obj₃)
                h))) :
      F.obj (Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ T.obj₃)
    (((Equiv.symm (adj.homEquiv (Triangle.mk (G.map T.mor₁) f g).obj₂ T.obj₃) :
            Equiv.{v_1 + 1, v_2 + 1} ((Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ G.obj T.obj₃)
              (F.obj (Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ T.obj₃)) :
          (a : (Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ G.obj T.obj₃) →
            F.obj (Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ T.obj₃)
        (Iso.hom (Iso.refl (Triangle.mk (G.map T.mor₁) f g).obj₂) ≫
          Triangle.mor₂
            (Triangle.mk (G.map T.mor₁) (G.map T.mor₂)
              (G.map T.mor₃ ≫ NatTrans.app (Iso.hom (Functor.commShiftIso G 1)) T.obj₁))) :
      F.obj (Triangle.mk (G.map T.mor₁) f g).obj₂ ⟶ T.obj₃)
have refine_2 : Eq.{v_2 + 1} (α := F.obj (G.obj T.obj₂) ⟶ T.obj₃)
  (((Equiv.symm (adj.homEquiv (G.obj T.obj₂) T.obj₃) :
          Equiv.{v_1 + 1, v_2 + 1} (G.obj T.obj₂ ⟶ G.obj T.obj₃) (F.obj (G.obj T.obj₂) ⟶ T.obj₃)) :
        (a : G.obj T.obj₂ ⟶ G.obj T.obj₃) → F.obj (G.obj T.obj₂) ⟶ T.obj₃)
      (f ≫
        ((adj.homEquiv Z T.obj₃ : Equiv.{v_2 + 1, v_1 + 1} (F.obj Z ⟶ T.obj₃) (Z ⟶ G.obj T.obj₃)) :
            (a : F.obj Z ⟶ T.obj₃) → Z ⟶ G.obj T.obj₃)
          h) :
    F.obj (G.obj T.obj₂) ⟶ T.obj₃)
  (((Equiv.symm (adj.homEquiv (G.obj T.obj₂) T.obj₃) :
          Equiv.{v_1 + 1, v_2 + 1} (G.obj T.obj₂ ⟶ G.obj T.obj₃) (F.obj (G.obj T.obj₂) ⟶ T.obj₃)) :
        (a : G.obj T.obj₂ ⟶ G.obj T.obj₃) → F.obj (G.obj T.obj₂) ⟶ T.obj₃)
      (𝟙 (G.obj T.obj₂) ≫ G.map T.mor₂) :
    F.obj (G.obj T.obj₂) ⟶ T.obj₃)
Tactic: dsimp