Examples of zero-divisors in add_monoid_algebras #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file contains an easy source of zero-divisors in an add_monoid_algebra.
If k is a field and G is an additive group containing a non-zero torsion element, then
add_monoid_algebra k G contains non-zero zero-divisors: this is lemma zero_divisors_of_torsion.
There is also a version for periodic elements of an additive monoid: zero_divisors_of_periodic.
The converse of this statement is Kaplansky's zero divisor conjecture.
The formalized example generalizes in trivial ways the assumptions: the field k can be any
nontrivial ring R and the additive group G with a torsion element can be any additive monoid
A with a non-zero periodic element.
Besides this example, we also address a comment in data.finsupp.lex to the effect that the proof
that addition is monotone on α →₀ N uses that it is strictly monotone on N.
The specific statement is about finsupp.lex.covariant_class_le_left and its analogue
finsupp.lex.covariant_class_le_right.  We do not need two separate counterexamples, since the
operation is commutative.
The example is very simple.  Let F = {0, 1} with order determined by 0 < 1 and absorbing
addition (which is the same as max in this case).  We denote a function f : F → F (which is
automatically finitely supported!) by [f 0, f 1], listing its values.  Recall that the order on
finitely supported function is lexicographic, matching the list notation.  The inequality
[0, 1] ≤ [1, 0] holds.  However, adding [1, 0] to both sides yields the reversed inequality
[1, 1] > [1, 0].
This is a simple example showing that if R is a non-trivial ring and A is an additive
monoid with an element a satisfying n • a = a and (n - 1) • a ≠ a, for some 2 ≤ n,
then add_monoid_algebra R A contains non-zero zero-divisors.  The elements are easy to write down:
[a] and [a] ^ (n - 1) - 1 are non-zero elements of add_monoid_algebra R A whose product
is zero.
Observe that such an element a cannot be invertible.  In particular, this lemma never applies
if A is a group.
This is a simple example showing that if R is a non-trivial ring and A is an additive
monoid with a non-zero element a of finite order oa, then add_monoid_algebra R A contains
non-zero zero-divisors.  The elements are easy to write down:
∑ i in finset.range oa, [a] ^ i and [a] - 1 are non-zero elements of add_monoid_algebra R A
whose product is zero.
In particular, this applies whenever the additive monoid A is an additive group with a non-zero
torsion element.
- zero : counterexample.F
- one : counterexample.F
F is the type with two elements zero and one.  We define the "obvious" linear order and
absorbing addition on it to generate our counterexample.
Instances for counterexample.F
        
        
    The same as list.get_rest, except that we take the "rest" from the first match, rather than
from the beginning, returning [] if there is no match.  For instance,
#eval [1,2].drop_until [3,1,2,4,1,2]  -- [4, 1, 2]
Equations
- counterexample.list.drop_until l (a :: as) = ((a :: as).get_rest l).get_or_else (counterexample.list.drop_until l as)
- counterexample.list.drop_until l list.nil = list.nil
Equations
1 is not really needed, but it is nice to use the notation.
Equations
val maps 0 1 : F to their counterparts in ℕ.
We use it to lift the linear order on ℕ.
Equations
- counterexample.F.linear_order = linear_order.lift' counterexample.F.val counterexample.F.linear_order._proof_1
F would be a comm_semiring, using min as multiplication.  Again, we do not need this.
Equations
- counterexample.F.add_comm_monoid = {add := linear_order.max counterexample.F.linear_order, add_assoc := counterexample.F.add_comm_monoid._proof_1, zero := 0, zero_add := counterexample.F.add_comm_monoid._proof_2, add_zero := counterexample.F.add_comm_monoid._proof_3, nsmul := add_monoid.nsmul._default 0 linear_order.max counterexample.F.add_comm_monoid._proof_4 counterexample.F.add_comm_monoid._proof_5, nsmul_zero' := counterexample.F.add_comm_monoid._proof_6, nsmul_succ' := counterexample.F.add_comm_monoid._proof_7, add_comm := counterexample.F.add_comm_monoid._proof_8}
The covariant_classes asserting monotonicity of addition hold for F.
A few simp-lemmas to take care of trivialities in the proof of the example below.