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.