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:
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: