/-- 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
    

Proof state:
case refine'_6.a
R : Type u
inst✝¹ : CommRing R
J : Type v
inst✝ : SmallCategory J
F : J ⥤ AlgebraCatMax R
s : Cone F
r : R
⊢ ↑(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)) =
    ↑((algebraMap R ↑(limitCone F).pt) r)

Next tactic:
ext j