/-- Witness that the limit cone in `AlgebraCat R` is a limit cone.
(Internal use only; use the limits API.)
-/
def limitConeIsLimit (F : J ⥤ AlgebraCatMax.{v, w} R) : IsLimit (limitCone.{v, w} F) := by
  refine'
    IsLimit.ofFaithful (forget (AlgebraCat R)) (Types.limitConeIsLimit.{v, w} _)
      -- Porting note: in mathlib3 the function term
      -- `fun v => ⟨fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v`
      -- was provided by unification, and the last argument `(fun s => _)` was `(fun s => rfl)`.
      (fun s => ⟨⟨⟨⟨fun v => ⟨fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v, _⟩,
         _⟩, _⟩, _, _⟩, _⟩)
      (fun s => _)
  · intro j j' f
    exact FunLike.congr_fun (Cone.w s f) v
  · -- Porting note: we could add a custom `ext` lemma here.
    apply Subtype.ext
    ext j
    simp only [Functor.comp_obj, Functor.mapCone_pt, Functor.mapCone_π_app,
      forget_map_eq_coe]
    -- This used to be as below but we need `erw` after leanprover/lean4#2644
    -- simp [forget_map_eq_coe, AlgHom.map_one, Functor.mapCone_π_app]
    erw [map_one]
    rfl
  · intro x y
    apply Subtype.ext
    ext j
    simp only [Functor.comp_obj, Functor.mapCone_pt, Functor.mapCone_π_app,
      forget_map_eq_coe]
    -- This used to be as below, but we need `erw` after leanprover/lean4#2644
    -- simp [forget_map_eq_coe, AlgHom.map_mul, Functor.mapCone_π_app]
    erw [map_mul]
    rfl
  · simp only [Functor.comp_obj, Functor.mapCone_pt, Functor.mapCone_π_app,
      forget_map_eq_coe]
    -- The below `simp` was enough before leanprover/lean4#2644
    -- simp [forget_map_eq_coe, AlgHom.map_zero, Functor.mapCone_π_app]
    apply Subtype.ext
    dsimp
    funext u
    erw [map_zero]
    rfl
  · intro x y
    simp only [Functor.comp_obj, Functor.mapCone_pt, Functor.mapCone_π_app,
      forget_map_eq_coe]
    -- The below `simp` was enough before leanprover/lean4#2644
    -- simp [forget_map_eq_coe, AlgHom.map_add, Functor.mapCone_π_app]
    apply Subtype.ext
    dsimp
    funext u
    erw [map_add]
    rfl
  · intro r
    apply Subtype.ext
    ext j
    

