An algebraic number field is a finite-dimensional extension of the rational numbers Q. Such a number field has a primitive element and it can be defined by the minimal polynomial of this primitive element. Another important way to define an algebraic number field is by a set of rational matrices which generate a number field.
SectionCreation of number fields
We provide functions to create number fields defined by rational matrices or by rational polynomials.
FieldByMatricesNC( matrices )
FieldByMatrices( matrices )
Creates a field generated by the rational matrices matrices. In the faster NC version, the function assumes that the input generates a field and there are no checks on this performed.
FieldByMatrixBasisNC( matrices )
FieldByMatrixBasis( matrices )
Creates a field with basis matrices. The list matrices must consist of rational matrices which form a basis for a number field. In the faster NC version, the function assumes that the input is a matrix basis for a field and no checks are performed.
FieldByPolynomialNC( polynomial )
FieldByPolynomial( polynomial )
Creates a field defined by polynomial. The polynomial polynomial must be an irreducible rational polynomial. In the faster NC version, no checks on the input are performed.
SectionMethods for number fields
We outline a number of functions for number fields.
PrimitiveElement( F )
DefiningPolynomial( F )
Computes a primitive element and a defining polynomial for the given number
field. The defining polynomial is the minimal polynomial of the primitive
element. Since F contains various primitive elements,
PrimitiveElement tries to find a primitive element which has a
minimal polynomial with small coefficients. Via the global variable
PRIM_TEST the user can decide how many primitive elements will be
compared. The default value is 20.
IsPrimitiveElement( F, a )
Checks if the given element generates the field.
DegreeOverPrimeField( F )
Returns the degree of F over the rationals.
EquationOrderBasis( F )
MaximalOrderBasis( F )
IsIntegerOfNumberField( F, k )
These functions return bases for the equation order or the maximal order of the number field F. Also, they allow to check if a given element is an integer in the given number field.
UnitGroup( F )
IsomorphismPcpGroup( U )
IsUnitOfNumberField( F, k )
These functions determine the unit group of F and an isomorphism to a pcp group. (Recall that the unit group of F is a finitely generated abelian group.) The isomorphism can be used for various computations with the unit group. Also, the last function allows to check whether a given element is a unit in F.
ExponentsOfUnits( F, elms )
This function determines the exponent vectors of the elements in elms with respect to the generators of the unit group of F. If the unit group of F is not known, then the function computes this unit group also.
IsCyclotomicField( F )
Check whether F is cyclotomic.
NormCosetsOfNumberField( F, norm )
Returns a description for the set of all elements of norm norm in F. These elements can be written as a finite union of cosets of the unit group of F. The function returns coset representatives for these cosets.
SectionPresentations of multiplicative subgroups labelsection_present
In this section we provide only few functions, but these comes with a number of useful utilities. Suppose that a finite number of invertible elements of a number field are given. Then these elements generate a finitely generated abelian group. However, it is a non-trivial task to provide a presentation for this abelian group. The most useful representation for such groups is as pcp group.
PcpPresentationOfMultiplicativeSubgroup( F, elms )
IsomorphismPcpGroup( F, elms )
Determine a pcp presentation for the multiplicative group of Fbackslash{0} generated by elms and an isomorphism on this presentation.
Kernel( map )
ImagesSet( map, fieldelms )
ImageElm( map, fieldelm )
PreImagesRepresentative( map, pcpelm )
These functions can be used to compute with an isomorphism to a pcp presented image. If fieldelm is not contained in the source of map, then the function ttImageElm returns fail.
In the determination of the Pcp-presentation of a multiplicative subgroup generated by elms the relations between the elements in elms play an important role. Let elms={e1,...,el} be a finte subset of a field F. The relation lattice for elms is
rl(elms):=left{(h1,...,hl) inZl | e1h_1 cdots elh_l = 1right} .
RelationLattice( F, elms )
Determines the relation lattice of the field elements elms.
SectionMethods to compute with subgroups of the unit group
RelationLatticeOfUnits( F, elms )
Determines the relation lattice of the units elms in triangulized form.
IntersectionOfTFUnitSubgroups( F, gen1, gen2 )
The lists gen1 and gen2 generate two subgroups of the unit group of F and the subgroup generated by gen1 is supposed to be torsion free. This function determines the intersection of gen1 with gen2. The result is returned as exponent vectors in gen1.
IntersectionOfTFUnitsByCosets( F, elms, C )
The list elms generates a torsion free subgroup of the unit group of F. The list C is a list of coset representatives. This function determines an element of the intersection of C with elms and the intersection of the units of C with elms.
Section Examples
ExamUnimod( n )
ExamRationals ( n )
Lists of suitable matrices for the generation of a field can be found
via these functions
where n is an integer between one and four. ExamUnimod
contains matrices with integer entries, while ExamRationals
encloses matrice with rational entries. Elements of these lists can be
used to calculate Pcp-presentations of mulitplicative subgroups via
the function
PcpPresentationOfMultiplicativeSubgroup( F, elms ).
ExamFields( l )
Returns some example fields where l is an integer
between one and eight. . They are generated
by sublists of the matrices in ExamUnimod.