This file is indexed.

/usr/share/gap/doc/ref/chap58.html is in gap-doc 4r7p5-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GAP (ref) - Chapter 58: Fields and Division Rings</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chap58"  onload="jscontent()">


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chap13.html">13</a>  <a href="chap14.html">14</a>  <a href="chap15.html">15</a>  <a href="chap16.html">16</a>  <a href="chap17.html">17</a>  <a href="chap18.html">18</a>  <a href="chap19.html">19</a>  <a href="chap20.html">20</a>  <a href="chap21.html">21</a>  <a href="chap22.html">22</a>  <a href="chap23.html">23</a>  <a href="chap24.html">24</a>  <a href="chap25.html">25</a>  <a href="chap26.html">26</a>  <a href="chap27.html">27</a>  <a href="chap28.html">28</a>  <a href="chap29.html">29</a>  <a href="chap30.html">30</a>  <a href="chap31.html">31</a>  <a href="chap32.html">32</a>  <a href="chap33.html">33</a>  <a href="chap34.html">34</a>  <a href="chap35.html">35</a>  <a href="chap36.html">36</a>  <a href="chap37.html">37</a>  <a href="chap38.html">38</a>  <a href="chap39.html">39</a>  <a href="chap40.html">40</a>  <a href="chap41.html">41</a>  <a href="chap42.html">42</a>  <a href="chap43.html">43</a>  <a href="chap44.html">44</a>  <a href="chap45.html">45</a>  <a href="chap46.html">46</a>  <a href="chap47.html">47</a>  <a href="chap48.html">48</a>  <a href="chap49.html">49</a>  <a href="chap50.html">50</a>  <a href="chap51.html">51</a>  <a href="chap52.html">52</a>  <a href="chap53.html">53</a>  <a href="chap54.html">54</a>  <a href="chap55.html">55</a>  <a href="chap56.html">56</a>  <a href="chap57.html">57</a>  <a href="chap58.html">58</a>  <a href="chap59.html">59</a>  <a href="chap60.html">60</a>  <a href="chap61.html">61</a>  <a href="chap62.html">62</a>  <a href="chap63.html">63</a>  <a href="chap64.html">64</a>  <a href="chap65.html">65</a>  <a href="chap66.html">66</a>  <a href="chap67.html">67</a>  <a href="chap68.html">68</a>  <a href="chap69.html">69</a>  <a href="chap70.html">70</a>  <a href="chap71.html">71</a>  <a href="chap72.html">72</a>  <a href="chap73.html">73</a>  <a href="chap74.html">74</a>  <a href="chap75.html">75</a>  <a href="chap76.html">76</a>  <a href="chap77.html">77</a>  <a href="chap78.html">78</a>  <a href="chap79.html">79</a>  <a href="chap80.html">80</a>  <a href="chap81.html">81</a>  <a href="chap82.html">82</a>  <a href="chap83.html">83</a>  <a href="chap84.html">84</a>  <a href="chap85.html">85</a>  <a href="chap86.html">86</a>  <a href="chap87.html">87</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop">&nbsp;<a href="chap0.html">[Top of Book]</a>&nbsp;  <a href="chap0.html#contents">[Contents]</a>&nbsp;  &nbsp;<a href="chap57.html">[Previous Chapter]</a>&nbsp;  &nbsp;<a href="chap59.html">[Next Chapter]</a>&nbsp;  </div>

<p id="mathjaxlink" class="pcenter"><a href="chap58_mj.html">[MathJax on]</a></p>
<p><a id="X80A8E676814A19FD" name="X80A8E676814A19FD"></a></p>
<div class="ChapSects"><a href="chap58.html#X80A8E676814A19FD">58 <span class="Heading">Fields and Division Rings</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap58.html#X82B74B458705B3CE">58.1 <span class="Heading">Generating Fields</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7F2CAA9E7A16913D">58.1-1 IsDivisionRing</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7A5AE30E7C0F457C">58.1-2 IsField</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X871AA7D58263E9AC">58.1-3 Field</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7D9F7FD4786691EE">58.1-4 DefaultField</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7C298A40852C2AFF">58.1-5 DefaultFieldByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7EF624958648D0FA">58.1-6 GeneratorsOfDivisionRing</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7AA715317A81261B">58.1-7 GeneratorsOfField</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X8641861A8550F8BE">58.1-8 DivisionRingByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7C193B7D7AFB29BE">58.1-9 AsDivisionRing</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap58.html#X7C53566A839B57F6">58.2 <span class="Heading">Subfields of Fields</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7FE1FA217A08DCE5">58.2-1 Subfield</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X82A0E79A7B9799E0">58.2-2 FieldOverItselfByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X86DB31B57FB4F570">58.2-3 PrimitiveElement</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7DD27F927BD57FDE">58.2-4 PrimeField</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X84B6F1E67AD0E33D">58.2-5 IsPrimeField</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7845CECE86A83219">58.2-6 DegreeOverPrimeField</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7ADDCBF47E2ED3D4">58.2-7 DefiningPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X8173DA4982DB1E8A">58.2-8 RootOfDefiningPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X82718B3B818DC699">58.2-9 FieldExtension</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X83490C65819D85FE">58.2-10 Subfields</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss">&nbsp;</span><a href="chap58.html#X7D9A02B07D08FA40">58.3 <span class="Heading">Galois Action</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X80CAA5BA82F09ED2">58.3-1 GaloisGroup</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X8738C6687D784BB5">58.3-2 MinimalPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X80FE7E017C2D255C">58.3-3 TracePolynomial</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X838515278587FF01">58.3-4 Norm</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X7DD17EB581200AD6">58.3-5 <span class="Heading">Traces of field elements and matrices</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X837A4A5781F8EE92">58.3-6 Conjugates</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap58.html#X8236A8B47E6AAD93">58.3-7 NormalBase</a></span>
</div></div>
</div>

