# Action of regular elements on a module #

We introduce M-regular elements, in the context of an R-module M. The corresponding predicate is called IsSMulRegular.

There are very limited typeclass assumptions on R and M, but the "mathematical" case of interest is a commutative ring R acting on a module M. Since the properties are "multiplicative", there is no actual requirement of having an addition, but there is a zero in both R and M. SMultiplications involving 0 are, of course, all trivial.

The defining property is that an element a ∈ R is M-regular if the smultiplication map M → M, defined by m ↦ a • m, is injective.

This property is the direct generalization to modules of the property IsLeftRegular defined in Algebra/Regular. Lemma isLeftRegular_iff shows that indeed the two notions coincide.

def IsSMulRegular {R : Type u_1} (M : Type u_3) [SMul R M] (c : R) :

An M-regular element is an element c such that multiplication on the left by c is an injective map M → M.

Equations
Instances For
theorem IsLeftRegular.isSMulRegular {R : Type u_1} [Mul R] {c : R} (h : ) :
theorem isLeftRegular_iff {R : Type u_1} [Mul R] {a : R} :

Left-regular multiplication on R is equivalent to R-regularity of R itself.

theorem IsRightRegular.isSMulRegular {R : Type u_1} [Mul R] {c : R} (h : ) :
theorem isRightRegular_iff {R : Type u_1} [Mul R] {a : R} :

Right-regular multiplication on R is equivalent to Rᵐᵒᵖ-regularity of R itself.

theorem IsSMulRegular.smul {R : Type u_1} {S : Type u_2} {M : Type u_3} {a : R} {s : S} [SMul R M] [SMul R S] [SMul S M] [] (ra : ) (rs : ) :

The product of M-regular elements is M-regular.

theorem IsSMulRegular.of_smul {R : Type u_1} {S : Type u_2} {M : Type u_3} {s : S} [SMul R M] [SMul R S] [SMul S M] [] (a : R) (ab : IsSMulRegular M (a s)) :

If an element b becomes M-regular after multiplying it on the left by an M-regular element, then b is M-regular.

@[simp]
theorem IsSMulRegular.smul_iff {R : Type u_1} {S : Type u_2} {M : Type u_3} {a : R} [SMul R M] [SMul R S] [SMul S M] [] (b : S) (ha : ) :

An element is M-regular if and only if multiplying it on the left by an M-regular element is M-regular.

theorem IsSMulRegular.isLeftRegular {R : Type u_1} [Mul R] {a : R} (h : ) :
theorem IsSMulRegular.isRightRegular {R : Type u_1} [Mul R] {a : R} (h : ) :
theorem IsSMulRegular.mul {R : Type u_1} {M : Type u_3} {a : R} {b : R} [SMul R M] [Mul R] [] (ra : ) (rb : ) :
theorem IsSMulRegular.of_mul {R : Type u_1} {M : Type u_3} {a : R} {b : R} [SMul R M] [Mul R] [] (ab : IsSMulRegular M (a * b)) :
@[simp]
theorem IsSMulRegular.mul_iff_right {R : Type u_1} {M : Type u_3} {a : R} {b : R} [SMul R M] [Mul R] [] (ha : ) :
theorem IsSMulRegular.mul_and_mul_iff {R : Type u_1} {M : Type u_3} {a : R} {b : R} [SMul R M] [Mul R] [] :

Two elements a and b are M-regular if and only if both products a * b and b * a are M-regular.

theorem IsSMulRegular.of_injective {R : Type u_1} {M : Type u_3} [SMul R M] {N : Type u_4} {F : Type u_5} [SMul R N] [FunLike F M N] [] (f : F) {r : R} (h1 : ) (h2 : ) :
@[simp]
theorem IsSMulRegular.one {R : Type u_1} (M : Type u_3) [] [] :

One is always M-regular.

theorem IsSMulRegular.of_mul_eq_one {R : Type u_1} {M : Type u_3} {a : R} {b : R} [] [] (h : a * b = 1) :

An element of R admitting a left inverse is M-regular.

theorem IsSMulRegular.pow {R : Type u_1} {M : Type u_3} {a : R} [] [] (n : ) (ra : ) :

Any power of an M-regular element is M-regular.

theorem IsSMulRegular.pow_iff {R : Type u_1} {M : Type u_3} {a : R} [] [] {n : } (n0 : 0 < n) :

An element a is M-regular if and only if a positive power of a is M-regular.

theorem IsSMulRegular.of_smul_eq_one {R : Type u_1} {S : Type u_2} {M : Type u_3} {a : R} {s : S} [] [SMul R M] [SMul R S] [] [] (h : a s = 1) :

An element of S admitting a left inverse in R is M-regular.

theorem IsSMulRegular.subsingleton {R : Type u_1} {M : Type u_3} [] [Zero M] [] (h : ) :

The element 0 is M-regular if and only if M is trivial.

theorem IsSMulRegular.zero_iff_subsingleton {R : Type u_1} {M : Type u_3} [] [Zero M] [] :

The element 0 is M-regular if and only if M is trivial.

theorem IsSMulRegular.not_zero_iff {R : Type u_1} {M : Type u_3} [] [Zero M] [] :

The 0 element is not M-regular, on a non-trivial module.

theorem IsSMulRegular.zero {R : Type u_1} {M : Type u_3} [] [Zero M] [] [sM : ] :

The element 0 is M-regular when M is trivial.

theorem IsSMulRegular.not_zero {R : Type u_1} {M : Type u_3} [] [Zero M] [] [nM : ] :

The 0 element is not M-regular, on a non-trivial module.

theorem IsSMulRegular.mul_iff {R : Type u_1} {M : Type u_3} {a : R} {b : R} [] [SMul R M] [] :

A product is M-regular if and only if the factors are.

theorem isSMulRegular_of_group {R : Type u_1} {G : Type u_4} [] [] (g : G) :

An element of a group acting on a Type is regular. This relies on the availability of the inverse given by groups, since there is no LeftCancelSMul typeclass.

theorem Units.isSMulRegular {R : Type u_1} (M : Type u_3) [] [] (a : Rˣ) :

Any element in Rˣ is M-regular.

theorem IsUnit.isSMulRegular {R : Type u_1} (M : Type u_3) {a : R} [] [] (ua : ) :

A unit is M-regular.

theorem IsSMulRegular.eq_zero_of_smul_eq_zero {R : Type u_1} {M : Type u_3} [Zero M] [] {r : R} {x : M} (h1 : ) (h2 : r x = 0) :
x = 0
theorem Equiv.isSMulRegular_congr {R : Type u_4} {S : Type u_5} {M : Type u_6} {M' : Type u_7} [SMul R M] [SMul S M'] {e : M M'} {r : R} {s : S} (h : ∀ (x : M), e (r x) = s e x) :