/-- The scalar multiplication on `ModuleCat R` considered as a morphism of rings
to the endomorphisms of the forgetful functor to `AddCommGroupCat)`. -/
@[simps]
def smulNatTrans : R →+* End (forget₂ (ModuleCat R) AddCommGroupCat) where
  toFun r :=
    { app := fun M => M.smul r
      naturality := fun _ _ _ => smul_naturality _ r }
  map_one' := NatTrans.ext _ _ (by aesop_cat)
  map_zero' := NatTrans.ext _ _ (by aesop_cat)
  map_mul' _ _ := NatTrans.ext _ _ (by aesop_cat)
  map_add' _ _ := NatTrans.ext _ _ (by 

Proof state:
R : Type u
inst✝ : Ring R
X₁ X₂ : Type v
M N : ModuleCat R
x✝¹ x✝ : R
⊢ (OneHom.toFun
        (↑{
            toOneHom :=
              { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) },
            map_mul' :=
              (_ :
                ∀ (x x_1 : R),
                  OneHom.toFun
                      { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                        map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) }
                      (x * x_1) =
                    OneHom.toFun
                        { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                          map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) }
                        x *
                      OneHom.toFun
                        { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                          map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) }
                        x_1) })
        (x✝¹ + x✝)).app =
    (OneHom.toFun
          (↑{
              toOneHom :=
                { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                  map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) },
              map_mul' :=
                (_ :
                  ∀ (x x_1 : R),
                    OneHom.toFun
                        { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                          map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) }
                        (x * x_1) =
                      OneHom.toFun
                          { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                            map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) }
                          x *
                        OneHom.toFun
                          { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                            map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) }
                          x_1) })
          x✝¹ +
        OneHom.toFun
          (↑{
              toOneHom :=
                { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                  map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) },
              map_mul' :=
                (_ :
                  ∀ (x x_1 : R),
                    OneHom.toFun
                        { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                          map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) }
                        (x * x_1) =
                      OneHom.toFun
                          { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                            map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) }
                          x *
                        OneHom.toFun
                          { toFun := fun r => NatTrans.mk fun M => (smul M) r,
                            map_one' := (_ : (fun r => NatTrans.mk fun M => (smul M) r) 1 = 1) }
                          x_1) })
          x✝).app

Next tactic:
aesop_cat