Module docstring
{"# Modules over a ring
In this file we define
Module R M: an additive commutative monoidMis aModuleover aSemiring Rif forr : Randx : Mtheir \"scalar multiplication\"r • x : Mis defined, and the operation•satisfies some natural associativity and distributivity axioms similar to those on a ring.
Implementation notes
In typical mathematical usage, our definition of Module corresponds to \"semimodule\", and the
word \"module\" is reserved for Module R M where R is a Ring and M an AddCommGroup.
If R is a Field and M an AddCommGroup, M would be called an R-vector space.
Since those assumptions can be made by changing the typeclasses applied to R and M,
without changing the axioms in Module, mathlib calls everything a Module.
In older versions of mathlib3, we had separate abbreviations for semimodules and vector spaces.
This caused inference issues in some cases, while not providing any real advantages, so we decided
to use a canonical Module typeclass throughout.
Tags
semimodule, module, vector space "}