<h3>58 <span class="Heading">Fields and Division Rings</span></h3>

<p>A <em>division ring</em> is a ring (see Chapter <a href="chap56.html#X81897F6082CACB59"><span class="RefLink">56</span></a>) in which every non-zero element has an inverse. The most important class of division rings are the commutative ones, which are called <em>fields</em>.</p>

<p><strong class="pkg">GAP</strong> supports finite fields (see Chapter <a href="chap59.html#X7893ABF67A028802"><span class="RefLink">59</span></a>) and abelian number fields (see Chapter <a href="chap60.html#X80510B5880521FDC"><span class="RefLink">60</span></a>), in particular the field of rationals (see Chapter <a href="chap17.html#X87003045878E74DF"><span class="RefLink">17</span></a>).</p>

<p>This chapter describes the general <strong class="pkg">GAP</strong> functions for fields and division rings.</p>

<p>If a field <var class="Arg">F</var> is a subfield of a commutative ring <var class="Arg">C</var>, <var class="Arg">C</var> can be considered as a vector space over the (left) acting domain <var class="Arg">F</var> (see Chapter <a href="chap61.html#X7DAD6700787EC845"><span class="RefLink">61</span></a>). In this situation, we call <var class="Arg">F</var> the <em>field of definition</em> of <var class="Arg">C</var>.</p>

<p>Each field in <strong class="pkg">GAP</strong> is represented as a vector space over a subfield (see <code class="func">IsField</code> (<a href="chap58.html#X7A5AE30E7C0F457C"><span class="RefLink">58.1-2</span></a>)), thus each field is in fact a field extension in a natural way, which is used by functions such as <code class="func">Norm</code> (<a href="chap58.html#X838515278587FF01"><span class="RefLink">58.3-4</span></a>) and <code class="func">Trace</code> (<a href="chap58.html#X7DD17EB581200AD6"><span class="RefLink">58.3-5</span></a>) (see <a href="chap58.html#X7D9A02B07D08FA40"><span class="RefLink">58.3</span></a>).</p>

<p><a id="X82B74B458705B3CE" name="X82B74B458705B3CE"></a></p>

<h4>58.1 <span class="Heading">Generating Fields</span></h4>

<p><a id="X7F2CAA9E7A16913D" name="X7F2CAA9E7A16913D"></a></p>

<h5>58.1-1 IsDivisionRing</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsDivisionRing</code>( <var class="Arg">D</var> )</td><td class="tdright">( category )</td></tr></table></div>
<p>A <em>division ring</em> in <strong class="pkg">GAP</strong> is a nontrivial associative algebra <var class="Arg">D</var> with a multiplicative inverse for each nonzero element. In <strong class="pkg">GAP</strong> every division ring is a vector space over a division ring (possibly over itself). Note that being a division ring is thus not a property that a ring can get, because a ring is usually not represented as a vector space.</p>

<p>The field of coefficients is stored as the value of the attribute <code class="func">LeftActingDomain</code> (<a href="chap57.html#X86F070E0807DC34E"><span class="RefLink">57.1-11</span></a>) of <var class="Arg">D</var>.</p>

<p><a id="X7A5AE30E7C0F457C" name="X7A5AE30E7C0F457C"></a></p>

