NoZeroSMulDivisors #
This file defines the NoZeroSMulDivisors class, and includes some tests
for the vanishing of elements (especially in modules over division rings).
TODO #
NoZeroSMulDivisors is mathematically incorrect for semimodules. Replace it with a new typeclass
Module.IsTorsionFree, cf https://github.com/kbuzzard/ClassFieldTheory. Torsion-free monoids have
seen the same change happen already.
NoZeroSMulDivisors R M states that a scalar multiple is 0 only if either argument is 0.
This is a version of saying that M is torsion free, without assuming R is zero-divisor free.
The main application of NoZeroSMulDivisors R M, when M is a module,
is the result smul_eq_zero: a scalar multiple is 0 iff either argument is 0.
It is a generalization of the NoZeroDivisors class to heterogeneous multiplication.
If scalar multiplication yields zero, either the scalar or the vector was zero.
Instances
Pullback a NoZeroSMulDivisors instance along an injective function.
Alias of the forward direction of noZeroSMulDivisors_nat_iff_isAddTorsionFree.
Alias of the forward direction of noZeroSMulDivisors_int_iff_isAddTorsionFree.