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

Ideal Class Groups

This section describes the functions related to finding class groups and class numbers for (the maximal order O of) an absolute number field.

The method employed is the relation method ([Heß96], [Coh93]), basically consisting of the following steps. In the first step a list of prime ideals of norm below a given bound is generated, the factor basis. In the second step a search is conducted to find in each of the prime ideals a few elements for which the principal ideals they generate factor completely over the factor basis. Using these relations, a generating set for the ideal class group is derived (via matrix echelonization), and in the final step it is verified that the correct orders for the generators have been found.

To determine the class group or class number correctly one has to make sure that all ideals having norm smaller than the Minkowski bound or smaller than the Bach bound, if one assumes the generalized Riemann hypothesis, are taken into consideration, and that the final stage, which may be time consuming, is properly executed. Optional arguments allow the user to override these, but correctness of such results can not be guaranteed.

Once a class group computation has been completed, the results are stored with the order.

All functions mentioned in this section support the verbose flag ClassGroup up to a maximum value of 5.

Ideals in Magma are discussed in Ideals and Quotients.

DegreeOnePrimeIdeals(O, B) : RngOrd, RngIntElt -> [ RngOrdIdl ]
Given an order O as well as a positive integer bound B, return a sequence consisting of all prime ideals in O whose norm is a rational prime not exceeding the bound B.
ClassGroup(O: parameters) : RngOrd -> GrpAb, Map
ClassGroup(K: parameters) : FldNum -> GrpAb, Map
    Bound: RngIntElt                    Default: MinkowskiBound
    Proof: MonStgElt                    Default: "Full"
    SetVerbose("ClassGroup", n):        Maximum: 5
The group of ideal classes for the ring of integers O of the number field K is returned as an abelian group, together with a map from this abstract group to O.

With the default values for the optional parameters the Minkowski bound is used and the last step of the algorithm verifies correctness (see the explanation above), hence a fully proven result is returned.

If Bound is set to some positive integer M, M is used instead of the Minkowski bound. The validity of the result still depends on the "Proof" parameter.

If Proof := "GRH", everything remains as in the default case except that a bound based on the GRH is used to replace the Minkowski bound. This bound may be enlarged setting the "Bound" parameter accordingly. The result will hence be correct under the GRH.

If Proof := "Bound", the computation stops if an independent set of relations between the prime ideals below the chosen bound is found. The relations may not be maximal.

If Proof := "Subgroup", a maximal subset of the relations is constructed. In terms of the result, this means that the group returned will be a subgroup of the class group (i.e. the list of prime ideals considered may be to small).

If Proof := "Full" (the default) a guaranteed result is computed. This is equivalent to Bound := MinkowskiBound(K) and Proof := "Subgroup".

If only Bound is given, the Proof defaults to "Subgroup".

Finally, giving Proof := "Current" is the same as repeating the last call to ClassGroup(), but without the need to explicitly restate the value of Proof or Bound. If there was no prior call to ClassGroup, a fully proven computation will be carried out.

ConditionalClassGroup(O) : RngOrd -> GrpAb, Map
ConditionalClassGroup(K) : FldNum -> GrpAb, Map
The class group of O assuming the generalized Riemann hypothesis.
ClassNumber(O: parameters) : RngOrd -> RngIntElt
ClassNumber(K: parameters) : FldNum -> RngIntElt
    Bound: RngIntElt                    Default: MinkowskiBound
    Proof: MonStgElt                    Default: "Full"
    SetVerbose("ClassGroup", n):        Maximum: 5
Return the class number of the ring of integers O of a number field K. The options for the parameters are the same as for ClassGroup.
BachBound(K) : FldNum -> RngIntElt
BachBound(O) : RngOrd -> RngIntElt
An integral upper bound for norms of generators of the ideal class group for K or O assuming the generalized Riemann hypothesis. O must be a maximal order.
MinkowskiBound(K) : FldNum -> RngIntElt
MinkowskiBound(O) : RngOrd -> RngIntElt
An unconditional integral upper bound for norms of the generators of the ideal class group for K. O must be a maximal order.
FactorBasis(K, B) : FldNum, RngIntElt -> [ RngOrdIdl ]
FactorBasis(O, B) : RngOrd, RngIntElt -> [ RngOrdIdl ]
Given the maximal order O, or a number field K with maximal order O, this function returns a sequence of prime ideals of norm less than a given bound B.
FactorBasis(O) : RngOrd -> [ RngOrdIdl ], Integer
Given the maximal order O where the class group has previously been computed, this function returns a sequence of prime ideals that have been used as factor basis for the class group computation. In addition the used upper bound for the factor basis is returned. This bound can be different from the bound passed in using the Bound := bound parameter.
RelationMatrix(K, B) : FldNum, RngIntElt -> ModHomElt
RelationMatrix(O, B) : RngOrd, RngIntElt -> ModHomElt
Given a maximal order O, or a number field K with maximal order O, generate relations for each prime ideal in the factor basis for O with bound B on the norms of the ideals. The relations are given by rows in a matrix. If at some stage the relations generate the trivial group, no more relations are generated.
RelationMatrix(O) : RngOrd -> ModHomElt
Given a maximal order O where the class group has been computed previously, the resulting relation matrix is returned.
Relations(O) : RngOrd -> ModHomElt
Given a maximal order O where the class group has been computed previously, the vector containing the order elements used to compute the class group is returned.
ClassGroupCyclicFactorGenerators(O) : RngOrd -> ModHomElt
Let a_i be the generators for the cyclic factors of the class group of O. This function returns generators for a_i^(c_i) where c_i is the order of a_i in the class group.

Example RngOrd_ClassGroup (H53E18)

We give an example of a class group calculation, illustrating some of the functions.

> R<x> := PolynomialRing(Integers());
> O := MaximalOrder(x^2-10);
> C, m := ClassGroup(O);
> C;
Abelian Group isomorphic to Z/2
Defined on 1 generator
Relations:
    2*C.1 = 0
> m(C.1);    
Prime Ideal of O
Two element generators:
    [2, 0]
    [0, 1]
> MinkowskiBound(O);
3
> F, B := FactorBasis(O);
> B;
33
Even though the MinkowskiBound is only 3, we take 33 as the bound. The reason for this behaviour is that the factor base has to have at least some elements (about 20) if it is non-empty. Otherwise the search for relations is hopeless.

> r := Relations(O);
> M := RelationMatrix(O);
> [ Valuation(r[1][1], x) : x in F];
[ 0, 0, 0, 0, 0, 1, 1, 0 ]
> M[1];
(0 0 0 0 0 1 1 0)
As one can see, the RelationMatrix basically stores the valuation of the elements of Relations at the prime ideal contained in FactorBasis.

> f,g := IsPrincipal(m(C.1)^2);
> f;
true
> g;
[2, 0]
> ClassGroupCyclicFactorGenerators(O);                                         
[
    [2, 0]
]

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