Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 4183461\Chapter{Methods for number fields}23An algebraic number field is a finite-dimensional extension of the4rational numbers $\Q$. Such a number field has a primitive element5and it can be defined by the minimal polynomial of this primitive6element. Another important way to define an algebraic number field7is by a set of rational matrices which generate a number field.89%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10\Section{Creation of number fields}1112We provide functions to create number fields defined by rational13matrices or by rational polynomials.1415\> FieldByMatricesNC( <matrices> )16\> FieldByMatrices( <matrices> )1718Creates a field generated by the rational matrices <matrices>. In19the faster NC version, the function assumes that the input generates20a field and there are no checks on this performed.2122\> FieldByMatrixBasisNC( <matrices> )23\> FieldByMatrixBasis( <matrices> )2425Creates a field with basis <matrices>. The list <matrices> must consist26of rational matrices which form a basis for a number field. In the faster27NC version, the function assumes that the input is a matrix basis for a28field and no checks are performed.2930\> FieldByPolynomialNC( <polynomial> )31\> FieldByPolynomial( <polynomial> )3233Creates a field defined by <polynomial>. The polynomial <polynomial>34must be an irreducible rational polynomial. In the faster NC version,35no checks on the input are performed.3637%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38\Section{Methods for number fields}3940We outline a number of functions for number fields.4142\> PrimitiveElement( <F> )43\> DefiningPolynomial( <F> )4445Computes a primitive element and a defining polynomial for the given number46field. The defining polynomial is the minimal polynomial of the primitive47element. Since <F> contains various primitive elements,48`PrimitiveElement' tries to find a primitive element which has a49minimal polynomial with small coefficients. Via the global variable50<PRIM_TEST> the user can decide how many primitive elements will be51compared. The default value is 20.5253\> IsPrimitiveElementOfNumberField( <F>, <a> )5455Checks if the given element generates the field.5657\> DegreeOverPrimeField( <F> )5859Returns the degree of <F> over the rationals.6061\> EquationOrderBasis( <F> )62\> MaximalOrderBasis( <F> )63\> IsIntegerOfNumberField( <F>, <k> )6465These functions return bases for the equation order or the maximal order66of the number field <F>. Also, they allow to check if a given element is67an integer in the given number field.6869\> UnitGroup( <F> )7071determines the unit group of <F>.7273Recall that the unit group of <F> is a finitely generated abelian74group. The function `IsomorphismPcpGroup' from the {\Polycyclic}75\cite{Polycyclic} package gives an isomorphism to a pcp group which76can be used for various computations with the unit group.7778\> IsUnitOfNumberField( <F>, <k> )7980checks whether the element <k> is a unit in <F>.8182\> ExponentsOfUnits( <F>, <elms> )8384This function determines the exponent vectors of the elements in <elms>85with respect to the generators of the unit group of <F>. If the unit86group of <F> is not known, then the function computes this unit group also.8788\> IsCyclotomicField( <F> )8990Check whether <F> is cyclotomic.9192\> NormCosetsOfNumberField( <F>, <norm> )9394Returns a description for the set of all elements of norm <norm> in <F>.95These elements can be written as a finite union of cosets of the unit96group of <F>. The function returns coset representatives for these cosets.9798%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%99\Section{Presentations of multiplicative subgroups}100101Suppose that a finite number of102invertible elements103of a number field are given. Then these elements generate a finitely104generated abelian group. However, it is a non-trivial task to provide105a presentation for this abelian group. The most useful representation106for such groups is as pcp group.107108\> PcpPresentationOfMultiplicativeSubgroup( <F>, <elms> )109\> IsomorphismPcpGroup( <F>, <elms> )110111Determine a pcp presentation for the multiplicative group of112$<F>\backslash\{0\}$ generated by113<elms> and an isomorphism on this presentation.114Note, that the method `IsomorphismPcpGroup' is defined in the115{\Polycyclic} package \cite{Polycyclic}. We refer to the manual of this116package for further background.117118In the determination of the Pcp-presentation of a multiplicative119subgroup generated by <elms> the relations between the elements in120<elms> play an important role.121Let $elms=\{e_1,\dots,e_l\}$ be a finite subset of a field <F>.122The relation lattice for <elms> is123$$124rl(elms):=\left\{(h_1,\dots,h_l) \in \Z^l | e_1^{h_1} \cdots125e_l^{h_l} = 1\right\} .126$$127128\> RelationLattice( <F>, <elms> )129130Determines a generating set131for the relation lattice of the field elements <elms>.132133%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%134\Section{Methods to compute with subgroups of the unit group}135136\> RelationLatticeOfUnits( <F>, <elms> )137138Determines a basis for the relation lattice of the units <elms> in139triangularized form. Note that this method is more efficient than140the method `RelationLattice'.141142\> IntersectionOfUnitSubgroups( <F>, <gen1>, <gen2> )143144The lists <gen1> and <gen2> are supposed to generate two subgroups145$U_1$ and $U_2$ of the unit group of <F>. This function determines146the intersection of $U_1$ with $U_2$. The result is returned as a147list of vectors generating the lattice $\{ e \in \Z^n \mid g_1^{e_1}148\cdots g_n^{e_n} \in U_2 \}$ for <gen1> = $[g_1, \ldots, g_n]$.149150For efficiency reasons this function does not check the input and it151may return wrong results if the input generators do not fulfil the152requirements.153154155%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%156\Section{Factorisation of polynomials over a number field}157158\> FactorsPolynomialAlgExt( <F>, <pol> )159160embeds the rational polynomial <pol> into the polynomial ring over the161number field <F>, which has to be constructed by `FieldByPolynomial'162or `AlgebraicExtension', and returns the factorization of the embedded163polynomial. By default <a> denotes the primitive element of the field164one can obtain from `PrimitiveElement(<F>)', that is, a root of the165defining polynomial of <F>.166167\> FactorsPolynomialPari( <pol> )168169takes a polynomial <pol> defined over an algebraic extension of the170Rationals and factors it using PARI/GP.171172\beginexample173gap> x := Indeterminate( Rationals, "x" );;174gap> pol := 2*x^7+2*x^5+8*x^4+8*x^2;1752*x^7+2*x^5+8*x^4+8*x^2176gap> L := FieldByPolynomial( x^3-4 );177<algebraic extension over the Rationals of degree 3>178gap> y := Indeterminate( L, "y" );;179gap> FactorsPolynomialAlgExt( L, pol );180[ !2*y, y, y+(a), y^2+!1, y^2+((-1*a))*y+(a^2) ]181gap> FactorsPolynomialPari( last[5] );182[ y^2+((-1*a))*y+(a^2) ]183gap>184\endexample185186%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%187\Section{Examples}188189\> ExampleMatField( <l> )190191This function returns some examples of fields generated by matrices.192There are 9 such example fields provided and they can be obtained by193assigning the input <l> to an integer between 1 and 9. Some of the194properties of the examples are summarized in the following table.195196\beginexample197degree over Q number of generators dim. of generators198ExampleMatField(1) 4 4 4199ExampleMatField(2) 4 4 4200ExampleMatField(3) 4 4 4201ExampleMatField(4) 4 13 4202ExampleMatField(5) 4 13 4203ExampleMatField(6) 4 7 4204ExampleMatField(7) 4 18 4205ExampleMatField(8) 4 13 4206ExampleMatField(9) 4 7 4207\endexample208209210211212213214215216217