Characteristic zero #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
A ring R
is called of characteristic zero if every natural number n
is non-zero when considered
as an element of R
. Since this definition doesn't mention the multiplicative structure of R
except for the existence of 1
in this file characteristic zero is defined for additive monoids
with 1
.
Main definition #
char_zero
is the typeclass of an additive monoid with one such that the natural homomorphism
from the natural numbers into it is injective.
TODO #
- Unify with
char_p
(possibly using an out-parameter)
- cast_injective : function.injective coe
Typeclass for monoids with characteristic zero. (This is usually stated on fields but it makes sense for any additive monoid with 1.)
Warning: for a semiring R
, char_zero R
and char_p R 0
need not coincide.
char_zero R
requires an injectionℕ ↪ R
;char_p R 0
asks that only0 : ℕ
maps to0 : R
under the mapℕ → R
.
For instance, endowing {0, 1}
with addition given by max
(i.e. 1
is absorbing), shows that
char_zero {0, 1}
does not hold and yet char_p {0, 1} 0
does.
This example is formalized in counterexamples/char_p_zero_ne_char_zero
.