<h5>58.1-2 IsField</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsField</code>( <var class="Arg">D</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A <em>field</em> is a commutative division ring (see <code class="func">IsDivisionRing</code> (<a href="chap58.html#X7F2CAA9E7A16913D"><span class="RefLink">58.1-1</span></a>) and <code class="func">IsCommutative</code> (<a href="chap35.html#X830A4A4C795FBC2D"><span class="RefLink">35.4-9</span></a>)).</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsField( GaloisField(16) );           # the field with 16 elements</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsField( Rationals );                 # the field of rationals</span>
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">q:= QuaternionAlgebra( Rationals );;  # noncommutative division ring</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsField( q );  IsDivisionRing( q );</span>
false
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">mat:= [ [ 1 ] ];;  a:= Algebra( Rationals, [ mat ] );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">IsDivisionRing( a );   # algebra not constructed as a division ring</span>
false
</pre></div>

<p><a id="X871AA7D58263E9AC" name="X871AA7D58263E9AC"></a></p>

<h5>58.1-3 Field</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Field</code>( <var class="Arg">z</var>, <var class="Arg">...</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Field</code>( [<var class="Arg">F</var>, ]<var class="Arg">list</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">Field</code> returns the smallest field <span class="SimpleMath">K</span> that contains all the elements <span class="SimpleMath"><var class="Arg">z</var>, ...</span>, or the smallest field <span class="SimpleMath">K</span> that contains all elements in the list <var class="Arg">list</var>. If no subfield <var class="Arg">F</var> is given, <span class="SimpleMath">K</span> is constructed as a field over itself, i.e. the left acting domain of <span class="SimpleMath">K</span> is <span class="SimpleMath">K</span>. Called with a field <var class="Arg">F</var> and a list <var class="Arg">list</var>, <code class="func">Field</code> constructs the field generated by <var class="Arg">F</var> and the elements in <var class="Arg">list</var>, as a vector space over <var class="Arg">F</var>.</p>

<p><a id="X7D9F7FD4786691EE" name="X7D9F7FD4786691EE"></a></p>

<h5>58.1-4 DefaultField</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; DefaultField</code>( <var class="Arg">z</var>, <var class="Arg">...</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; DefaultField</code>( <var class="Arg">list</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">DefaultField</code> returns a field <span class="SimpleMath">K</span> that contains all the elements <span class="SimpleMath"><var class="Arg">z</var>, ...</span>, or a field <span class="SimpleMath">K</span> that contains all elements in the list <var class="Arg">list</var>.</p>

<p>This field need not be the smallest field in which the elements lie, cf. <code class="func">Field</code> (<a href="chap58.html#X871AA7D58263E9AC"><span class="RefLink">58.1-3</span></a>). For example, for elements from cyclotomic fields <code class="func">DefaultField</code> returns the smallest cyclotomic field in which the elements lie, but the elements may lie in a smaller number field which is not a cyclotomic field.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Field( Z(4) );  Field( [ Z(4), Z(8) ] );  # finite fields</span>
GF(2^2)
GF(2^6)
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Field( E(9) );  Field( CF(4), [ E(9) ] ); # abelian number fields</span>
CF(9)
AsField( GaussianRationals, CF(36) )
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">f1:= Field( EB(5) );  f2:= DefaultField( EB(5) );</span>
NF(5,[ 1, 4 ])
CF(5)
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">f1 = f2;  IsSubset( f2, f1 );</span>
false
true
</pre></div>

<p><a id="X7C298A40852C2AFF" name="X7C298A40852C2AFF"></a></p>

<h5>58.1-5 DefaultFieldByGenerators</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; DefaultFieldByGenerators</code>( [<var class="Arg">z</var>, <var class="Arg">...</var>] )</td><td class="tdright">( operation )</td></tr></table></div>
<p>returns the default field containing the elements <var class="Arg">z</var>, <span class="SimpleMath">...</span>. This field may be bigger than the smallest field containing these elements.</p>

<p><a id="X7EF624958648D0FA" name="X7EF624958648D0FA"></a></p>

<h5>58.1-6 GeneratorsOfDivisionRing</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; GeneratorsOfDivisionRing</code>( <var class="Arg">D</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>generators with respect to addition, multiplication, and taking inverses (the identity cannot be omitted ...)</p>

<p><a id="X7AA715317A81261B" name="X7AA715317A81261B"></a></p>

<h5>58.1-7 GeneratorsOfField</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; GeneratorsOfField</code>( <var class="Arg">F</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>generators with respect to addition, multiplication, and taking inverses. This attribute is the same as <code class="func">GeneratorsOfDivisionRing</code> (<a href="chap58.html#X7EF624958648D0FA"><span class="RefLink">58.1-6</span></a>).</p>

<p><a id="X8641861A8550F8BE" name="X8641861A8550F8BE"></a></p>

<h5>58.1-8 DivisionRingByGenerators</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; DivisionRingByGenerators</code>( [<var class="Arg">F</var>, ]<var class="Arg">gens</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; FieldByGenerators</code>( [<var class="Arg">F</var>, ]<var class="Arg">gens</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Called with a field <var class="Arg">F</var> and a list <var class="Arg">gens</var> of scalars, <code class="func">DivisionRingByGenerators</code> returns the division ring over <var class="Arg">F</var> generated by <var class="Arg">gens</var>. The unary version returns the division ring as vector space over <code class="code">FieldOverItselfByGenerators( <var class="Arg">gens</var> )</code>.</p>

<p><code class="func">FieldByGenerators</code> is just a synonym for <code class="func">DivisionRingByGenerators</code>.</p>

<p><a id="X7C193B7D7AFB29BE" name="X7C193B7D7AFB29BE"></a></p>

<h5>58.1-9 AsDivisionRing</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; AsDivisionRing</code>( [<var class="Arg">F</var>, ]<var class="Arg">C</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; AsField</code>( [<var class="Arg">F</var>, ]<var class="Arg">C</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>If the collection <var class="Arg">C</var> can be regarded as a division ring then <code class="code">AsDivisionRing( <var class="Arg">C</var> )</code> is the division ring that consists of the elements of <var class="Arg">C</var>, viewed as a vector space over its prime field; otherwise <code class="keyw">fail</code> is returned.</p>

<p>In the second form, if <var class="Arg">F</var> is a division ring contained in <var class="Arg">C</var> then the returned division ring is viewed as a vector space over <var class="Arg">F</var>.</p>

<p><code class="func">AsField</code> is just a synonym for <code class="func">AsDivisionRing</code>.</p>

<p><a id="X7C53566A839B57F6" name="X7C53566A839B57F6"></a></p>

<h4>58.2 <span class="Heading">Subfields of Fields</span></h4>

<p><a id="X7FE1FA217A08DCE5" name="X7FE1FA217A08DCE5"></a></p>

<h5>58.2-1 Subfield</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Subfield</code>( <var class="Arg">F</var>, <var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; SubfieldNC</code>( <var class="Arg">F</var>, <var class="Arg">gens</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Constructs the subfield of <var class="Arg">F</var> generated by <var class="Arg">gens</var>.</p>

<p><a id="X82A0E79A7B9799E0" name="X82A0E79A7B9799E0"></a></p>

<h5>58.2-2 FieldOverItselfByGenerators</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; FieldOverItselfByGenerators</code>( [<var class="Arg">z</var>, <var class="Arg">...</var>] )</td><td class="tdright">( operation )</td></tr></table></div>
<p>This operation is needed for the call of <code class="func">Field</code> (<a href="chap58.html#X871AA7D58263E9AC"><span class="RefLink">58.1-3</span></a>) or <code class="func">FieldByGenerators</code> (<a href="chap58.html#X8641861A8550F8BE"><span class="RefLink">58.1-8</span></a>) without explicitly given subfield, in order to construct a left acting domain for such a field.</p>

<p><a id="X86DB31B57FB4F570" name="X86DB31B57FB4F570"></a></p>

<h5>58.2-3 PrimitiveElement</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; PrimitiveElement</code>( <var class="Arg">D</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is an element of <var class="Arg">D</var> that generates <var class="Arg">D</var> as a division ring together with the left acting domain.</p>

<p><a id="X7DD27F927BD57FDE" name="X7DD27F927BD57FDE"></a></p>

<h5>58.2-4 PrimeField</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; PrimeField</code>( <var class="Arg">D</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The <em>prime field</em> of a division ring <var class="Arg">D</var> is the smallest field which is contained in <var class="Arg">D</var>. For example, the prime field of any field in characteristic zero is isomorphic to the field of rational numbers.</p>

<p><a id="X84B6F1E67AD0E33D" name="X84B6F1E67AD0E33D"></a></p>

<h5>58.2-5 IsPrimeField</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; IsPrimeField</code>( <var class="Arg">D</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A division ring is a prime field if it is equal to its prime field (see <code class="func">PrimeField</code> (<a href="chap58.html#X7DD27F927BD57FDE"><span class="RefLink">58.2-4</span></a>)).</p>

<p><a id="X7845CECE86A83219" name="X7845CECE86A83219"></a></p>

<h5>58.2-6 DegreeOverPrimeField</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; DegreeOverPrimeField</code>( <var class="Arg">F</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is the degree of the field <var class="Arg">F</var> over its prime field (see <code class="func">PrimeField</code> (<a href="chap58.html#X7DD27F927BD57FDE"><span class="RefLink">58.2-4</span></a>)).</p>

<p><a id="X7ADDCBF47E2ED3D4" name="X7ADDCBF47E2ED3D4"></a></p>

<h5>58.2-7 DefiningPolynomial</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; DefiningPolynomial</code>( <var class="Arg">F</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is the defining polynomial of the field <var class="Arg">F</var> as a field extension over the left acting domain of <var class="Arg">F</var>. A root of the defining polynomial can be computed with <code class="func">RootOfDefiningPolynomial</code> (<a href="chap58.html#X8173DA4982DB1E8A"><span class="RefLink">58.2-8</span></a>).</p>

<p><a id="X8173DA4982DB1E8A" name="X8173DA4982DB1E8A"></a></p>

<h5>58.2-8 RootOfDefiningPolynomial</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; RootOfDefiningPolynomial</code>( <var class="Arg">F</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is a root in the field <var class="Arg">F</var> of its defining polynomial as a field extension over the left acting domain of <var class="Arg">F</var>. The defining polynomial can be computed with <code class="func">DefiningPolynomial</code> (<a href="chap58.html#X7ADDCBF47E2ED3D4"><span class="RefLink">58.2-7</span></a>).</p>

<p><a id="X82718B3B818DC699" name="X82718B3B818DC699"></a></p>

<h5>58.2-9 FieldExtension</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; FieldExtension</code>( <var class="Arg">F</var>, <var class="Arg">poly</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>is the field obtained on adjoining a root of the irreducible polynomial <var class="Arg">poly</var> to the field <var class="Arg">F</var>.</p>

<p><a id="X83490C65819D85FE" name="X83490C65819D85FE"></a></p>

<h5>58.2-10 Subfields</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Subfields</code>( <var class="Arg">F</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>is the set of all subfields of the field <var class="Arg">F</var>.</p>

<p><a id="X7D9A02B07D08FA40" name="X7D9A02B07D08FA40"></a></p>

<h4>58.3 <span class="Heading">Galois Action</span></h4>

<p>Let <span class="SimpleMath">L &gt; K</span> be a field extension of finite degree. Then to each element <span class="SimpleMath">α ∈ L</span>, we can associate a <span class="SimpleMath">K</span>-linear mapping <span class="SimpleMath">φ_α</span> on <span class="SimpleMath">L</span>, and for a fixed <span class="SimpleMath">K</span>-basis of <span class="SimpleMath">L</span>, we can associate to <span class="SimpleMath">α</span> the matrix <span class="SimpleMath">M_α</span> (over <span class="SimpleMath">K</span>) of this mapping.</p>

<p>The <em>norm</em> of <span class="SimpleMath">α</span> is defined as the determinant of <span class="SimpleMath">M_α</span>, the <em>trace</em> of <span class="SimpleMath">α</span> is defined as the trace of <span class="SimpleMath">M_α</span>, the <em>minimal polynomial</em> <span class="SimpleMath">μ_α</span> and the <em>trace polynomial</em> <span class="SimpleMath">χ_α</span> of <span class="SimpleMath">α</span> are defined as the minimal polynomial (see <a href="chap58.html#X8738C6687D784BB5"><span class="RefLink">58.3-2</span></a>) and the characteristic polynomial (see <code class="func">CharacteristicPolynomial</code> (<a href="chap24.html#X87FA0A727CDB060B"><span class="RefLink">24.13-1</span></a>) and <code class="func">TracePolynomial</code> (<a href="chap58.html#X80FE7E017C2D255C"><span class="RefLink">58.3-3</span></a>)) of <span class="SimpleMath">M_α</span>. (Note that <span class="SimpleMath">μ_α</span> depends only on <span class="SimpleMath">K</span> whereas <span class="SimpleMath">χ_α</span> depends on both <span class="SimpleMath">L</span> and <span class="SimpleMath">K</span>.)</p>

<p>Thus norm and trace of <span class="SimpleMath">α</span> are elements of <span class="SimpleMath">K</span>, and <span class="SimpleMath">μ_α</span> and <span class="SimpleMath">χ_α</span> are polynomials over <span class="SimpleMath">K</span>, <span class="SimpleMath">χ_α</span> being a power of <span class="SimpleMath">μ_α</span>, and the degree of <span class="SimpleMath">χ_α</span> equals the degree of the field extension <span class="SimpleMath">L &gt; K</span>.</p>

<p>The <em>conjugates</em> of <span class="SimpleMath">α</span> in <span class="SimpleMath">L</span> are those roots of <span class="SimpleMath">χ_α</span> (with multiplicity) that lie in <span class="SimpleMath">L</span>; note that if only <span class="SimpleMath">L</span> is given, there is in general no way to access the roots outside <span class="SimpleMath">L</span>.</p>

<p>Analogously, the <em>Galois group</em> of the extension <span class="SimpleMath">L &gt; K</span> is defined as the group of all those field automorphisms of <span class="SimpleMath">L</span> that fix <span class="SimpleMath">K</span> pointwise.</p>

<p>If <span class="SimpleMath">L &gt; K</span> is a Galois extension then the conjugates of <span class="SimpleMath">α</span> are all roots of <span class="SimpleMath">χ_α</span> (with multiplicity), the set of conjugates equals the roots of <span class="SimpleMath">μ_α</span>, the norm of <span class="SimpleMath">α</span> equals the product and the trace of <span class="SimpleMath">α</span> equals the sum of the conjugates of <span class="SimpleMath">α</span>, and the Galois group in the sense of the above definition equals the usual Galois group,</p>

<p>Note that <code class="code">MinimalPolynomial( <var class="Arg">F</var>, <var class="Arg">z</var> )</code> is a polynomial <em>over</em> <var class="Arg">F</var>, whereas <code class="code">Norm( <var class="Arg">F</var>, <var class="Arg">z</var> )</code> is the norm of the element <var class="Arg">z</var> <em>in</em> <var class="Arg">F</var> w.r.t. the field extension <code class="code"><var class="Arg">F</var> &gt; LeftActingDomain( <var class="Arg">F</var> )</code>.</p>

<p>The default methods for field elements are as follows. <code class="func">MinimalPolynomial</code> (<a href="chap66.html#X8643915A8424DAF8"><span class="RefLink">66.8-1</span></a>) solves a system of linear equations, <code class="func">TracePolynomial</code> (<a href="chap58.html#X80FE7E017C2D255C"><span class="RefLink">58.3-3</span></a>) computes the appropriate power of the minimal polynomial, <code class="func">Norm</code> (<a href="chap58.html#X838515278587FF01"><span class="RefLink">58.3-4</span></a>) and <code class="func">Trace</code> (<a href="chap58.html#X7DD17EB581200AD6"><span class="RefLink">58.3-5</span></a>) values are obtained as coefficients of the characteristic polynomial, and <code class="func">Conjugates</code> (<a href="chap58.html#X837A4A5781F8EE92"><span class="RefLink">58.3-6</span></a>) uses the factorization of the characteristic polynomial.</p>

<p>For elements in finite fields and cyclotomic fields, one wants to do the computations in a different way since the field extensions in question are Galois extensions, and the Galois groups are well-known in these cases. More general, if a field is in the category <code class="code">IsFieldControlledByGaloisGroup</code> then the default methods are the following. <code class="func">Conjugates</code> (<a href="chap58.html#X837A4A5781F8EE92"><span class="RefLink">58.3-6</span></a>) returns the sorted list of images (with multiplicity) of the element under the Galois group, <code class="func">Norm</code> (<a href="chap58.html#X838515278587FF01"><span class="RefLink">58.3-4</span></a>) computes the product of the conjugates, <code class="func">Trace</code> (<a href="chap58.html#X7DD17EB581200AD6"><span class="RefLink">58.3-5</span></a>) computes the sum of the conjugates, <code class="func">TracePolynomial</code> (<a href="chap58.html#X80FE7E017C2D255C"><span class="RefLink">58.3-3</span></a>) and <code class="func">MinimalPolynomial</code> (<a href="chap66.html#X8643915A8424DAF8"><span class="RefLink">66.8-1</span></a>) compute the product of linear factors <span class="SimpleMath">x - c</span> with <span class="SimpleMath">c</span> ranging over the conjugates and the set of conjugates, respectively.</p>

<p><a id="X80CAA5BA82F09ED2" name="X80CAA5BA82F09ED2"></a></p>

<h5>58.3-1 GaloisGroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; GaloisGroup</code>( <var class="Arg">F</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The <em>Galois group</em> of a field <var class="Arg">F</var> is the group of all field automorphisms of <var class="Arg">F</var> that fix the subfield <span class="SimpleMath">K =</span><code class="code">LeftActingDomain( <var class="Arg">F</var> )</code> pointwise.</p>

<p>Note that the field extension <span class="SimpleMath"><var class="Arg">F</var> &gt; K</span> need <em>not</em> be a Galois extension.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">g:= GaloisGroup( AsField( GF(2^2), GF(2^12) ) );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Size( g );  IsCyclic( g );</span>
6
true
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">h:= GaloisGroup( CF(60) );;</span>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Size( h );  IsAbelian( h );</span>
16
true
</pre></div>

<p><a id="X8738C6687D784BB5" name="X8738C6687D784BB5"></a></p>

<h5>58.3-2 MinimalPolynomial</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; MinimalPolynomial</code>( <var class="Arg">F</var>, <var class="Arg">z</var>[, <var class="Arg">ind</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>returns the minimal polynomial of <var class="Arg">z</var> over the field <var class="Arg">F</var>. This is a generator of the ideal in <span class="SimpleMath"><var class="Arg">F</var>[x]</span> of all polynomials which vanish on <var class="Arg">z</var>. (This definition is consistent with the general definition of <code class="func">MinimalPolynomial</code> (<a href="chap66.html#X8643915A8424DAF8"><span class="RefLink">66.8-1</span></a>) for rings.)</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">MinimalPolynomial( Rationals, E(8) );</span>
x_1^4+1
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">MinimalPolynomial( CF(4), E(8) );</span>
x_1^2+(-E(4))
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">MinimalPolynomial( CF(8), E(8) );</span>
x_1+(-E(8))
</pre></div>

<p><a id="X80FE7E017C2D255C" name="X80FE7E017C2D255C"></a></p>

<h5>58.3-3 TracePolynomial</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; TracePolynomial</code>( <var class="Arg">L</var>, <var class="Arg">K</var>, <var class="Arg">z</var>[, <var class="Arg">inum</var>] )</td><td class="tdright">( operation )</td></tr></table></div>
<p>returns the polynomial that is the product of <span class="SimpleMath">(X - c)</span> where <span class="SimpleMath">c</span> runs over the conjugates of <var class="Arg">z</var> in the field extension <var class="Arg">L</var> over <var class="Arg">K</var>. The polynomial is returned as a univariate polynomial over <var class="Arg">K</var> in the indeterminate number <var class="Arg">inum</var> (defaulting to 1).</p>

<p>This polynomial is sometimes also called the <em>characteristic polynomial</em> of <var class="Arg">z</var> w.r.t. the field extension <span class="SimpleMath"><var class="Arg">L</var> &gt; <var class="Arg">K</var></span>. Therefore methods are installed for <code class="func">CharacteristicPolynomial</code> (<a href="chap24.html#X87FA0A727CDB060B"><span class="RefLink">24.13-1</span></a>) that call <code class="func">TracePolynomial</code> in the case of field extensions.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TracePolynomial( CF(8), Rationals, E(8) );</span>
x_1^4+1
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">TracePolynomial( CF(16), Rationals, E(8) );</span>
x_1^8+2*x_1^4+1
</pre></div>

<p><a id="X838515278587FF01" name="X838515278587FF01"></a></p>

<h5>58.3-4 Norm</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Norm</code>( [<var class="Arg">L</var>[, <var class="Arg">K</var>, ]]<var class="Arg">z</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="func">Norm</code> returns the norm of the field element <var class="Arg">z</var>. If two fields <var class="Arg">L</var> and <var class="Arg">K</var> are given then the norm is computed w.r.t. the field extension <var class="Arg">L</var><span class="SimpleMath">&gt;</span><var class="Arg">K</var>, if only one field <var class="Arg">L</var> is given then <code class="code">LeftActingDomain( <var class="Arg">L</var> )</code> is taken as default for the subfield <var class="Arg">K</var>, and if no field is given then <code class="code">DefaultField( <var class="Arg">z</var> )</code> is taken as default for <var class="Arg">L</var>.</p>

<p><a id="X7DD17EB581200AD6" name="X7DD17EB581200AD6"></a></p>

<h5>58.3-5 <span class="Heading">Traces of field elements and matrices</span></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Trace</code>( [<var class="Arg">L</var>[, <var class="Arg">K</var>, ]]<var class="Arg">z</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Trace</code>( <var class="Arg">mat</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="func">Trace</code> returns the trace of the field element <var class="Arg">z</var>. If two fields <var class="Arg">L</var> and <var class="Arg">K</var> are given then the trace is computed w.r.t. the field extension <span class="SimpleMath"><var class="Arg">L</var> &gt; <var class="Arg">K</var></span>, if only one field <var class="Arg">L</var> is given then <code class="code">LeftActingDomain( <var class="Arg">L</var> )</code> is taken as default for the subfield <var class="Arg">K</var>, and if no field is given then <code class="code">DefaultField( <var class="Arg">z</var> )</code> is taken as default for <var class="Arg">L</var>.</p>

<p>The <em>trace of a matrix</em> is the sum of its diagonal entries. Note that this is <em>not</em> compatible with the definition of <code class="func">Trace</code> for field elements, so the one-argument version is not suitable when matrices shall be regarded as field elements.</p>

<p><a id="X837A4A5781F8EE92" name="X837A4A5781F8EE92"></a></p>

<h5>58.3-6 Conjugates</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; Conjugates</code>( [<var class="Arg">L</var>[, <var class="Arg">K</var>, ]]<var class="Arg">z</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="func">Conjugates</code> returns the list of <em>conjugates</em> of the field element <var class="Arg">z</var>. If two fields <var class="Arg">L</var> and <var class="Arg">K</var> are given then the conjugates are computed w.r.t. the field extension <var class="Arg">L</var><span class="SimpleMath">&gt;</span><var class="Arg">K</var>, if only one field <var class="Arg">L</var> is given then <code class="code">LeftActingDomain( <var class="Arg">L</var> )</code> is taken as default for the subfield <var class="Arg">K</var>, and if no field is given then <code class="code">DefaultField( <var class="Arg">z</var> )</code> is taken as default for <var class="Arg">L</var>.</p>

<p>The result list will contain duplicates if <var class="Arg">z</var> lies in a proper subfield of <var class="Arg">L</var>, or of the default field of <var class="Arg">z</var>, respectively. The result list need not be sorted.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Norm( E(8) );  Norm( CF(8), E(8) );</span>
1
1
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Norm( CF(8), CF(4), E(8) );</span>
-E(4)
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Norm( AsField( CF(4), CF(8) ), E(8) );</span>
-E(4)
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Trace( E(8) );  Trace( CF(8), CF(8), E(8) );</span>
0
E(8)
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Conjugates( CF(8), E(8) );</span>
[ E(8), E(8)^3, -E(8), -E(8)^3 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Conjugates( CF(8), CF(4), E(8) );</span>
[ E(8), -E(8) ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">Conjugates( CF(16), E(8) );</span>
[ E(8), E(8)^3, -E(8), -E(8)^3, E(8), E(8)^3, -E(8), -E(8)^3 ]
</pre></div>

<p><a id="X8236A8B47E6AAD93" name="X8236A8B47E6AAD93"></a></p>

<h5>58.3-7 NormalBase</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&#8227; NormalBase</code>( <var class="Arg">F</var>[, <var class="Arg">elm</var>] )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Let <var class="Arg">F</var> be a field that is a Galois extension of its subfield <code class="code">LeftActingDomain( <var class="Arg">F</var> )</code>. Then <code class="func">NormalBase</code> returns a list of elements in <var class="Arg">F</var> that form a normal basis of <var class="Arg">F</var>, that is, a vector space basis that is closed under the action of the Galois group (see <code class="func">GaloisGroup</code> (<a href="chap58.html#X80CAA5BA82F09ED2"><span class="RefLink">58.3-1</span></a>)) of <var class="Arg">F</var>.</p>

<p>If a second argument <var class="Arg">elm</var> is given, it is used as a hint for the algorithm to find a normal basis with the algorithm described in <a href="chapBib.html#biBArt68">[Art73]</a>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">NormalBase( CF(5) );</span>
[ -E(5), -E(5)^2, -E(5)^3, -E(5)^4 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">NormalBase( CF(4) );</span>
[ 1/2-1/2*E(4), 1/2+1/2*E(4) ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">NormalBase( GF(3^6) );</span>
[ Z(3^6)^2, Z(3^6)^6, Z(3^6)^18, Z(3^6)^54, Z(3^6)^162, Z(3^6)^486 ]
<span class="GAPprompt">gap&gt;</span> <span class="GAPinput">NormalBase( GF( GF(8), 2 ) );</span>
[ Z(2^6), Z(2^6)^8 ]
</pre></div>


<div class="chlinkprevnextbot">&nbsp;<a href="chap0.html">[Top of Book]</a>&nbsp;  <a href="chap0.html#contents">[Contents]</a>&nbsp;  &nbsp;<a href="chap57.html">[Previous Chapter]</a>&nbsp;  &nbsp;<a href="chap59.html">[Next Chapter]</a>&nbsp;  </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chap11.html">11</a>  <a href="chap12.html">12</a>  <a href="chap13.html">13</a>  <a href="chap14.html">14</a>  <a href="chap15.html">15</a>  <a href="chap16.html">16</a>  <a href="chap17.html">17</a>  <a href="chap18.html">18</a>  <a href="chap19.html">19</a>  <a href="chap20.html">20</a>  <a href="chap21.html">21</a>  <a href="chap22.html">22</a>  <a href="chap23.html">23</a>  <a href="chap24.html">24</a>  <a href="chap25.html">25</a>  <a href="chap26.html">26</a>  <a href="chap27.html">27</a>  <a href="chap28.html">28</a>  <a href="chap29.html">29</a>  <a href="chap30.html">30</a>  <a href="chap31.html">31</a>  <a href="chap32.html">32</a>  <a href="chap33.html">33</a>  <a href="chap34.html">34</a>  <a href="chap35.html">35</a>  <a href="chap36.html">36</a>  <a href="chap37.html">37</a>  <a href="chap38.html">38</a>  <a href="chap39.html">39</a>  <a href="chap40.html">40</a>  <a href="chap41.html">41</a>  <a href="chap42.html">42</a>  <a href="chap43.html">43</a>  <a href="chap44.html">44</a>  <a href="chap45.html">45</a>  <a href="chap46.html">46</a>  <a href="chap47.html">47</a>  <a href="chap48.html">48</a>  <a href="chap49.html">49</a>  <a href="chap50.html">50</a>  <a href="chap51.html">51</a>  <a href="chap52.html">52</a>  <a href="chap53.html">53</a>  <a href="chap54.html">54</a>  <a href="chap55.html">55</a>  <a href="chap56.html">56</a>  <a href="chap57.html">57</a>  <a href="chap58.html">58</a>  <a href="chap59.html">59</a>  <a href="chap60.html">60</a>  <a href="chap61.html">61</a>  <a href="chap62.html">62</a>  <a href="chap63.html">63</a>  <a href="chap64.html">64</a>  <a href="chap65.html">65</a>  <a href="chap66.html">66</a>  <a href="chap67.html">67</a>  <a href="chap68.html">68</a>  <a href="chap69.html">69</a>  <a href="chap70.html">70</a>  <a href="chap71.html">71</a>  <a href="chap72.html">72</a>  <a href="chap73.html">73</a>  <a href="chap74.html">74</a>  <a href="chap75.html">75</a>  <a href="chap76.html">76</a>  <a href="chap77.html">77</a>  <a href="chap78.html">78</a>  <a href="chap79.html">79</a>  <a href="chap80.html">80</a>  <a href="chap81.html">81</a>  <a href="chap82.html">82</a>  <a href="chap83.html">83</a>  <a href="chap84.html">84</a>  <a href="chap85.html">85</a>  <a href="chap86.html">86</a>  <a href="chap87.html">87</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<hr />
<p class="foot">generated by <a href="http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>