-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Comon_ (goal)
Goal:
C : Type u₁
inst : Category.{v₁, u₁} C
inst_1 : MonoidalCategory.{v₁, u₁} C
M N O : C
inst_2 : ComonObj M
inst_3 : ComonObj N
inst_4 : ComonObj O
D : Type u₂
inst_5 : Category.{v₂, u₂} D
inst_6 : MonoidalCategory.{v₂, u₂} D
A : C
inst_7 : ComonObj A
F : Functor.{v₁, v₂, u₁, u₂} C D
inst_8 : F.OplaxMonoidal
simp_rw :
  Eq (α := F.obj A ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_5) (tensorUnit.{v₂, u₂} D (𝒞 := inst_5)) (F.obj A))
    (CategoryStruct.comp (Y := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) A A)) (F.map Δ) (δ F A A) ≫
      CategoryStruct.comp (Y := tensorObj.{v₂, u₂} (𝒞 := inst_5) (F.obj (tensorUnit.{v₁, u₁} C (𝒞 := inst))) (F.obj A))
        (F.map ε ▷ F.obj A) (η F ▷ F.obj A))
    (Iso.inv (λ_ (F.obj A)))
simp_rw₁ :
  Eq (α := F.obj A ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_5) (tensorUnit.{v₂, u₂} D (𝒞 := inst_5)) (F.obj A))
    (CategoryStruct.comp (Y := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) A A)) (F.map Δ)
      (δ F A A ≫
        CategoryStruct.comp (Y :=
          tensorObj.{v₂, u₂} (𝒞 := inst_5) (F.obj (tensorUnit.{v₁, u₁} C (𝒞 := inst))) (F.obj A)) (F.map ε ▷ F.obj A)
          (η F ▷ F.obj A)))
    (Iso.inv (λ_ (F.obj A)))
simp_rw₂ :
  Eq (α := F.obj A ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_5) (tensorUnit.{v₂, u₂} D (𝒞 := inst_5)) (F.obj A))
    (CategoryStruct.comp (Y := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) A A)) (F.map Δ)
      (CategoryStruct.comp (Y := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) (tensorUnit.{v₁, u₁} C (𝒞 := inst)) A))
        (F.map (ε ▷ A)) (δ F (tensorUnit.{v₁, u₁} C (𝒞 := inst)) A ≫ η F ▷ F.obj A)))
    (Iso.inv (λ_ (F.obj A)))
simp_rw₃ :
  Eq (α := F.obj A ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_5) (tensorUnit.{v₂, u₂} D (𝒞 := inst_5)) (F.obj A))
    (CategoryStruct.comp (Y := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) A A)) (F.map Δ)
      (CategoryStruct.comp (Y := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) (tensorUnit.{v₁, u₁} C (𝒞 := inst)) A))
        (F.map (ε ▷ A)) (δ F (tensorUnit.{v₁, u₁} C (𝒞 := inst)) A ≫ η F ▷ F.obj A)))
    (CategoryStruct.comp (Y := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) (tensorUnit.{v₁, u₁} C (𝒞 := inst)) A))
      (F.map (Iso.inv (λ_ A))) (δ F (tensorUnit.{v₁, u₁} C (𝒞 := inst)) A ≫ η F ▷ F.obj A))
⊢ Eq (α := F.obj A ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_5) (tensorUnit.{v₂, u₂} D (𝒞 := inst_5)) (F.obj A))
    (CategoryStruct.comp (Y := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) A A)) (F.map Δ) (δ F A A) ≫
      CategoryStruct.comp (Y := F.obj (tensorUnit.{v₁, u₁} C (𝒞 := inst))) (F.map ε) (η F) ▷ F.obj A)
    (Iso.inv (λ_ (F.obj A)))
have simp_rw₄ : Eq (α := F.obj A ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_5) (tensorUnit.{v₂, u₂} D (𝒞 := inst_5)) (F.obj A))
  (CategoryStruct.comp (Y := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) (tensorUnit.{v₁, u₁} C (𝒞 := inst)) A))
    (F.map (Δ ≫ ε ▷ A)) (δ F (tensorUnit.{v₁, u₁} C (𝒞 := inst)) A ≫ η F ▷ F.obj A))
  (CategoryStruct.comp (Y := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) (tensorUnit.{v₁, u₁} C (𝒞 := inst)) A))
    (F.map (Iso.inv (λ_ A))) (δ F (tensorUnit.{v₁, u₁} C (𝒞 := inst)) A ≫ η F ▷ F.obj A))
Tactic: simp_rw [comp_whiskerRight, Category.assoc, δ_natural_left_assoc, left_unitality,
      ← F.map_comp_assoc, counit_comul]