Proof state:
case refine'_6.a.h
R : Type u
inst✝¹ : CommRing R
J : Type v
inst✝ : SmallCategory J
F : J ⥤ AlgebraCatMax R
s : Cone F
r : R
j : J
⊢ ↑(OneHom.toFun
          (↑↑{
                toMonoidHom :=
                  {
                    toOneHom :=
                      {
                        toFun := fun v =>
                          { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                            property := (_ : ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                        map_one' :=
                          (_ :
                            (fun v =>
                                  { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                    property :=
                                      (_ : ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                1 =
                              1) },
                    map_mul' :=
                      (_ :
                        ∀ (x y : ↑s.pt),
                          OneHom.toFun
                              {
                                toFun := fun v =>
                                  { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                    property :=
                                      (_ : ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                map_one' :=
                                  (_ :
                                    (fun v =>
                                          { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                            property :=
                                              (_ :
                                                ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                        1 =
                                      1) }
                              (x * y) =
                            OneHom.toFun
                                {
                                  toFun := fun v =>
                                    { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                      property :=
                                        (_ : ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                  map_one' :=
                                    (_ :
                                      (fun v =>
                                            { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                              property :=
                                                (_ :
                                                  ∀ {j j' : J} (f : j ⟶ j'),
                                                    (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                          1 =
                                        1) }
                                x *
                              OneHom.toFun
                                {
                                  toFun := fun v =>
                                    { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                      property :=
                                        (_ : ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                  map_one' :=
                                    (_ :
                                      (fun v =>
                                            { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                              property :=
                                                (_ :
                                                  ∀ {j j' : J} (f : j ⟶ j'),
                                                    (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                          1 =
                                        1) }
                                y) },
                map_zero' :=
                  (_ :
                    OneHom.toFun
                        (↑{
                            toOneHom :=
                              {
                                toFun := fun v =>
                                  { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                    property :=
                                      (_ : ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                map_one' :=
                                  (_ :
                                    (fun v =>
                                          { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                            property :=
                                              (_ :
                                                ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                        1 =
                                      1) },
                            map_mul' :=
                              (_ :
                                ∀ (x y : ↑s.pt),
                                  OneHom.toFun
                                      {
                                        toFun := fun v =>
                                          { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                            property :=
                                              (_ :
                                                ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                        map_one' :=
                                          (_ :
                                            (fun v =>
                                                  { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                    property :=
                                                      (_ :
                                                        ∀ {j j' : J} (f : j ⟶ j'),
                                                          (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                1 =
                                              1) }
                                      (x * y) =
                                    OneHom.toFun
                                        {
                                          toFun := fun v =>
                                            { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                              property :=
                                                (_ :
                                                  ∀ {j j' : J} (f : j ⟶ j'),
                                                    (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                          map_one' :=
                                            (_ :
                                              (fun v =>
                                                    { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                      property :=
                                                        (_ :
                                                          ∀ {j j' : J} (f : j ⟶ j'),
                                                            (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                  1 =
                                                1) }
                                        x *
                                      OneHom.toFun
                                        {
                                          toFun := fun v =>
                                            { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                              property :=
                                                (_ :
                                                  ∀ {j j' : J} (f : j ⟶ j'),
                                                    (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                          map_one' :=
                                            (_ :
                                              (fun v =>
                                                    { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                      property :=
                                                        (_ :
                                                          ∀ {j j' : J} (f : j ⟶ j'),
                                                            (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                  1 =
                                                1) }
                                        y) })
                        0 =
                      0),
                map_add' :=
                  (_ :
                    ∀ (x y : ↑s.pt),
                      OneHom.toFun
                          (↑{
                              toOneHom :=
                                {
                                  toFun := fun v =>
                                    { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                      property :=
                                        (_ : ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                  map_one' :=
                                    (_ :
                                      (fun v =>
                                            { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                              property :=
                                                (_ :
                                                  ∀ {j j' : J} (f : j ⟶ j'),
                                                    (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                          1 =
                                        1) },
                              map_mul' :=
                                (_ :
                                  ∀ (x y : ↑s.pt),
                                    OneHom.toFun
                                        {
                                          toFun := fun v =>
                                            { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                              property :=
                                                (_ :
                                                  ∀ {j j' : J} (f : j ⟶ j'),
                                                    (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                          map_one' :=
                                            (_ :
                                              (fun v =>
                                                    { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                      property :=
                                                        (_ :
                                                          ∀ {j j' : J} (f : j ⟶ j'),
                                                            (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                  1 =
                                                1) }
                                        (x * y) =
                                      OneHom.toFun
                                          {
                                            toFun := fun v =>
                                              { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                property :=
                                                  (_ :
                                                    ∀ {j j' : J} (f : j ⟶ j'),
                                                      (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                            map_one' :=
                                              (_ :
                                                (fun v =>
                                                      { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                        property :=
                                                          (_ :
                                                            ∀ {j j' : J} (f : j ⟶ j'),
                                                              (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                    1 =
                                                  1) }
                                          x *
                                        OneHom.toFun
                                          {
                                            toFun := fun v =>
                                              { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                property :=
                                                  (_ :
                                                    ∀ {j j' : J} (f : j ⟶ j'),
                                                      (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                            map_one' :=
                                              (_ :
                                                (fun v =>
                                                      { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                        property :=
                                                          (_ :
                                                            ∀ {j j' : J} (f : j ⟶ j'),
                                                              (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                    1 =
                                                  1) }
                                          y) })
                          (x + y) =
                        OneHom.toFun
                            (↑{
                                toOneHom :=
                                  {
                                    toFun := fun v =>
                                      { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                        property :=
                                          (_ : ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                    map_one' :=
                                      (_ :
                                        (fun v =>
                                              { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                property :=
                                                  (_ :
                                                    ∀ {j j' : J} (f : j ⟶ j'),
                                                      (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                            1 =
                                          1) },
                                map_mul' :=
                                  (_ :
                                    ∀ (x y : ↑s.pt),
                                      OneHom.toFun
                                          {
                                            toFun := fun v =>
                                              { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                property :=
                                                  (_ :
                                                    ∀ {j j' : J} (f : j ⟶ j'),
                                                      (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                            map_one' :=
                                              (_ :
                                                (fun v =>
                                                      { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                        property :=
                                                          (_ :
                                                            ∀ {j j' : J} (f : j ⟶ j'),
                                                              (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                    1 =
                                                  1) }
                                          (x * y) =
                                        OneHom.toFun
                                            {
                                              toFun := fun v =>
                                                { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                  property :=
                                                    (_ :
                                                      ∀ {j j' : J} (f : j ⟶ j'),
                                                        (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                              map_one' :=
                                                (_ :
                                                  (fun v =>
                                                        { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                          property :=
                                                            (_ :
                                                              ∀ {j j' : J} (f : j ⟶ j'),
                                                                (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                      1 =
                                                    1) }
                                            x *
                                          OneHom.toFun
                                            {
                                              toFun := fun v =>
                                                { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                  property :=
                                                    (_ :
                                                      ∀ {j j' : J} (f : j ⟶ j'),
                                                        (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                              map_one' :=
                                                (_ :
                                                  (fun v =>
                                                        { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                          property :=
                                                            (_ :
                                                              ∀ {j j' : J} (f : j ⟶ j'),
                                                                (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                      1 =
                                                    1) }
                                            y) })
                            x +
                          OneHom.toFun
                            (↑{
                                toOneHom :=
                                  {
                                    toFun := fun v =>
                                      { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                        property :=
                                          (_ : ∀ {j j' : J} (f : j ⟶ j'), (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                    map_one' :=
                                      (_ :
                                        (fun v =>
                                              { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                property :=
                                                  (_ :
                                                    ∀ {j j' : J} (f : j ⟶ j'),
                                                      (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                            1 =
                                          1) },
                                map_mul' :=
                                  (_ :
                                    ∀ (x y : ↑s.pt),
                                      OneHom.toFun
                                          {
                                            toFun := fun v =>
                                              { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                property :=
                                                  (_ :
                                                    ∀ {j j' : J} (f : j ⟶ j'),
                                                      (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                            map_one' :=
                                              (_ :
                                                (fun v =>
                                                      { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                        property :=
                                                          (_ :
                                                            ∀ {j j' : J} (f : j ⟶ j'),
                                                              (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                    1 =
                                                  1) }
                                          (x * y) =
                                        OneHom.toFun
                                            {
                                              toFun := fun v =>
                                                { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                  property :=
                                                    (_ :
                                                      ∀ {j j' : J} (f : j ⟶ j'),
                                                        (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                              map_one' :=
                                                (_ :
                                                  (fun v =>
                                                        { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                          property :=
                                                            (_ :
                                                              ∀ {j j' : J} (f : j ⟶ j'),
                                                                (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                      1 =
                                                    1) }
                                            x *
                                          OneHom.toFun
                                            {
                                              toFun := fun v =>
                                                { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                  property :=
                                                    (_ :
                                                      ∀ {j j' : J} (f : j ⟶ j'),
                                                        (s.π.app j ≫ F.map f) v = (s.π.app j') v) },
                                              map_one' :=
                                                (_ :
                                                  (fun v =>
                                                        { val := fun j => ((forget (AlgebraCat R)).mapCone s).π.app j v,
                                                          property :=
                                                            (_ :
                                                              ∀ {j j' : J} (f : j ⟶ j'),
                                                                (s.π.app j ≫ F.map f) v = (s.π.app j') v) })
                                                      1 =
                                                    1) }
                                            y) })
                            y) })
          ((algebraMap R ↑s.pt) r))
      j =
    ↑((algebraMap R ↑(limitCone F).pt) r) j

Next tactic:
exact (s.π.app j).commutes r