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

Introduction

The number field module in Magma is based on the Kant/Kash system (Kant-V4) [KAN97], [KAN00], developed by the group of M. Pohst in Berlin.

The three main structures which this online help node is concerned with are FldNum (number fields), RngOrd (orders in number fields) and FldOrd (fields of fractions of RngOrd's). Elements in these have types FldNumElt, RngOrdElt and FldOrdElt and ideals have types RngOrdIdl and RngOrdFracIdl. While number fields, and their sub-types cyclotomic fields and quadratic fields, are also detailed in separate chapters, (chapter NUMBER FIELDS for number fields, CYCLOTOMIC FIELDS for cyclotomics and QUADRATIC FIELDS for quadratics), almost all functionality described here applies to those objects as well.

On top of all there is a combined type that will match all "number field" types: FldAlg will match all references of type FldNum, FldOrd, FldCyc, and FldQuad (and similarly FldAlgElt will match all element types: FldNumElt, FldOrdElt, FldCycElt and FldQuadElt).

Number fields support extended types, they can be indexed by the type of the coefficient ring: FldNum[FldRat] refers to an absolute extension over Q, while FldNum[FldNum] refers to a relative extension.

In order to use them efficiently, one has to understand the relations between the parent structures.

The basic distinction is between the number field point of view (FldNum) and the order based view (FldOrd, RngOrd).

We will start with the number fields. Formally, in Magma, an object K of type FldNum is an algebraic extension of finite degree over a a number field k or Q. Thus it can be thought of as constructed as a quotient ring of a univariate polynomial ring over the base field modulo some irreducible polynomial: K = k[t]/(f(t)k[t]) Or, the field may be constructed as a multivariate quotient: K = k[s1, ..., sn]/(f1(s1), ..., fn(sn)) where all the polynomials are univariate. However, a slightly different representation is used internally.

It is important to remember that Q is not a number field.

One has to distinguish between number fields with primitive element α:= K.1 which is a zero of f and number fields where no primitive element is known. In this case αi:= K.i will be a zero of fi.

However, number fields always have a `power' basis, i.e. a basis containing only powers of the zero(s) of the defining polynomial(s) and products of those powers.

An important consequence of this representation as a quotient of a polynomial ring is that one cannot distinguish between e.g. Q[2(1/3)] and Q[ζ3 2(1/3)] -- both of them are generated using a root of t3 - 2. Therefore every non trivial extension generates a new object -- even if the same polynomial is used repeatedly, except when the user explicitly tells Magma to check whether the polynomial has been used before.

An absolute extension is always an extension of Q. An arbitrary number field K can always be converted into an isomorphic extension of Q using a constructive variant of the primitive element theorem.

Likewise, if a subfield k of K is known, an isomorphic field as an extension of k can be computed.

The most important facts about the various representations are the following:

*
Usually, arithmetic is fastest in absolute extensions. Thus, if one wants to do lots of basic arithmetic with the elements the transformation to an absolute representation is advisable. However, typically the operations are fastest when the elements are "small" in size.
*
Invariants (like Degree, Discriminant, Norm, Trace etc.) are always relative to the current representation.
*
Conversions of fields tend to be time consuming thus should be avoided if possible. However, once the different field representations are computed, the conversion of elements is not too time consuming.
*
Some operations and invariants can (currently) only be done for absolute representations. Essentially, these are computations involving subfields and class and unit group computations.

Number fields support only arithmetic with their elements and the computation of some invariants (GaloisGroup, Subfields, AutomorphismGroup). Although invariants like the class group can be computed for FldNums this is only a shortcut for the corresponding computations for the maximal orders so e.g. ClassGroup(K) is expanded to ClassGroup(MaximalOrder(K)).

The other parent data-types are orders (RngOrd) and their fields of fractions (FldOrd). Orders can be constructed in basically two ways:

*
as finite extensions E of a (maximal) order m (or of Z) by a zero of a monic integral polynomial f∈m[t]
*
via a transformation from a different order.

The main restriction for the construction of orders is that the coefficient domain (BaseRing) must always be a maximal order if any structural computations are desired. An order O over some maximal order m is represented using a (pseudo) m-basis (of type PMat similar to the way modules over Dedekind rings ( ModDed, PMat) are represented in general. Every other order must be free over its base ring.

An order O is equipped with a unique field of fractions, FieldOfFractions(O), which has the same basis as the order and whose base field is the field of fractions of the base ring. The fields of fractions support almost no structural computations, they merely serve as a parent structure to any elements and ideals that (may) have denominators (i.e. that are non-integral w.r.t. the current structure).

From a practical point of view, orders and their field of fractions have two different element data types, namely elements (RngOrdElt) and ideals (RngOrdIdl) (resp. FldOrdElt and RngOrdFracIdl). This is technically not quite correct since ideals have formally different parents but those parents are trivial and the important information in them is the order the ideal is of. Ideals behave much more like elements than structures -- they have no elements and are not rings in general. Formally, the parent structures obey the following rules:

*
MaximalOrder(BaseRing(K)) eq BaseRing(MaximalOrder(K)) for all number fields and fields of fractions K.
*
BaseField(FieldOfFractions(O)) eq FieldOfFractions(BaseRing(O)) for all orders O.
*
BaseField(NumberField(O)) eq NumberField(BaseRing(O)) for all orders O.
*
all orders within the same field share the identical number field. For example: IsIdentical(NumberField(O), NumberField(MaximalOrder(O))), while the corresponding fields of fractions will have, in general, different bases.

There are a few functions where orders behave differently to most other Magma objects, mostly because orders are not necessarily free modules over their base ring:

*
Parent(O.i) eq FieldOfFractions(O) and furthermore O.i in O is usually false.
*
Eltseq of an order element returns a sequence over the field of fractions of the base ring.
*
The O.i are typically not a basis of the order -- just part of a pseudo basis. However, they always form a basis of the field of fractions.

Algebraic number fields will be referred to as number fields. If a field may be either a number field or field of fractions it will be referred to as an algebraic field.
 [Next][Prev] [Right] [____] [Up] [Index] [Root]

Version: V2.19 of Wed Apr 24 15:09:57 EST 2013