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:
The other parent data-types are orders (RngOrd) and their fields of fractions (FldOrd). Orders can be constructed in basically two ways:
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: