Dirichlet Characters

Let R be a ring. Then a Dirichlet character over R of modulus N is a homomorphism ε : (Z/NZ) * -> R * , where R * is the group of invertible elements of R. We extend ε to a set theoretic map on the whole of Z by defining ε(x) = 0 if gcd(x, N) != 1. The conductor of ε is the smallest positive integer M such that the homomorphism (Z/NZ) * -> R * factors through (Z/MZ) * via the natural map (Z/NZ) * -> (Z/MZ) * .

Contents

Creation

DirichletGroup(N) : RngIntElt -> GrpDrch
The group of Dirichlet characters modulo N with values in RationalField(). (Note that this is a group of exponent at most 2.)
FullDirichletGroup(N) : RngIntElt -> GrpDrch
The group of Dirichlet characters modulo N taking values in the mth cyclotomic field, where m is the exponent of the unit group modulo N.
DirichletGroup(N,R) : RngIntElt, Rng -> GrpDrch
The group of Dirichlet characters modulo N with values in the ring R. Here R can be the integers, rationals, a number field or a finite field. (Note that this group may be smaller than the full Dirichlet group.)
DirichletGroup(N,R,z,r) : RngIntElt, Rng, RngElt, RngIntElt -> GrpDrch
The group of Dirichlet characters mod N with values in the cyclic subgroup generated by the root of unity z in the ring R. Here z must be an element of R of exact order r (where r may be smaller than the exponent of the full Dirichlet group).
BaseExtend(G, R) : GrpDrch, Rng -> GrpDrch
BaseExtend(G, R, z) : GrpDrch, Rng, RngElt -> GrpDrch
The group of Dirichlet characters corresponding to G with values in the ring R. In the second form, the distinguished root of unity of the base ring of G is identified with the given element z.
AssignNames(~G, S) : GrpDrch, [MonStgElt] ->
Assign names to the generators of the Dirichlet group G.

Element Creation

Elements(G) : GrpDrch -> [GrpDrchElt]
A sequence containing all Dirichlet characters in the Dirichlet group G.
Random(G) : GrpDrch -> GrpDrchElt
A random element of the Dirichlet group G.
G . i : GrpDrch, RngIntElt -> GrpDrchElt
The ith generator of the group G.
G ! x : GrpDrch, Any -> GrpDrchElt
This coerces the given element x into the Dirichlet group G. Here x may be a Dirichlet character belonging to a different group, or a sequence of integers specifying an element of the AbelianGroup of G.
KroneckerCharacter(D) : RngIntElt -> GrpDrchElt
KroneckerCharacter(D, R) : RngIntElt, Rng -> GrpDrchElt
The Kronecker character n |-> (d/n), where d is the fundamental discriminant associated to the integer D.

When a ring R is given, this is returned as a character with values in R.

Attributes of Dirichlet Groups

BaseRing(G) : GrpDrch -> Rng
The ring in which characters in G take values.
Modulus(G) : GrpDrch -> RngIntElt
The integer N such that G is a group of Dirichlet characters on Z/N.
Order(G) : GrpDrch -> RngIntElt
The order of the Dirichlet group G.
Exponent(G) : GrpDrch -> RngIntElt
The exponent of the Dirichlet group G.
NumberOfGenerators(G) : GrpDrch -> RngIntElt
The number of generators of the Dirichlet group G.
Generators(G) : GrpDrch -> [GrpDrchElt]
A sequence containing generators for the Dirichlet group G.
UnitGenerators(G) : GrpDrch -> [RngIntElt]
This returns an ordered sequence of integers that reduce to "canonical" generators of the unit group of Z/N, where N is the modulus of G.
GaloisConjugacyRepresentatives(G) : GrpDrch -> [GrpDrchElt]
GaloisConjugacyRepresentatives(seq) : [GrpDrchElt] -> [GrpDrchElt]
This returns a sequence containing one representative from each Galois conjugacy class (over Q) of characters corresponding to a character in the given group or the given sequence.
AbelianGroup(G) : GrpDrch -> GrpAb, Map
This returns a finite abelian group isomorphic to the given group G of Dirichlet characters (as an abstract group), and secondly returns a map from the abstract group to G.

It is necessary to use this function in order to make group theoretic constructions involving G.

Attributes of Elements

BaseRing(chi) : GrpDrchElt -> Rng
The ring in which the Dirichlet character χ takes values.
Modulus(chi) : GrpDrchElt -> RngIntElt
The modulus of the group of Dirichlet characters that contains χ.
Conductor(chi) : GrpDrchElt -> RngIntElt
The minimal conductor of the Dirichlet character χ. (That is, the smallest integer M such that chi is well-defined on the unit group of Z/M.)
ElementToSequence(chi) : GrpDrchElt -> SeqEnum
A sequence of integers specifying the Dirichlet character χ (in terms of generators of the group containing χ).
x eq y : GrpDrchElt, GrpDrchElt -> BoolElt
Return true iff the given characters have the same modulus and values.
Order(chi) : GrpDrchElt -> RngIntElt
The order of the given element χ in a group of Dirichlet characters.
IsTrivial(chi) : GrpDrchElt -> BoolElt
Returns true if and only if the Dirichlet character χ has order 1.
IsPrimitive(chi) : GrpDrchElt -> BoolElt
Returns true iff the Dirichlet character χ is primitive (equivalently, if its conductor equals its modulus).
AssociatedPrimitiveCharacter(chi) : GrpDrchElt -> GrpDrchElt
The primitive character modulo the conductor of χ which takes the same values (on units) as χ.
IsEven(chi) : GrpDrchElt -> BoolElt
Returns true if and only if Evaluate(chi,-1) is equal to 1. Note that in characteristic 0, the space of modular forms of weight k and character χ is zero if χ is even and k is odd.
IsOdd(chi) : GrpDrchElt -> BoolElt
Returns true if and only if Evaluate(chi,-1) is equal to -1. Note that in characteristic 0, the space of modular forms of weight k and character χ is zero if χ is odd and k is even.
IsTotallyEven(chi) : GrpDrchElt -> BoolElt
For a Dirichlet character χ, this is true if and only if every character in the Decomposition of χ (into prime power components) is even.
Decomposition(chi) : GrpDrchElt -> List
This decomposes the Dirichlet character χ as a product of characters with prime power moduli. The function returns a list (not a sequence) containing these characters (which do not belong to the same group).
MinimalBaseRingCharacter(chi) : GrpDrchElt -> GrpDrchElt
The returns a character which is the same as χ, except which takes values in the smallest possible subring of the base ring of χ.

