Documentation

Mathlib.Algebra.Module.Torsion.Free

Torsion-free modules #

This files defines a torsion-free R-(semi)module M as a (semi)module where scalar multiplication by a regular element r : R is injective as a map M → M.

In the case of a module (group over a ring), this is equivalent to saying that r • m = 0 for some r : R, m : M implies that r is a zero-divisor. If furthermore the base ring is a domain, this is equivalent to the naïve r • m = 0 ↔ r = 0 ∨ m = 0 definition.

class Module.IsTorsionFree (R : Type u_1) (M : Type u_3) [Semiring R] [AddCommMonoid M] [Module R M] :

A R-module M is torsion-free if scalar multiplication by an element r : R is injective if multiplication (on R) by r is.

For domains, this is equivalent to the usual condition of r • m = 0 → r = 0 ∨ m = 0. See smul_eq_zero.

Instances
    theorem IsRegular.isSMulRegular {R : Type u_1} {M : Type u_3} {inst✝ : Semiring R} {inst✝¹ : AddCommMonoid M} {inst✝² : Module R M} [self : Module.IsTorsionFree R M] r : R :

    Alias of Module.IsTorsionFree.isSMulRegular.

    theorem Function.Injective.moduleIsTorsionFree {R : Type u_1} {M : Type u_3} {N : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [Module.IsTorsionFree R N] (f : MN) (hf : Injective f) (smul : ∀ (r : R) (m : M), f (r m) = r f m) :

    Pullback an IsTorsionFree instance along an injective function.

    theorem IsRegular.smul_right_injective {R : Type u_1} (M : Type u_3) [Semiring R] [AddCommMonoid M] [Module R M] {r : R} [Module.IsTorsionFree R M] (hr : IsRegular r) :
    Function.Injective fun (x : M) => r x
    @[simp]
    theorem IsRegular.smul_right_inj {R : Type u_1} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {r : R} {m₁ m₂ : M} [Module.IsTorsionFree R M] (hr : IsRegular r) :
    r m₁ = r m₂ m₁ = m₂
    @[simp]
    theorem IsRegular.smul_eq_zero_iff_right {R : Type u_1} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {r : R} {m : M} [Module.IsTorsionFree R M] (hr : IsRegular r) :
    r m = 0 m = 0
    theorem IsRegular.smul_ne_zero_iff_right {R : Type u_1} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {r : R} {m : M} [Module.IsTorsionFree R M] (hr : IsRegular r) :
    r m 0 m 0
    theorem Module.IsTorsionFree.trans (R : Type u_1) {S : Type u_2} {M : Type u_3} [Semiring R] [Semiring S] [AddCommMonoid M] [Module R M] [Module S M] [IsTorsionFree R M] [Module S R] [IsTorsionFree S R] [IsScalarTower S R R] [SMulCommClass S R R] [IsScalarTower S R M] :
    theorem IsSMulRegular.of_ne_zero {R : Type u_1} {M : Type u_3} [Semiring R] [AddCommMonoid M] [Module R M] {r : R} [Module.IsTorsionFree R M] [IsDomain R] (hr : r 0) :
    @[instance 100]

    A characteristic zero domain is torsion-free.