-- Lean 4 proof step from Mathlib.Algebra.Category.Ring.Constructions (goal)
Goal:
A B : CommRingCat
s : BinaryCofan A B
m : (↑A : Type u) ⊗[ℤ] (↑B : Type u) →+* (↑s.pt : Type u)
hm : ∀ (j : Discrete WalkingPair), (A.coproductCocone B).ι.app j ≫ { hom' := m } = s.ι.app j
⊢ Eq.{u + 1} (α := (↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u))
    (AlgHom.comp (B := (↑A : Type u) ⊗[ℤ] (↑B : Type u))
      (AlgHom.restrictScalars ℤ (S := ℤ) (RingHom.toIntAlgHom (Hom.hom { hom' := m })) :
        (↑A : Type u) ⊗[ℤ] (↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u))
      (Algebra.TensorProduct.includeRight : (↑B : Type u) →ₐ[ℤ] (↑A : Type u) ⊗[ℤ] (↑B : Type u)))
    (((Equiv.symm Algebra.TensorProduct.liftEquiv :
              ((↑A : Type u) ⊗[ℤ] (↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u)) ≃
                { fg : ((↑A : Type u) →ₐ[ℤ] (↑s.pt : Type u)) × ((↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u)) //
                  ∀ (x : (↑A : Type u)) (y : (↑B : Type u)),
                    Commute (S := (↑s.pt : Type u))
                      ((fg.1 : (a : (↑A : Type u)) → (↑s.pt : Type u)) x : (↑s.pt : Type u))
                      ((fg.2 : (a : (↑B : Type u)) → (↑s.pt : Type u)) y : (↑s.pt : Type u)) }) :
            (a : (↑A : Type u) ⊗[ℤ] (↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u)) →
              { fg : ((↑A : Type u) →ₐ[ℤ] (↑s.pt : Type u)) × ((↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u)) //
                ∀ (x : (↑A : Type u)) (y : (↑B : Type u)),
                  Commute ((fg.1 : (a : (↑A : Type u)) → (↑s.pt : Type u)) x)
                    ((fg.2 : (a : (↑B : Type u)) → (↑s.pt : Type u)) y) })
          (Hom.hom
              (ofHom
                (AlgHom.toRingHom
                  (Algebra.TensorProduct.lift (Hom.hom s.inl).toIntAlgHom (Hom.hom s.inr).toIntAlgHom ⋯ :
                    (↑(Functor.obj (pair A B) { as := WalkingPair.left : Discrete WalkingPair }) : Type u) ⊗[ℤ]
                        (↑(Functor.obj (pair A B) { as := WalkingPair.right : Discrete WalkingPair }) : Type u) →ₐ[ℤ]
                      (↑(Functor.obj (Functor.obj (Functor.const (Discrete WalkingPair)) s.pt)
                            { as := WalkingPair.left : Discrete WalkingPair }) :
                        Type u))))).toIntAlgHom).1.2
have hf : ∀ (b : (↑B : Type u)),
  Eq (α := (↑s.pt : Type u))
    ((AlgHom.comp (B := (↑A : Type u) ⊗[ℤ] (↑B : Type u))
            (AlgHom.restrictScalars ℤ (S := ℤ) (RingHom.toIntAlgHom (Hom.hom { hom' := m })) :
              (↑A : Type u) ⊗[ℤ] (↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u))
            (Algebra.TensorProduct.includeRight : (↑B : Type u) →ₐ[ℤ] (↑A : Type u) ⊗[ℤ] (↑B : Type u)) :
          (a : (↑B : Type u)) → (↑s.pt : Type u))
        b :
      (↑s.pt : Type u))
    (((((Equiv.symm Algebra.TensorProduct.liftEquiv :
                    ((↑A : Type u) ⊗[ℤ] (↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u)) ≃
                      { fg : ((↑A : Type u) →ₐ[ℤ] (↑s.pt : Type u)) × ((↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u)) //
                        ∀ (x : (↑A : Type u)) (y : (↑B : Type u)),
                          Commute (S := (↑s.pt : Type u))
                            ((fg.1 : (a : (↑A : Type u)) → (↑s.pt : Type u)) x : (↑s.pt : Type u))
                            ((fg.2 : (a : (↑B : Type u)) → (↑s.pt : Type u)) y : (↑s.pt : Type u)) }) :
                  (a : (↑A : Type u) ⊗[ℤ] (↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u)) →
                    { fg : ((↑A : Type u) →ₐ[ℤ] (↑s.pt : Type u)) × ((↑B : Type u) →ₐ[ℤ] (↑s.pt : Type u)) //
                      ∀ (x : (↑A : Type u)) (y : (↑B : Type u)),
                        Commute ((fg.1 : (a : (↑A : Type u)) → (↑s.pt : Type u)) x)
                          ((fg.2 : (a : (↑B : Type u)) → (↑s.pt : Type u)) y) })
                (Hom.hom
                    (ofHom
                      (AlgHom.toRingHom
                        (Algebra.TensorProduct.lift (Hom.hom s.inl).toIntAlgHom (Hom.hom s.inr).toIntAlgHom sorry :
                          (↑(Functor.obj (pair A B) { as := WalkingPair.left : Discrete WalkingPair }) : Type u) ⊗[ℤ]
                              (↑(Functor.obj (pair A B) { as := WalkingPair.right : Discrete WalkingPair }) :
                                Type u) →ₐ[ℤ]
                            (↑(Functor.obj (Functor.obj (Functor.const (Discrete WalkingPair)) s.pt)
                                  { as := WalkingPair.left : Discrete WalkingPair }) :
                              Type u))))).toIntAlgHom).1.2 :
          (a : (↑B : Type u)) → (↑s.pt : Type u))
        b :
      (↑s.pt : Type u))
Tactic: ext b