Regular elements #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
We introduce left-regular, right-regular and regular elements, along with their to_additive
analogues add-left-regular, add-right-regular and add-regular elements.
By definition, a regular element in a commutative ring is a non-zero divisor.
Lemma is_regular_of_ne_zero implies that every non-zero element of an integral domain is regular.
Since it assumes that the ring is a cancel_monoid_with_zero it applies also, for instance, to ℕ.
The lemmas in Section mul_zero_class show that the 0 element is (left/right-)regular if and
only if the mul_zero_class is trivial. This is useful when figuring out stopping conditions for
regular sequences: if 0 is ever an element of a regular sequence, then we can extend the sequence
by adding one further 0.
The final goal is to develop part of the API to prove, eventually, results about non-zero-divisors.
A left-regular element is an element c such that multiplication on the left by c
is injective.
Equations
An add-left-regular element is an element c such that addition on the left by c
is injective. -/
Equations
An add-right-regular element is an element c such that addition on the right by c
is injective.
Equations
- is_add_right_regular c = function.injective (λ (_x : R), _x + c)
A right-regular element is an element c such that multiplication on the right by c
is injective.
Equations
- is_right_regular c = function.injective (λ (_x : R), _x * c)
- left : is_add_left_regular c
- right : is_add_right_regular c
An add-regular element is an element c such that addition by c both on the left and
on the right is injective.
- left : is_left_regular c
- right : is_right_regular c
A regular element is an element c such that multiplication by c both on the left and
on the right is injective.
In a semigroup, the product of left-regular elements is left-regular.
In an additive semigroup, the sum of add-left-regular elements is add-left.regular.
In a semigroup, the product of right-regular elements is right-regular.
In an additive semigroup, the sum of add-right-regular elements is add-right-regular.
If an element b becomes left-regular after multiplying it on the left by a left-regular
element, then b is left-regular.
If an element b becomes add-left-regular after adding to it on the left a
add-left-regular element, then b is add-left-regular.
An element is left-regular if and only if multiplying it on the left by a left-regular element is left-regular.
An element is add-left-regular if and only if adding to it on the left a add-left-regular element is add-left-regular.
If an element b becomes add-right-regular after adding to it on the right a
add-right-regular element, then b is add-right-regular.
If an element b becomes right-regular after multiplying it on the right by a right-regular
element, then b is right-regular.
An element is right-regular if and only if multiplying it on the right with a right-regular element is right-regular.
An element is add-right-regular if and only if adding it on the right to a add-right-regular element is add-right-regular.
Two elements a and b are add-regular if and only if both sums a + b and b + a
are add-regular.
Two elements a and b are regular if and only if both products a * b and b * a
are regular.
The "most used" implication of add_and_add_iff, with split hypotheses,
instead of ∧.
The "most used" implication of mul_and_mul_iff, with split hypotheses, instead of ∧.
The element 0 is left-regular if and only if R is trivial.
The element 0 is right-regular if and only if R is trivial.
The element 0 is regular if and only if R is trivial.
The element 0 is left-regular if and only if R is trivial.
In a non-trivial mul_zero_class, the 0 element is not left-regular.
The element 0 is right-regular if and only if R is trivial.
In a non-trivial mul_zero_class, the 0 element is not right-regular.
The element 0 is regular if and only if R is trivial.
A left-regular element of a nontrivial mul_zero_class is non-zero.
A right-regular element of a nontrivial mul_zero_class is non-zero.
A regular element of a nontrivial mul_zero_class is non-zero.
In a non-trivial ring, the element 0 is not left-regular -- with typeclasses.
In a non-trivial ring, the element 0 is not right-regular -- with typeclasses.
In a non-trivial ring, the element 0 is not regular -- with typeclasses.
If multiplying by 1 on either side is the identity, 1 is regular.
If adding 0 on either side is the identity, 0 is regular.
A product is regular if and only if the factors are.
A sum is add-regular if and only if the summands are.
An element admitting a left inverse is left-regular.
An element admitting a left additive opposite is add-left-regular.
An element admitting a right additive opposite is add-right-regular.
An element admitting a right inverse is right-regular.
If R is an additive monoid, an element in add_units R is add-regular.
If R is a monoid, an element in Rˣ is regular.
A unit in a monoid is regular.
An additive unit in an additive monoid is add-regular.
Elements of a left cancel semigroup are left regular.
Elements of an add left cancel semigroup are add-left-regular.
Elements of a right cancel semigroup are right regular.
Elements of an add right cancel semigroup are add-right-regular
Elements of a cancel monoid are regular. Cancel semigroups do not appear to exist.
Elements of an add cancel monoid are regular. Add cancel semigroups do not appear to exist.
Non-zero elements of an integral domain are regular.
In a non-trivial integral domain, an element is regular iff it is non-zero.