[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Class Field Theory

Magma can compute ray class groups, and class fields based on them (i.e. defining equations for them).

Subsections

Ray Class Group

The classical approach to class field theory, which is well suited for computations, is based on ideal groups which are generalisations of the ideal class group.

In addition to the functions listed here, the CRT will be of interest in this context.

RayClassGroup(I) : RngOrdIdl -> GrpAb, Map
RayClassGroup(I, T) : RngOrdIdl, SeqEnum[RngIntElt] -> GrpAb, Map
Given an integral ideal I belonging to the maximal order of a number field, the ray class group modulo I is the quotient of the subgroup generated by the ideals coprime to I by the subgroup generated by the principal ideals generated by elements congruent to 1 modulo I.

The sequence T contains the index numbers [ i_1, ..., i_r] of certain real infinite places. In this case, the generators of the principal ideals have to take positive values at the places indicated by the sequence T. T must be an ascending sequence of positive integers with length and elements at most the number of real embeddings. For the generators to have positive values means that the embeddings indicated in T of the generators are positive.

This function requires the class group to be known. If it is not already stored, it will be computed in such a way that its correctness is not guaranteed. However, it will almost always be correct. If the user requires a guaranteed result, then the class group must be verified by the user.

The ray class group is returned as an abelian group, together with a mapping between this abstract group and a set of representatives for the ray classes.

The algorithm used is a mixture of Pauli's approach following Hasse ([Pau96], [PP98]) and Cohen's method ([CDO96], [CDO97], [Coh00]).

RayResidueRing(m) : RngOrdIdl -> GrpAb, Map
RayResidueRing(m, inf) : RngOrdIdl, SeqEnum[RngIntElt] -> GrpAb, Map
Let m be an integral ideal of an absolute maximal order and inf a set of real places given by a sequence containing integers i with 1 <= i <= r1 where r1 is the number of real zeros of the defining polynomial of the field. Computes the group of units mod^ * m, i.e. for an element mu of O mu isomorphic to 1 mod^ * (m, inf) iff mu - 1 in m and for all i in inf the ith conjugate of mu is positive. The result is a finite abelian group and a map from the group to the order the ideal is of.

When inf is not given the unit group of the residue ring mod m is returned.

pSelmerGroup(O, p, S) : RngOrd P, prime p, { RngOrdIdl } -> G, m
    SetVerbose("ClassGroup", n):        Maximum: 5
Let S be a finite set of prime ideals of the absolute maximal order O and p some prime number. KpS := { x in K | v_a(x) = 0 mod p forall a in S}. or equivalently: KpS := { x in K | exists ( ideal) a: a^p = (x)}.

Example RngOrd_ideal-ray (H53E24)

Some ray class groups are computed below.

> R<x> := PolynomialRing(Integers());
> o := MaximalOrder(x^2-10);
> RayClassGroup(2*o, [1,2]);
Abelian Group isomorphic to Z/2 + Z/2
Defined on 2 generators
Relations:
    2*$.1 = 0
    2*$.2 = 0
Mapping from: Abelian Group isomorphic to Z/2 + Z/2
Defined on 2 generators
Relations:
    2*$.1 = 0
    2*$.2 = 0 to Set of ideals of o
> RayClassGroup(2*o);
Abelian Group isomorphic to Z/2
Defined on 1 generator
Relations:
    2*$.1 = 0
Mapping from: Abelian Group isomorphic to Z/2
Defined on 1 generator
Relations:
    2*$.1 = 0 to Set of ideals of o
> RayClassGroup(8*3*5*7*11*13*101*o);
Abelian Group isomorphic to Z/2 + Z/2 + Z/2 + Z/4 + Z/4 + Z/24 + Z/24 + Z/120 + 
Z/600
Defined on 9 generators
Relations:
    2*$.1 = 0
    2*$.2 = 0
    2*$.3 = 0
    8*$.4 = 0
    24*$.5 = 0
    4*$.6 = 0
    120*$.7 = 0
    12*$.8 = 0
    600*$.9 = 0
Mapping from: Abelian Group isomorphic to Z/2 + Z/2 + Z/2 + Z/4 + Z/4 + Z/24 + 
Z/24 + Z/120 + Z/600
Defined on 9 generators
Relations:
    2*$.1 = 0
    2*$.2 = 0
    2*$.3 = 0
    8*$.4 = 0
    24*$.5 = 0
    4*$.6 = 0
    120*$.7 = 0
    12*$.8 = 0
    600*$.9 = 0 to Set of ideals of o
> RayResidueRing(8*o, [1,2]);
Abelian Group isomorphic to Z/2 + Z/2 + Z/2 + Z/2 + Z/8
Defined on 5 generators
Relations:
    2*$.1 = 0
    2*$.2 = 0
    8*$.3 = 0
    2*$.4 = 0
    2*$.5 = 0
Mapping from: Abelian Group isomorphic to Z/2 + Z/2 + Z/2 + Z/2 + Z/8
Defined on 5 generators
Relations:
    2*$.1 = 0
    2*$.2 = 0
    8*$.3 = 0
    2*$.4 = 0
    2*$.5 = 0 to RngOrd: o

Abelian Extensions

The ultimate goal of class field theory was to be able to classify all abelian extensions of a given number field. Although the theoretical question was settled in the 1930's, it is still difficult to explicitly compute defining equations for class fields.

For extensions of imaginary quadratic fields, there are well known analytic methods available.

RayClassField(m) : Map -> FldAb
AbelianExtension(m) : Map -> FldAb
RayClassField(m, I, i) : Map, RngOrdIdl, [RngIntElt] -> FldAb
AbelianExtension(m, I, i) : Map, RngOrdIdl, [RngIntElt] -> FldAb
RayClassField(m, I) : Map, RngOrdIdl -> FldAb
AbelianExtension(m, I) : Map, RngOrdIdl -> FldAb
Given a map m : G to I where G is a finite abelian group and I is the set of ideals of some absolute maximal order construct the class field defined by m.

More formally, m^(-1) must be a homomorphism from some ray class group R onto an finite abelian group G. If either I or I and i are given, they must define R. Otherwise, Magma will try to extract this information from m. The class field defined by m has a Galois groups that is isomorphic to R/ker(m^(-1)) under the Artin map.

EquationOrder(A) : FldAb -> RngOrd
    SetVerbose("ClassField", n):        Maximum: 5
Using the algorithm of Fieker ([Fie01], [Coh00]) defining equations for A are computed. For each cyclic factor of prime power degree one polynomial will be constructed.

Depending on the size of the cyclic factors encountered, this can be a very lengthy process.

Discriminant(A) : FldAb -> RngOrdIdl, [RngIntElt]
Based of the conductor-discriminant relation, the discriminant of the class field A is computed. This does not involve the computation of defining equations. The second return value is the signature of the resulting field.
Conductor(A) : FldAb -> RngOrdIdl, [RngIntElt]
Computes the conductor of A, i.e. the smallest ideal and the smallest set of infinite places that are necessary to define A.
Components(A) : FldAb -> [RngOrd]
    SetVerbose("ClassField", n):        Maximum: 5
Computes a list of relative extensions. One extension per cyclic factor is computed.

Example RngOrd_class-field (H53E25)

The abelian extensions of Q are well known, all of them are contained in some cyclotomic field.

We demonstrate this by computing the 12-th cyclotomic field using class fields:

Unfortunately, since Z allows no ray class groups, we must work in a degree 1 extension of Q:

> x := ext<Rationals()|>.1;
> Q := ext<Rationals()| x-1 :DoLinearExtension>;
> M := MaximalOrder(Q);
> G, m := RayClassGroup(12*M, [1]);
> G;
Abelian Group isomorphic to Z/2 + Z/2
Defined on 2 generators
Relations:
    2*G.1 = 0
    2*G.2 = 0
> A := AbelianExtension(m);
> E := EquationOrder(A);
> Ea := SimpleExtension(E);
> Ma := MaximalOrder(Ea);
> Discriminant(Ma);
144
> Factorization(Polynomial(Ma, CyclotomicPolynomial(12)));
[
    <ext<Ma|>.1 + [0, 1, 0, -1], 1>,
    <ext<Ma|>.1 + [0, -1, 0, 0], 1>,
    <ext<Ma|>.1 + [0, 1, 0, 0], 1>,
    <ext<Ma|>.1 + [0, -1, 0, 1], 1>
]
The main advantage of this method over the use of the cyclotomic polynomials is the fact that we can directly construct certain subfields:

> x := ext<Integers()|>.1;
> M := MaximalOrder(x^2-10);
> G, m := RayClassGroup(3615*M, [1,2]);
> G; m;
Abelian Group isomorphic to Z/2 + Z/2 + Z/4 + Z/80 + Z/240
Defined on 5 generators
Relations:
    4*G.1 = 0
    80*G.2 = 0
    240*G.3 = 0
    2*G.4 = 0
    2*G.5 = 0
Mapping from: GrpAb: G to Set of ideals of M
We will only compute the 5-part of this field:

> h := hom<G -> G | [5*G.i : i in [1..#Generators(G)]]>;
> Q, mq := quo<G|Image(h)>;
> mm := Inverse(mq) * m;
> mm;
Mapping from: GrpAb: Q to Set of ideals of M
> A := AbelianExtension(mm);
> E := EquationOrder(A);
> E;
non simple Equation Order defined by x^5 - [580810, 0]*x^3 +
    [24394020, -40656700]*x^2 + [15187310285, 2799504200]*x 
    + [1381891263204, 530506045900], x^5 - [580810, 0]*x^3 +
    [-109192280, 34848600]*x^2 + [30584583385, 
    16797025200]*x + [-341203571896, 109180663800] over its 
ground order
> C := Components(A);
> GaloisGroup(C[1]);
Permutation group acting on a set of cardinality 5
    (1, 2, 3, 4, 5)
[ 32, 18, 15, 11, 6 ]
Prime Ideal of M
Two element generators:
    [41, 0]
    [25, 1]
> GaloisGroup(C[2]);
Permutation group acting on a set of cardinality 5
    (1, 2, 3, 4, 5)
[ w^201693, w^22965, w^298545, w^168165, w^329685 ]
Prime Ideal of M
Two element generators:
    [13, 0]
    [6, 1]
Which proves that the Galois group is indeed C_5 x C_5.
 [Next][Prev] [Right] [Left] [Up] [Index] [Root]