Commit 2026-01-13 19:40 290f644e
View on Github →chore(Algebra): replace NoZeroSMulDivisors with Module.IsTorsionFree wlog (#30563)
NoZeroSMulDivisors R M is mathematically wrong when R isn't a domain, so we replace it with the better definition Module.IsTorsionFree R M whenever they are equivalent.
In fact, if M is non-trivial, NoZeroSMulDivisors R M implies NoZeroDivisors R:
Take m : M is non-zero. Assume r s : R are such that r * s = 0. Then r • s • m = (r * s) • m = 0, so by NoZeroSMulDivisors we get r = 0 ∨ s = 0 ∨ m = 0. But m ≠ 0, so r = 0 ∨ s = 0, as wanted.
This justifies replacing [Ring R] [Nontrivial M] [NoZeroSMulDivisors R M] with [Ring R] [IsDomain R] [Nontrivial M] [IsTorsionFree R M].
Doing so, some lemmas become vacuous and some instances redundant. We remove them.