Documentation

Mathlib.Algebra.Group.Torsion

Torsion-free monoids and groups #

This file proves lemmas about torsion-free monoids. A monoid M is torsion-free if n โ€ข ยท : M โ†’ M is injective for all non-zero natural numbers n.

theorem pow_left_injective {M : Type u_1} [Monoid M] [IsMulTorsionFree M] {n : โ„•} (hn : n โ‰  0) :
Function.Injective fun (a : M) => a ^ n
theorem pow_left_inj {M : Type u_1} [Monoid M] [IsMulTorsionFree M] {n : โ„•} {a b : M} (hn : n โ‰  0) :
a ^ n = b ^ n โ†” a = b
theorem nsmul_right_inj {M : Type u_1} [AddMonoid M] [IsAddTorsionFree M] {n : โ„•} {a b : M} (hn : n โ‰  0) :
theorem pow_eq_one_iff_left {M : Type u_1} [Monoid M] [IsMulTorsionFree M] {n : โ„•} {a : M} (hn : n โ‰  0) :
a ^ n = 1 โ†” a = 1
theorem nsmul_eq_zero_iff_right {M : Type u_1} [AddMonoid M] [IsAddTorsionFree M] {n : โ„•} {a : M} (hn : n โ‰  0) :
n โ€ข a = 0 โ†” a = 0
@[simp]
theorem pow_eq_one_iff {M : Type u_1} [Monoid M] [IsMulTorsionFree M] {n : โ„•} {a : M} :
a ^ n = 1 โ†” a = 1 โˆจ n = 0
@[simp]
theorem nsmul_eq_zero_iff {M : Type u_1} [AddMonoid M] [IsAddTorsionFree M] {n : โ„•} {a : M} :
n โ€ข a = 0 โ†” a = 0 โˆจ n = 0
theorem pow_eq_one_iff_right {M : Type u_1} [Monoid M] [IsMulTorsionFree M] {n : โ„•} {a : M} (ha : a โ‰  1) :
a ^ n = 1 โ†” n = 0
theorem nsmul_eq_zero_iff_left {M : Type u_1} [AddMonoid M] [IsAddTorsionFree M] {n : โ„•} {a : M} (ha : a โ‰  0) :
n โ€ข a = 0 โ†” n = 0
@[deprecated nsmul_eq_zero_iff_left (since := "2025-10-19")]
theorem IsAddTorsionFree.nsmul_eq_zero_iff' {M : Type u_1} [AddMonoid M] [IsAddTorsionFree M] {n : โ„•} {a : M} (ha : a โ‰  0) :
n โ€ข a = 0 โ†” n = 0

Alias of nsmul_eq_zero_iff_left.

@[deprecated pow_eq_one_iff_right (since := "2025-10-19")]
theorem IsMulTorsionFree.pow_eq_one_iff' {M : Type u_1} [Monoid M] [IsMulTorsionFree M] {n : โ„•} {a : M} (ha : a โ‰  1) :
a ^ n = 1 โ†” n = 0

Alias of pow_eq_one_iff_right.

theorem sq_eq_one {M : Type u_1} [Monoid M] [IsMulTorsionFree M] {a : M} :
a ^ 2 = 1 โ†” a = 1

See sq_eq_one_iff for a version that holds in rings.

theorem zpow_left_injective {G : Type u_2} [Group G] [IsMulTorsionFree G] {n : โ„ค} :
n โ‰  0 โ†’ Function.Injective fun (a : G) => a ^ n
theorem zpow_left_inj {G : Type u_2} [Group G] [IsMulTorsionFree G] {n : โ„ค} {a b : G} (hn : n โ‰  0) :
a ^ n = b ^ n โ†” a = b
theorem zsmul_right_inj {G : Type u_2} [AddGroup G] [IsAddTorsionFree G] {n : โ„ค} {a b : G} (hn : n โ‰  0) :
theorem zpow_eq_zpow_iff' {G : Type u_2} [Group G] [IsMulTorsionFree G] {n : โ„ค} {a b : G} (hn : n โ‰  0) :
a ^ n = b ^ n โ†” a = b

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'.

@[simp]
theorem IsMulTorsionFree.zpow_eq_one_iff {G : Type u_2} [Group G] [IsMulTorsionFree G] {n : โ„ค} {a : G} :
a ^ n = 1 โ†” a = 1 โˆจ n = 0
theorem self_eq_neg {G : Type u_2} [AddGroup G] [IsAddTorsionFree G] {a : G} :
a = -a โ†” a = 0
theorem neg_eq_self {G : Type u_2} [AddGroup G] [IsAddTorsionFree G] {a : G} :
-a = a โ†” a = 0
theorem self_ne_neg {G : Type u_2} [AddGroup G] [IsAddTorsionFree G] {a : G} :
theorem neg_ne_self {G : Type u_2} [AddGroup G] [IsAddTorsionFree G] {a : G} :