|
[Next][Prev] [Right] [____] [Up] [Index] [Root]
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, FldOrdElt)
and ideals have types (RngOrdIdl, 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 fraction 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]
|