Torsion-free monoids and groups #
This file defines torsion-free monoids as those monoids M
for which n • · : M → M
is injective
for all non-zero natural number n
.
TODO #
Replace Monoid.IsTorsionFree
, which is mathematically incorrect for monoids which are not groups.
This probably means we also want to get rid of NoZeroSMulDivisors
, which is mathematically
incorrect for the same reason.
A monoid is R
-torsion-free if scalar multiplication by every non-zero element a : R
is
injective.
Instances
A monoid is R
-torsion-free if power by every non-zero element a : R
is injective.
Instances
theorem
pow_left_injective
{M : Type u_1}
[Monoid M]
[IsMulTorsionFree M]
{n : ℕ}
(hn : n ≠ 0)
:
Function.Injective fun (a : M) => a ^ n
theorem
nsmul_right_injective
{M : Type u_1}
[AddMonoid M]
[IsAddTorsionFree M]
{n : ℕ}
(hn : n ≠ 0)
:
Function.Injective fun (a : M) => n • a
theorem
zpow_left_injective
{G : Type u_2}
[Group G]
[IsMulTorsionFree G]
{n : ℤ}
:
n ≠ 0 → Function.Injective fun (a : G) => a ^ n
theorem
zsmul_right_injective
{G : Type u_2}
[AddGroup G]
[IsAddTorsionFree G]
{n : ℤ}
:
n ≠ 0 → Function.Injective fun (a : G) => n • a
theorem
zpow_eq_zpow_iff'
{G : Type u_2}
[Group G]
[IsMulTorsionFree G]
{n : ℤ}
{a b : G}
(hn : n ≠ 0)
:
Alias of zpow_left_inj
, for ease of discovery alongside zsmul_le_zsmul_iff'
and
zsmul_lt_zsmul_iff'
.
theorem
zsmul_eq_zsmul_iff'
{G : Type u_2}
[AddGroup G]
[IsAddTorsionFree G]
{n : ℤ}
{a b : G}
(hn : n ≠ 0)
:
Alias of zsmul_right_inj
, for ease of discovery alongside zsmul_le_zsmul_iff'
and
zsmul_lt_zsmul_iff'
.