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 Rrequires an injectionℕ ↪ R;char_p R 0asks that only0 : ℕmaps to0 : Runder 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.
Instances of this typeclass
- strict_ordered_semiring.to_char_zero
- is_R_or_C.char_zero_R_or_C
- char_zero_of_exp_char_one'
- number_field.to_char_zero
- with_top.char_zero
- polynomial.char_zero
- enat.char_zero
- cardinal.char_zero
- free_algebra.char_zero
- is_fraction_ring.char_zero
- zmod.char_zero
- polynomial.splitting_field.char_zero
- ennreal.char_zero
- complex.char_zero_complex
- number_field.ring_of_integers.char_zero
- padic.char_zero
- padic_int.char_zero
- zsqrtd.char_zero
- cyclotomic_field.char_zero