Module docstring
{"# Elementwise monoid structure of additive submonoids
These definitions are a cut-down versions of the ones around Submodule.mul, as that API is
usually more useful.
SMul (AddSubmonoid R) (AddSubmonoid A) is also provided given DistribSMul R A,
and when R = A it is definitionally equal to the multiplication on AddSubmonoid R.
These are all available in the Pointwise locale.
Additionally, it provides various degrees of monoid structure:
* AddSubmonoid.one
* AddSubmonoid.mul
* AddSubmonoid.mulOneClass
* AddSubmonoid.semigroup
* AddSubmonoid.monoid
which is available globally to match the monoid structure implied by Submodule.idemSemiring.
Implementation notes
Many results about multiplication are derived from the corresponding results about scalar
multiplication, but results requiring right distributivity do not have SMul versions,
due to the lack of a suitable typeclass (unless one goes all the way to Module).
"}