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

Introduction

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

There are three main structures which this online help node is concerned with. They are (FldNum, FldOrd, RngOrd). In addition to them, 5 element types (FldNumElt, FldOrdElt, RngOrdElt, RngOrdFracIdl, RngOrdIdl) will be discussed. 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 a finite field extension of a number field k or Q constructed as a quotient ring of the 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[s_1, ..., s_n]/(f_1(s_1), ..., f_n(s_n)) 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 alpha:= K.1 which is a zero of f and number fields where no primitive element is known. In this case alpha_i:= K.i will be a zero of f_i.

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

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[zeta_3 2^((1/3))] -- both of them are generated using a root of t^3 - 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 conversions of elements is not too time consuming.
*
Some operations and invariants can (currently) only be done for absolute representations. Essentially, these are computations involving the real and complex embeddings and subfields. In particular, this includes 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 in m[t]
*
as the maximal order M of an order or a number field.

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 the same way as the ModDed. 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.

There are a few things in which orders behave differently from most other Magma objects, all of them 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]