-- Lean 4 proof step from Mathlib.AlgebraicTopology.SimplicialSet.Homotopy (goal)
Goal:
X Y : SSet
f g : X ⟶ Y
H : Homotopy f g
n : ℕ
i : Fin (n + 2)
j : Fin (n + 1)
hij : i ≤ j.castSucc
x : X _⦋n + 1⦌
⊢ Eq (α := Y _⦋n + 1⦌)
    ((ConcreteCategory.hom (FC := TypeCat.Fun)
            (NatTrans.app ((Equiv.symm yonedaEquiv : (a : X _⦋n + 1⦌) → Δ[n + 1] ⟶ X) x ▷ Δ[1] ≫ H.h) (op ⦋n + 1⦌)) :
          (a : (Δ[n + 1] ⊗ Δ[1]) _⦋n + 1⦌) → Y _⦋n + 1⦌)
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (δ (tensorObj (𝒞 := Functor.category) Δ[n + 1] Δ[1]) i.castSucc) :
              (a : (Δ[n + 1] ⊗ Δ[1]) _⦋n + 1 + 1⦌) → (Δ[n + 1] ⊗ Δ[1]) _⦋n + 1⦌)
            (↑((prodStdSimplex.nonDegenerateEquiv₁ :
                    (a : Fin (n + 1 + 1)) → (↑((Δ[n + 1] ⊗ Δ[1]).nonDegenerate (n + 1 + 1)) : Type u))
                  j.succ) :
              (Δ[n + 1] ⊗ Δ[1]) _⦋n + 1 + 1⦌) :
          tensorObj (𝒞 := Functor.category) Δ[n + 1] Δ[1] _⦋n + 1⦌) :
      Y _⦋n + 1⦌)
    ((ConcreteCategory.hom (FC := TypeCat.Fun)
            (NatTrans.app
              ((Equiv.symm yonedaEquiv : (a : X _⦋n⦌) → Δ[n] ⟶ X)
                    ((ConcreteCategory.hom (FC := TypeCat.Fun) (δ X i) : (a : X _⦋n + 1⦌) → X _⦋n⦌) x : X _⦋n⦌) ▷
                  Δ[1] ≫
                H.h)
              (op ⦋n + 1⦌)) :
          (a : (Δ[n] ⊗ Δ[1]) _⦋n + 1⦌) → Y _⦋n + 1⦌)
        (↑((prodStdSimplex.nonDegenerateEquiv₁ : (a : Fin (n + 1)) → (↑((Δ[n] ⊗ Δ[1]).nonDegenerate (n + 1)) : Type u))
              j) :
          (Δ[n] ⊗ Δ[1]) _⦋n + 1⦌) :
      Y _⦋n + 1⦌)
have h : Eq (α := Y _⦋n + 1⦌)
  ((ConcreteCategory.hom (FC := TypeCat.Fun) (H.h.app (op ⦋n + 1⦌)) : (a : X _⦋n + 1⦌ ⊗ Δ[1] _⦋n + 1⦌) → Y _⦋n + 1⦌)
      (((ConcreteCategory.hom (FC := TypeCat.Fun)
                (X.map
                  (Quiver.Hom.op
                    (((stdSimplex.objEquiv : Δ[n + 1] _⦋n + 1⦌ ≃ (unop (op ⦋n + 1⦌) ⟶ ⦋n + 1⦌)) :
                        (a : Δ[n + 1] _⦋n + 1⦌) → ⦋n + 1⦌ ⟶ ⦋n + 1⦌)
                      ((ConcreteCategory.hom (FC := TypeCat.Fun) (δ Δ[n + 1] i.castSucc) :
                          (a : Δ[n + 1] _⦋n + 1 + 1⦌) → Δ[n + 1] _⦋n + 1⦌)
                        ((Equiv.symm stdSimplex.objEquiv : (a : ⦋n + 1 + 1⦌ ⟶ ⦋n + 1⦌) → Δ[n + 1] _⦋n + 1 + 1⦌)
                            (SimplexCategory.σ j.succ) :
                          Δ[n + 1] _⦋n + 1 + 1⦌))))) :
              (a : X _⦋n + 1⦌) → X _⦋n + 1⦌)
            x,
          (ConcreteCategory.hom (FC := TypeCat.Fun) (δ Δ[1] i.castSucc) : (a : Δ[1] _⦋n + 1 + 1⦌) → Δ[1] _⦋n + 1⦌)
            (stdSimplex.objMk₁ j.castSucc.succ.succ)) :
        X _⦋n + 1⦌ × Δ[1] _⦋n + 1⦌) :
    Y _⦋n + 1⦌)
  ((ConcreteCategory.hom (FC := TypeCat.Fun) (H.h.app (op ⦋n + 1⦌)) : (a : X _⦋n + 1⦌ ⊗ Δ[1] _⦋n + 1⦌) → Y _⦋n + 1⦌)
      (((ConcreteCategory.hom (FC := TypeCat.Fun)
                (NatTrans.app
                  ((Equiv.symm yonedaEquiv : (a : X _⦋n⦌) → Δ[n] ⟶ X)
                    ((ConcreteCategory.hom (FC := TypeCat.Fun) (δ X i) : (a : X _⦋n + 1⦌) → X _⦋n⦌) x : X _⦋n⦌))
                  (op ⦋n + 1⦌)) :
              (a : Δ[n] _⦋n + 1⦌) → X _⦋n + 1⦌)
            ((Equiv.symm stdSimplex.objEquiv : (a : ⦋n + 1⦌ ⟶ ⦋n⦌) → Δ[n] _⦋n + 1⦌) (SimplexCategory.σ j) :
              Δ[n] _⦋n + 1⦌),
          stdSimplex.objMk₁ j.castSucc.succ) :
        X _⦋n + 1⦌ × Δ[1] _⦋n + 1⦌) :
    Y _⦋n + 1⦌)
Tactic: dsimp