-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Preadditive (goal)
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
inst_1 : Preadditive.{v_1, u_1} C
inst_2 : MonoidalCategory.{v_1, u_1} C
inst_3 : MonoidalPreadditive.{v_1, u_1} C
inst_4 : HasFiniteBiproducts.{v_1, u_1} C
J : Type
inst_5 : Finite J
f : J → C
X Y : C
⊢ Eq (α :=
    tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (biproduct.{0, v_1, u_1} f) X) Y ≅
      biproduct.{0, v_1, u_1} fun (j : J) ↦
        tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y)
    (Iso.trans (Y :=
        tensorObj.{v_1, u_1} (𝒞 := inst)
          (biproduct.{0, v_1, u_1} fun (j : J) ↦ tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y)
        (rightDistributor f X ⊗ᵢ asIso (𝟙 Y) :
          tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (biproduct.{0, v_1, u_1} f) X) Y ≅
            tensorObj.{v_1, u_1} (𝒞 := inst)
              (biproduct.{0, v_1, u_1} fun (j : J) ↦ tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y)
        (rightDistributor (fun (j : J) ↦ tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y :
          tensorObj.{v_1, u_1} (𝒞 := inst)
              (biproduct.{0, v_1, u_1} fun (j : J) ↦ tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y ≅
            biproduct.{0, v_1, u_1} fun (j : J) ↦
              tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y) :
      tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (biproduct.{0, v_1, u_1} f) X) Y ≅
        biproduct.{0, v_1, u_1} fun (j : J) ↦
          tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y)
    (α_ (biproduct.{0, v_1, u_1} f) X Y ≪≫
        Iso.trans (Y :=
          biproduct.{0, v_1, u_1} fun (j : J) ↦
            tensorObj.{v_1, u_1} (𝒞 := inst) (f j) (tensorObj.{v_1, u_1} (𝒞 := inst) X Y))
          (rightDistributor f (tensorObj.{v_1, u_1} (𝒞 := inst) X Y) :
            tensorObj.{v_1, u_1} (𝒞 := inst) (biproduct.{0, v_1, u_1} f) (tensorObj.{v_1, u_1} (𝒞 := inst) X Y) ≅
              biproduct.{0, v_1, u_1} fun (j : J) ↦
                tensorObj.{v_1, u_1} (𝒞 := inst) (f j) (tensorObj.{v_1, u_1} (𝒞 := inst) X Y))
          (biproduct.mapIso fun (x : J) ↦ Iso.symm (α_ (f x) X Y) :
            Iso.{v_1, u_1} (C := C)
              (biproduct.{0, v_1, u_1} fun (j : J) ↦
                tensorObj.{v_1, u_1} (𝒞 := inst) (f j) (tensorObj.{v_1, u_1} (𝒞 := inst) X Y))
              (biproduct.{0, v_1, u_1} fun (x : J) ↦
                tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (f x) X) Y)) :
      tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (biproduct.{0, v_1, u_1} f) X) Y ≅
        biproduct.{0, v_1, u_1} fun (x : J) ↦
          tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (f x) X) Y)
have intro : ∀ (val : Fintype J),
  Eq (α :=
    tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (biproduct.{0, v_1, u_1} f) X) Y ≅
      biproduct.{0, v_1, u_1} fun (j : J) ↦
        tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y)
    (Iso.trans (Y :=
        tensorObj.{v_1, u_1} (𝒞 := inst)
          (biproduct.{0, v_1, u_1} fun (j : J) ↦ tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y)
        (rightDistributor f X ⊗ᵢ asIso (𝟙 Y) :
          tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (biproduct.{0, v_1, u_1} f) X) Y ≅
            tensorObj.{v_1, u_1} (𝒞 := inst)
              (biproduct.{0, v_1, u_1} fun (j : J) ↦ tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y)
        (rightDistributor (fun (j : J) ↦ tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y :
          tensorObj.{v_1, u_1} (𝒞 := inst)
              (biproduct.{0, v_1, u_1} fun (j : J) ↦ tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y ≅
            biproduct.{0, v_1, u_1} fun (j : J) ↦
              tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y) :
      tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (biproduct.{0, v_1, u_1} f) X) Y ≅
        biproduct.{0, v_1, u_1} fun (j : J) ↦
          tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (f j) X) Y)
    (α_ (biproduct.{0, v_1, u_1} f) X Y ≪≫
        Iso.trans (Y :=
          biproduct.{0, v_1, u_1} fun (j : J) ↦
            tensorObj.{v_1, u_1} (𝒞 := inst) (f j) (tensorObj.{v_1, u_1} (𝒞 := inst) X Y))
          (rightDistributor f (tensorObj.{v_1, u_1} (𝒞 := inst) X Y) :
            tensorObj.{v_1, u_1} (𝒞 := inst) (biproduct.{0, v_1, u_1} f) (tensorObj.{v_1, u_1} (𝒞 := inst) X Y) ≅
              biproduct.{0, v_1, u_1} fun (j : J) ↦
                tensorObj.{v_1, u_1} (𝒞 := inst) (f j) (tensorObj.{v_1, u_1} (𝒞 := inst) X Y))
          (biproduct.mapIso fun (x : J) ↦ Iso.symm (α_ (f x) X Y) :
            Iso.{v_1, u_1} (C := C)
              (biproduct.{0, v_1, u_1} fun (j : J) ↦
                tensorObj.{v_1, u_1} (𝒞 := inst) (f j) (tensorObj.{v_1, u_1} (𝒞 := inst) X Y))
              (biproduct.{0, v_1, u_1} fun (x : J) ↦
                tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (f x) X) Y)) :
      tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (biproduct.{0, v_1, u_1} f) X) Y ≅
        biproduct.{0, v_1, u_1} fun (x : J) ↦
          tensorObj.{v_1, u_1} (𝒞 := inst) (tensorObj.{v_1, u_1} (𝒞 := inst) (f x) X) Y)
Tactic: classical
  cases nonempty_fintype J
  ext
  simp only [Category.comp_id, Category.assoc, eqToHom_refl, Iso.symm_hom, Iso.trans_hom,
    asIso_hom, comp_zero, comp_dite, Preadditive.sum_comp, Preadditive.comp_sum, sum_tensor,
    comp_tensor_id, tensorIso_hom, rightDistributor_hom, biproduct.mapIso_hom, biproduct.ι_map,
    biproduct.ι_π, Finset.sum_dite_irrel, Finset.sum_dite_eq', Finset.sum_const_zero,
    Finset.mem_univ, if_true]
  simp_rw [← tensorHom_id]
  simp only [← comp_tensor_id, biproduct.ι_π, dite_tensor, comp_dite]
  simp