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
An additive character is primitive iff all its multiplicative shifts by nonzero elements are nontrivial.
Equations
- AddChar.IsPrimitive ψ = ∀ (a : R), a ≠ 0 → AddChar.IsNontrivial (AddChar.mulShift ψ a)
Instances For
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.
Equations
- AddChar.PrimitiveAddChar R R' = ((n : ℕ+) × (char : AddChar R (CyclotomicField n R')) ×' AddChar.IsPrimitive char)
Instances For
The first projection from PrimitiveAddChar, giving the cyclotomic field.
Equations
- AddChar.PrimitiveAddChar.n χ = χ.fst
Instances For
The second projection from PrimitiveAddChar, giving the character.
Equations
- AddChar.PrimitiveAddChar.char χ = χ.snd.fst
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 nth root of unity ζ : C.
Equations
- AddChar.zmodChar n hζ = { toFun := fun (a : ZMod ↑n) => ζ ^ ZMod.val a, map_zero_one' := ⋯, map_add_mul' := ⋯ }
Instances For
The additive character on ZMod n defined using ζ sends a to ζ^a.
An additive character on ZMod n is nontrivial iff it takes a value ≠ 1 on 1.
A primitive additive character on ZMod n takes the value 1 only at 0.
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 nth 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 = { fst := n, snd := { fst := AddChar.zmodChar n ⋯, snd := ⋯ } }
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
The sum of all character values #
The sum over the values of a nontrivial additive character vanishes if the target ring is a domain.
The sum over the values of the trivial additive character is the cardinality of the source.
The sum over the values of mulShift ψ b for ψ primitive is zero when b ≠ 0
and #R otherwise.