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.
This chapter deals only with the basic operations possible with number fields (objects of type FldNum) and their elements FldNumElt. Apart from material covered here, there is a wealth of other functions implemented and documented in detail in chapters dealing with
Number fields in Magma are finite extensions of the field Q of rational numbers or of another number field. Number fields of the first kind, ie. number fields that are created as extensions of Q are referred to as absolute fields, while extensions of number fields are called relative fields.
Number fields support extended types (Section Types, Category Names, and Structures), 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.
Formally, in Magma, an object K of type FldNum is an algebraic extension of finite degree over a number field k or Q. It should 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.
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. This also implies that number fields are not automatically embedded into C the field of complex numbers, in contrast to both quadratic and cyclotomic fields that are. Using Conjugates or the language of places in section Places and Divisors all embeddings into C or R can be found and used.
It is important to remember that Q is not a number field. However, it is possible to create an extension of degree 1 over Q that is a number field using, for example
One has to distinguish between number fields with a (known) 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.
Number fields always have a `power' basis, i.e. a basis containing only powers of the zero(s) of the defining polynomial(s) and product of those powers. This allows for example to define homomorphisms from number fields by specifying images of the generators only.
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, AbsoluteField. Similarly, a number field defined by multiple polynomials can be converted into a field defined by a single polynomial using SimpleExtension.
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 different representations are the following:
> K := ext<Rationals()|Polynomial([0,1]):DoLinearExtension>;