Evaluation

Evaluate(chi,n) : GrpDrchElt, RngIntElt -> RngElt
chi(n) : GrpDrchElt, RngIntElt -> RngElt
The value of the Dirichlet character χ at the integer n.
ValueList(chi) : GrpDrchElt -> [RngElt]
A sequence containing the values [χ(1), .., χ(N)] of the given character χ, where N is the modulus of χ.

The list of values is stored; then in later calls to Evaluate, the stored value is returned.

ValuesOnUnitGenerators(chi) : GrpDrchElt -> [RngElt]
A sequence containing the values of χ on the ordered sequence of elements of Z/m given by UnitGenerators(Parent(chi)), where m is the modulus of χ.
OrderOfRootOfUnity(r, n) : RngElt, RngIntElt -> RngIntElt
Given an element r of some ring which is assumed to satisfy rn = 1, this returns the smallest integer m such that rm = 1.

(This provides a convenient way to calculate the order of values of non-real characters.)

Arithmetic

x * y : GrpDrchElt, GrpDrchElt -> GrpDrchElt
x / y : GrpDrchElt, GrpDrchElt -> GrpDrchElt
The product or quotient (respectively) of the Dirichlet characters x and y. This is a Dirichlet character of modulus equal to the least common multiple of the moduli of x and y. The base rings and chosen roots of unity of the parents of x and y are equal.
x ^ n : GrpDrchElt, RngIntElt -> GrpDrchElt
The Dirichlet character x raised to the power of n, where n is any integer.
x ^ phi : GrpDrchElt, Map -> GrpDrchElt
The image of the Dirichlet character x under the automorphism φ.
Sqrt(x) : GrpDrchElt -> GrpDrchElt
Given a Dirichlet character x of odd order, this returns a square root of x (in the same group).

Example

Example RngIntRes_Dirichlet (H20E7)

We begin by constructing the group of characters (Z/5Z) * -> Q * .
> G<a> := DirichletGroup(5);  G;  // The default base field is Q.
Group of Dirichlet characters of modulus 5 over Rational Field
> #G;
2
> [Evaluate(a, n) : n in [1..5]];
[ 1, -1, -1, 1, 0 ]
> Eltseq(a);
[ 2 ]
> a eq G![2];
true
> IsEven(a);
true
> IsOdd(a);
false
> IsTrivial(a);
false
Next we create a character by building it up "locally".
> G1<a4> := DirichletGroup(4);
> Conductor(a4);
4
> G2<a5> := DirichletGroup(25);
> Conductor(a5);
5
> eps := a4*a5;
> Modulus(eps);
100
> Conductor(eps);
20
> Evaluate(eps,7) eq Evaluate(a4,7)*Evaluate(a5,7);
true
Characters can be constructed over various fields.
> G<a> := DirichletGroup(7,GF(7));
> #G;
6
> Evaluate(a,2);
2
>
> G<a3,a5> := DirichletGroup(15,CyclotomicField(EulerPhi(15)));
> G;
Group of Dirichlet characters of modulus 15 over Cyclotomic Field of
order 8 and degree 4
> #G;
8
> Conductor(a3);
3
> Conductor(a5);
5
> Order(a5);
4
> Evaluate(a5,2);
zeta_8^2
If D is a fundamental discriminant, then KroneckerCharacter(D) is the quadratic Dirichlet character corresponding to the quadratic field Q(Sqrt(D)). The following code verifies that KroneckerCharacter and KroneckerSymbol agree in the case D=209.
> chi := KroneckerCharacter(209);
> for n in [1..209] do
>    assert Evaluate(chi,n) eq KroneckerSymbol(209,n);
> end for;
If E is an elliptic curve with newform fE, then the twist ED corresponds to fE twisted by this character, as illustrated below.
> E := EllipticCurve(CremonaDatabase(),"11A");
> f := qEigenform(E,8); f;
q - 2*q^2 - q^3 + 2*q^4 + q^5 + 2*q^6 - 2*q^7 + O(q^8)
> chi := KroneckerCharacter(-7);
> qEigenform(QuadraticTwist(E,-7),8);
q - 2*q^2 + q^3 + 2*q^4 - q^5 - 2*q^6 + O(q^8)
> R<q> := Parent(f);
> &+[Evaluate(chi,n)*Coefficient(f,n)*q^n : n in [1..7]] + O(q^8);
q - 2*q^2 + q^3 + 2*q^4 - q^5 - 2*q^6 + O(q^8)
V2.28, 13 July 2023