Additive characters of finite rings and fields #
This file collects some results on additive characters whose domain is (the additive group of) a finite ring or field.
Main definitions and results #
We define an additive character ψ
to be primitive if mulShift ψ a
is trivial only when
a = 0
.
We show that when ψ
is primitive, then the map a ↦ mulShift ψ a
is injective
(AddChar.to_mulShift_inj_of_isPrimitive
) and that ψ
is primitive when R
is a field
and ψ
is nontrivial (AddChar.IsNontrivial.isPrimitive
).
We also show that there are primitive additive characters on R
(with suitable
target R'
) when R
is a field or R = ZMod n
(AddChar.primitiveCharFiniteField
and AddChar.primitiveZModChar
).
Finally, we show that the sum of all character values is zero when the character
is nontrivial (and the target is a domain); see AddChar.sum_eq_zero_of_isNontrivial
.
Tags #
additive character
The values of an additive character on a ring of positive characteristic are roots of unity.
The composition of a primitive additive character with an injective mooid homomorphism is also primitive.
The map associating to a : R
the multiplicative shift of ψ
by a
is injective when ψ
is primitive.
When R
is a field F
, then a nontrivial additive character is primitive
Definition for a primitive additive character on a finite ring R
into a cyclotomic extension
of a field R'
. It records which cyclotomic extension it is, the character, and the
fact that the character is primitive.
- n : ℕ+
The first projection from
PrimitiveAddChar
, giving the cyclotomic field. - char : AddChar R (CyclotomicField self.n R')
The second projection from
PrimitiveAddChar
, giving the character. - prim : self.char.IsPrimitive
The third projection from
PrimitiveAddChar
, showing thatχ.char
is primitive.
Instances For
The third projection from PrimitiveAddChar
, showing that χ.char
is primitive.
We can define an additive character on ZMod n
when we have an n
th root of unity ζ : C
.
Equations
- AddChar.zmodChar n hζ = { toFun := fun (a : ZMod n) => ζ ^ a.val, map_zero_eq_one' := ⋯, map_add_eq_mul' := ⋯ }
Instances For
The additive character on ZMod n
defined using ζ
sends a
to ζ^a
.
The converse: if the additive character takes the value 1
only at 0
,
then it is primitive.
The additive character on ZMod n
associated to a primitive n
th root of unity
is primitive
There is a primitive additive character on ZMod n
if the characteristic of the target
does not divide n
Equations
- AddChar.primitiveZModChar n F' h = let_fun this := ⋯; { n := n, char := AddChar.zmodChar ↑n ⋯, prim := ⋯ }
Instances For
Existence of a primitive additive character on a finite field #
There is a primitive additive character on the finite field F
if the characteristic
of the target is different from that of F
.
We obtain it as the composition of the trace from F
to ZMod p
with a primitive
additive character on ZMod p
, where p
is the characteristic of F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alias of AddChar.FiniteField.primitiveChar
.
There is a primitive additive character on the finite field F
if the characteristic
of the target is different from that of F
.
We obtain it as the composition of the trace from F
to ZMod p
with a primitive
additive character on ZMod p
, where p
is the characteristic of F
.
Instances For
The sum of all character values #
The sum over the values of mulShift ψ b
for ψ
primitive is zero when b ≠ 0
and #R
otherwise.