CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

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

Views: 418346
1
2
\Chapter{Methods for number fields}
3
4
An algebraic number field is a finite-dimensional extension of the
5
rational numbers $\Q$. Such a number field has a primitive element
6
and it can be defined by the minimal polynomial of this primitive
7
element. Another important way to define an algebraic number field
8
is by a set of rational matrices which generate a number field.
9
10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
\Section{Creation of number fields}
12
13
We provide functions to create number fields defined by rational
14
matrices or by rational polynomials.
15
16
\> FieldByMatricesNC( <matrices> )
17
\> FieldByMatrices( <matrices> )
18
19
Creates a field generated by the rational matrices <matrices>. In
20
the faster NC version, the function assumes that the input generates
21
a field and there are no checks on this performed.
22
23
\> FieldByMatrixBasisNC( <matrices> )
24
\> FieldByMatrixBasis( <matrices> )
25
26
Creates a field with basis <matrices>. The list <matrices> must consist
27
of rational matrices which form a basis for a number field. In the faster
28
NC version, the function assumes that the input is a matrix basis for a
29
field and no checks are performed.
30
31
\> FieldByPolynomialNC( <polynomial> )
32
\> FieldByPolynomial( <polynomial> )
33
34
Creates a field defined by <polynomial>. The polynomial <polynomial>
35
must be an irreducible rational polynomial. In the faster NC version,
36
no checks on the input are performed.
37
38
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
39
\Section{Methods for number fields}
40
41
We outline a number of functions for number fields.
42
43
\> PrimitiveElement( <F> )
44
\> DefiningPolynomial( <F> )
45
46
Computes a primitive element and a defining polynomial for the given number
47
field. The defining polynomial is the minimal polynomial of the primitive
48
element. Since <F> contains various primitive elements,
49
`PrimitiveElement' tries to find a primitive element which has a
50
minimal polynomial with small coefficients. Via the global variable
51
<PRIM_TEST> the user can decide how many primitive elements will be
52
compared. The default value is 20.
53
54
\> IsPrimitiveElementOfNumberField( <F>, <a> )
55
56
Checks if the given element generates the field.
57
58
\> DegreeOverPrimeField( <F> )
59
60
Returns the degree of <F> over the rationals.
61
62
\> EquationOrderBasis( <F> )
63
\> MaximalOrderBasis( <F> )
64
\> IsIntegerOfNumberField( <F>, <k> )
65
66
These functions return bases for the equation order or the maximal order
67
of the number field <F>. Also, they allow to check if a given element is
68
an integer in the given number field.
69
70
\> UnitGroup( <F> )
71
72
determines the unit group of <F>.
73
74
Recall that the unit group of <F> is a finitely generated abelian
75
group. The function `IsomorphismPcpGroup' from the {\Polycyclic}
76
\cite{Polycyclic} package gives an isomorphism to a pcp group which
77
can be used for various computations with the unit group.
78
79
\> IsUnitOfNumberField( <F>, <k> )
80
81
checks whether the element <k> is a unit in <F>.
82
83
\> ExponentsOfUnits( <F>, <elms> )
84
85
This function determines the exponent vectors of the elements in <elms>
86
with respect to the generators of the unit group of <F>. If the unit
87
group of <F> is not known, then the function computes this unit group also.
88
89
\> IsCyclotomicField( <F> )
90
91
Check whether <F> is cyclotomic.
92
93
\> NormCosetsOfNumberField( <F>, <norm> )
94
95
Returns a description for the set of all elements of norm <norm> in <F>.
96
These elements can be written as a finite union of cosets of the unit
97
group of <F>. The function returns coset representatives for these cosets.
98
99
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
100
\Section{Presentations of multiplicative subgroups}
101
102
Suppose that a finite number of
103
invertible elements
104
of a number field are given. Then these elements generate a finitely
105
generated abelian group. However, it is a non-trivial task to provide
106
a presentation for this abelian group. The most useful representation
107
for such groups is as pcp group.
108
109
\> PcpPresentationOfMultiplicativeSubgroup( <F>, <elms> )
110
\> IsomorphismPcpGroup( <F>, <elms> )
111
112
Determine a pcp presentation for the multiplicative group of
113
$<F>\backslash\{0\}$ generated by
114
<elms> and an isomorphism on this presentation.
115
Note, that the method `IsomorphismPcpGroup' is defined in the
116
{\Polycyclic} package \cite{Polycyclic}. We refer to the manual of this
117
package for further background.
118
119
In the determination of the Pcp-presentation of a multiplicative
120
subgroup generated by <elms> the relations between the elements in
121
<elms> play an important role.
122
Let $elms=\{e_1,\dots,e_l\}$ be a finite subset of a field <F>.
123
The relation lattice for <elms> is
124
$$
125
rl(elms):=\left\{(h_1,\dots,h_l) \in \Z^l | e_1^{h_1} \cdots
126
e_l^{h_l} = 1\right\} .
127
$$
128
129
\> RelationLattice( <F>, <elms> )
130
131
Determines a generating set
132
for the relation lattice of the field elements <elms>.
133
134
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
135
\Section{Methods to compute with subgroups of the unit group}
136
137
\> RelationLatticeOfUnits( <F>, <elms> )
138
139
Determines a basis for the relation lattice of the units <elms> in
140
triangularized form. Note that this method is more efficient than
141
the method `RelationLattice'.
142
143
\> IntersectionOfUnitSubgroups( <F>, <gen1>, <gen2> )
144
145
The lists <gen1> and <gen2> are supposed to generate two subgroups
146
$U_1$ and $U_2$ of the unit group of <F>. This function determines
147
the intersection of $U_1$ with $U_2$. The result is returned as a
148
list of vectors generating the lattice $\{ e \in \Z^n \mid g_1^{e_1}
149
\cdots g_n^{e_n} \in U_2 \}$ for <gen1> = $[g_1, \ldots, g_n]$.
150
151
For efficiency reasons this function does not check the input and it
152
may return wrong results if the input generators do not fulfil the
153
requirements.
154
155
156
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
157
\Section{Factorisation of polynomials over a number field}
158
159
\> FactorsPolynomialAlgExt( <F>, <pol> )
160
161
embeds the rational polynomial <pol> into the polynomial ring over the
162
number field <F>, which has to be constructed by `FieldByPolynomial'
163
or `AlgebraicExtension', and returns the factorization of the embedded
164
polynomial. By default <a> denotes the primitive element of the field
165
one can obtain from `PrimitiveElement(<F>)', that is, a root of the
166
defining polynomial of <F>.
167
168
\> FactorsPolynomialPari( <pol> )
169
170
takes a polynomial <pol> defined over an algebraic extension of the
171
Rationals and factors it using PARI/GP.
172
173
\beginexample
174
gap> x := Indeterminate( Rationals, "x" );;
175
gap> pol := 2*x^7+2*x^5+8*x^4+8*x^2;
176
2*x^7+2*x^5+8*x^4+8*x^2
177
gap> L := FieldByPolynomial( x^3-4 );
178
<algebraic extension over the Rationals of degree 3>
179
gap> y := Indeterminate( L, "y" );;
180
gap> FactorsPolynomialAlgExt( L, pol );
181
[ !2*y, y, y+(a), y^2+!1, y^2+((-1*a))*y+(a^2) ]
182
gap> FactorsPolynomialPari( last[5] );
183
[ y^2+((-1*a))*y+(a^2) ]
184
gap>
185
\endexample
186
187
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
188
\Section{Examples}
189
190
\> ExampleMatField( <l> )
191
192
This function returns some examples of fields generated by matrices.
193
There are 9 such example fields provided and they can be obtained by
194
assigning the input <l> to an integer between 1 and 9. Some of the
195
properties of the examples are summarized in the following table.
196
197
\beginexample
198
degree over Q number of generators dim. of generators
199
ExampleMatField(1) 4 4 4
200
ExampleMatField(2) 4 4 4
201
ExampleMatField(3) 4 4 4
202
ExampleMatField(4) 4 13 4
203
ExampleMatField(5) 4 13 4
204
ExampleMatField(6) 4 7 4
205
ExampleMatField(7) 4 18 4
206
ExampleMatField(8) 4 13 4
207
ExampleMatField(9) 4 7 4
208
\endexample
209
210
211
212
213
214
215
216
217