-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Arrow (goal)
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasPushouts.{v, u} C
inst_2 : HasInitial.{v, u} C
inst_3 : CartesianMonoidalCategory.{v, u} C
inst_4 : MonoidalClosed.{v, u} C
inst_5 : BraidedCategory.{v, u} C
X Y Z : Arrow.{v, u} C
h₀ :
  Eq (α :=
    obj.{v, v, u, u} (tensorRight Z.right) (obj.{v, v, u, u} (obj (curriedTensor C) X.right) Y.left) ⟶
      (tensorObj (𝒞 := instCategoryArrow) Y (tensorObj (𝒞 := instCategoryArrow) Z X)).left)
    (CategoryStruct.comp (Y :=
      obj.{v, v, u, u} (tensorRight Z.right)
        (pushout (X := obj.{v, v, u, u} (obj (curriedTensor C) X.left) Y.left)
          (NatTrans.app (map (curriedTensor C) X.hom) Y.left) (map (obj (curriedTensor C) X.left) Y.hom)))
      (map (tensorRight Z.right)
        (pushout.inl (NatTrans.app (map (curriedTensor C) X.hom) Y.left) (map (obj (curriedTensor C) X.left) Y.hom)))
      (CategoryStruct.comp (Y :=
        pushout (X := obj.{v, v, u, u} (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.left)
          (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
          (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
        (pushout.inr (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
          (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
        (Arrow.Hom.left
          (Iso.hom (α_ X Y Z) ≫ Iso.hom (braiding X (tensorObj (𝒞 := instCategoryArrow) Y Z)) ≫ Iso.hom (α_ Y Z X)))))
    (CategoryStruct.comp (Y :=
      obj.{v, v, u, u} (tensorRight Z.right)
        (pushout (X := obj.{v, v, u, u} (obj (curriedTensor C) X.left) Y.left)
          (NatTrans.app (map (curriedTensor C) X.hom) Y.left) (map (obj (curriedTensor C) X.left) Y.hom)))
      (map (tensorRight Z.right)
        (pushout.inl (NatTrans.app (map (curriedTensor C) X.hom) Y.left) (map (obj (curriedTensor C) X.left) Y.hom)))
      (CategoryStruct.comp (Y :=
        pushout (X := obj.{v, v, u, u} (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.left)
          (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
          (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
        (pushout.inr (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
          (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
        (Arrow.Hom.left (Iso.hom (braiding X Y) ▷ Z ≫ Iso.hom (α_ Y X Z) ≫ Y ◁ Iso.hom (braiding X Z)))))
⊢ Eq (α :=
    obj.{v, v, u, u} (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.right ⟶
      (tensorObj (𝒞 := instCategoryArrow) Y (tensorObj (𝒞 := instCategoryArrow) Z X)).left)
    (CategoryStruct.comp (Y :=
      pushout (X := obj.{v, v, u, u} (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.left)
        (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
        (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
      (pushout.inr (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
        (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
      (Arrow.Hom.left
        (Iso.hom (α_ X Y Z) ≫ Iso.hom (braiding X (tensorObj (𝒞 := instCategoryArrow) Y Z)) ≫ Iso.hom (α_ Y Z X))))
    (CategoryStruct.comp (Y :=
      pushout (X := obj.{v, v, u, u} (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.left)
        (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
        (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
      (pushout.inr (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
        (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
      (Arrow.Hom.left (Iso.hom (braiding X Y) ▷ Z ≫ Iso.hom (α_ Y X Z) ≫ Y ◁ Iso.hom (braiding X Z))))
have h₁ : Eq (α :=
  obj.{v, v, u, u} (tensorRight Z.right) (obj.{v, v, u, u} (obj (curriedTensor C) X.left) Y.right) ⟶
    (tensorObj (𝒞 := instCategoryArrow) Y (tensorObj (𝒞 := instCategoryArrow) Z X)).left)
  (CategoryStruct.comp (Y :=
    obj.{v, v, u, u} (tensorRight Z.right)
      (pushout (X := obj.{v, v, u, u} (obj (curriedTensor C) X.left) Y.left)
        (NatTrans.app (map (curriedTensor C) X.hom) Y.left) (map (obj (curriedTensor C) X.left) Y.hom)))
    (map (tensorRight Z.right)
      (pushout.inr (NatTrans.app (map (curriedTensor C) X.hom) Y.left) (map (obj (curriedTensor C) X.left) Y.hom)))
    (CategoryStruct.comp (Y :=
      pushout (X := obj.{v, v, u, u} (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.left)
        (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
        (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
      (pushout.inr (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
        (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
      (Arrow.Hom.left
        (Iso.hom (α_ X Y Z) ≫ Iso.hom (braiding X (tensorObj (𝒞 := instCategoryArrow) Y Z)) ≫ Iso.hom (α_ Y Z X)))))
  (CategoryStruct.comp (Y :=
    obj.{v, v, u, u} (tensorRight Z.right)
      (pushout (X := obj.{v, v, u, u} (obj (curriedTensor C) X.left) Y.left)
        (NatTrans.app (map (curriedTensor C) X.hom) Y.left) (map (obj (curriedTensor C) X.left) Y.hom)))
    (map (tensorRight Z.right)
      (pushout.inr (NatTrans.app (map (curriedTensor C) X.hom) Y.left) (map (obj (curriedTensor C) X.left) Y.hom)))
    (CategoryStruct.comp (Y :=
      pushout (X := obj.{v, v, u, u} (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.left)
        (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
        (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
      (pushout.inr (NatTrans.app (map (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).hom) Z.left)
        (map (obj (curriedTensor C) (tensorObj (𝒞 := instCategoryArrow) X Y).left) Z.hom))
      (Arrow.Hom.left (Iso.hom (braiding X Y) ▷ Z ≫ Iso.hom (α_ Y X Z) ≫ Y ◁ Iso.hom (braiding X Z)))))
Tactic: apply ((tensorRight _).map_isPushout (IsPushout.of_hasPushout _ _)).hom_ext