- Creation of number fields
- Methods for number fields
- Presentations of multiplicative subgroups
- Methods to compute with subgroups of the unit group
- Factorisation of polynomials over a number field
- Examples

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.

We provide functions to create number fields defined by rational matrices or by rational polynomials.

`FieldByMatricesNC( `

` )`

`FieldByMatrices( `

` )`

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( `

` )`

`FieldByMatrixBasis( `

` )`

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( `

` )`

`FieldByPolynomial( `

` )`

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.

We outline a number of functions for number fields.

`PrimitiveElement( `

` )`

`DefiningPolynomial( `

` )`

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.

`IsPrimitiveElementOfNumberField( `

`, `

` )`

Checks if the given element generates the field.

`DegreeOverPrimeField( `

` )`

Returns the degree of `F` over the rationals.

`EquationOrderBasis( `

` )`

`MaximalOrderBasis( `

` )`

`IsIntegerOfNumberField( `

`, `

` )`

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( `

` )`

determines the unit group of `F`.

Recall that the unit group of `F` is a finitely generated abelian
group. The function `IsomorphismPcpGroup`

from the Polycyclic
Polycyclic package gives an isomorphism to a pcp group which
can be used for various computations with the unit group.

`IsUnitOfNumberField( `

`, `

` )`

checks whether the element `k` is a unit in `F`.

`ExponentsOfUnits( `

`, `

` )`

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( `

` )`

Check whether `F` is cyclotomic.

`NormCosetsOfNumberField( `

`, `

` )`

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.

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( `

`, `

` )`

`IsomorphismPcpGroup( `

`, `

` )`

Determine a pcp presentation for the multiplicative group of
` Fbackslash{0}` generated by

`IsomorphismPcpGroup`

is defined in the
Polycyclic package Polycyclic. We refer to the manual of this
package for further background.
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={e _{1},...,e_{l}}` be a finite subset of a field

`
rl(elms):=left{(h _{1},...,h_{l}) inZ^{l} | e_{1}^{h_1} cdots
e_{l}^{h_l} = 1right} .
`

`RelationLattice( `

`, `

` )`

Determines a generating set
for the relation lattice of the field elements `elms`.

`RelationLatticeOfUnits( `

`, `

` )`

Determines a basis for the relation lattice of the units `elms` in
triangularized form. Note that this method is more efficient than
the method `RelationLattice`

.

`IntersectionOfUnitSubgroups( `

`, `

`, `

` )`

The lists `gen1` and `gen2` are supposed to generate two subgroups
`U _{1}` and

For efficiency reasons this function does not check the input and it may return wrong results if the input generators do not fulfil the requirements.

`FactorsPolynomialAlgExt( `

`, `

` )`

embeds the rational polynomial `pol` into the polynomial ring over the
number field `F`, which has to be constructed by `FieldByPolynomial`

or `AlgebraicExtension`

, and returns the factorization of the embedded
polynomial. By default `a` denotes the primitive element of the field
one can obtain from `PrimitiveElement(`

`F``)`

, that is, a root of the
defining polynomial of `F`.

`FactorsPolynomialPari( `

` )`

takes a polynomial `pol` defined over an algebraic extension of the
Rationals and factors it using PARI/GP.

gap> x := Indeterminate( Rationals, "x" );; gap> pol := 2*x^7+2*x^5+8*x^4+8*x^2; 2*x^7+2*x^5+8*x^4+8*x^2 gap> L := FieldByPolynomial( x^3-4 ); <algebraic extension over the Rationals of degree 3> gap> y := Indeterminate( L, "y" );; gap> FactorsPolynomialAlgExt( L, pol ); [ !2*y, y, y+(a), y^2+!1, y^2+((-1*a))*y+(a^2) ] gap> FactorsPolynomialPari( last[5] ); [ y^2+((-1*a))*y+(a^2) ] gap>

`ExampleMatField( `

` )`

This function returns some examples of fields generated by matrices.
There are 9 such example fields provided and they can be obtained by
assigning the input `l` to an integer between 1 and 9. Some of the
properties of the examples are summarized in the following table.

degree over Q number of generators dim. of generators ExampleMatField(1) 4 4 4 ExampleMatField(2) 4 4 4 ExampleMatField(3) 4 4 4 ExampleMatField(4) 4 13 4 ExampleMatField(5) 4 13 4 ExampleMatField(6) 4 7 4 ExampleMatField(7) 4 18 4 ExampleMatField(8) 4 13 4 ExampleMatField(9) 4 7 4

[Up] [Previous] [Next] [Index]

Alnuth manual

December 2017