
| Current Path : /usr/share/gap/doc/ref/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //usr/share/gap/doc/ref/chap58_mj.html |
<?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>
<script type="text/javascript"
src="mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<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_mj.html">Top</a> <a href="chap1_mj.html">1</a> <a href="chap2_mj.html">2</a> <a href="chap3_mj.html">3</a> <a href="chap4_mj.html">4</a> <a href="chap5_mj.html">5</a> <a href="chap6_mj.html">6</a> <a href="chap7_mj.html">7</a> <a href="chap8_mj.html">8</a> <a href="chap9_mj.html">9</a> <a href="chap10_mj.html">10</a> <a href="chap11_mj.html">11</a> <a href="chap12_mj.html">12</a> <a href="chap13_mj.html">13</a> <a href="chap14_mj.html">14</a> <a href="chap15_mj.html">15</a> <a href="chap16_mj.html">16</a> <a href="chap17_mj.html">17</a> <a href="chap18_mj.html">18</a> <a href="chap19_mj.html">19</a> <a href="chap20_mj.html">20</a> <a href="chap21_mj.html">21</a> <a href="chap22_mj.html">22</a> <a href="chap23_mj.html">23</a> <a href="chap24_mj.html">24</a> <a href="chap25_mj.html">25</a> <a href="chap26_mj.html">26</a> <a href="chap27_mj.html">27</a> <a href="chap28_mj.html">28</a> <a href="chap29_mj.html">29</a> <a href="chap30_mj.html">30</a> <a href="chap31_mj.html">31</a> <a href="chap32_mj.html">32</a> <a href="chap33_mj.html">33</a> <a href="chap34_mj.html">34</a> <a href="chap35_mj.html">35</a> <a href="chap36_mj.html">36</a> <a href="chap37_mj.html">37</a> <a href="chap38_mj.html">38</a> <a href="chap39_mj.html">39</a> <a href="chap40_mj.html">40</a> <a href="chap41_mj.html">41</a> <a href="chap42_mj.html">42</a> <a href="chap43_mj.html">43</a> <a href="chap44_mj.html">44</a> <a href="chap45_mj.html">45</a> <a href="chap46_mj.html">46</a> <a href="chap47_mj.html">47</a> <a href="chap48_mj.html">48</a> <a href="chap49_mj.html">49</a> <a href="chap50_mj.html">50</a> <a href="chap51_mj.html">51</a> <a href="chap52_mj.html">52</a> <a href="chap53_mj.html">53</a> <a href="chap54_mj.html">54</a> <a href="chap55_mj.html">55</a> <a href="chap56_mj.html">56</a> <a href="chap57_mj.html">57</a> <a href="chap58_mj.html">58</a> <a href="chap59_mj.html">59</a> <a href="chap60_mj.html">60</a> <a href="chap61_mj.html">61</a> <a href="chap62_mj.html">62</a> <a href="chap63_mj.html">63</a> <a href="chap64_mj.html">64</a> <a href="chap65_mj.html">65</a> <a href="chap66_mj.html">66</a> <a href="chap67_mj.html">67</a> <a href="chap68_mj.html">68</a> <a href="chap69_mj.html">69</a> <a href="chap70_mj.html">70</a> <a href="chap71_mj.html">71</a> <a href="chap72_mj.html">72</a> <a href="chap73_mj.html">73</a> <a href="chap74_mj.html">74</a> <a href="chap75_mj.html">75</a> <a href="chap76_mj.html">76</a> <a href="chap77_mj.html">77</a> <a href="chap78_mj.html">78</a> <a href="chap79_mj.html">79</a> <a href="chap80_mj.html">80</a> <a href="chap81_mj.html">81</a> <a href="chap82_mj.html">82</a> <a href="chap83_mj.html">83</a> <a href="chap84_mj.html">84</a> <a href="chap85_mj.html">85</a> <a href="chap86_mj.html">86</a> <a href="chap87_mj.html">87</a> <a href="chapBib_mj.html">Bib</a> <a href="chapInd_mj.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0_mj.html">[Top of Book]</a> <a href="chap0_mj.html#contents">[Contents]</a> <a href="chap57_mj.html">[Previous Chapter]</a> <a href="chap59_mj.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap58.html">[MathJax off]</a></p>
<p><a id="X80A8E676814A19FD" name="X80A8E676814A19FD"></a></p>
<div class="ChapSects"><a href="chap58_mj.html#X80A8E676814A19FD">58 <span class="Heading">Fields and Division Rings</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap58_mj.html#X82B74B458705B3CE">58.1 <span class="Heading">Generating Fields</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7F2CAA9E7A16913D">58.1-1 IsDivisionRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7A5AE30E7C0F457C">58.1-2 IsField</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X871AA7D58263E9AC">58.1-3 Field</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7D9F7FD4786691EE">58.1-4 DefaultField</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7C298A40852C2AFF">58.1-5 DefaultFieldByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7EF624958648D0FA">58.1-6 GeneratorsOfDivisionRing</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7AA715317A81261B">58.1-7 GeneratorsOfField</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X8641861A8550F8BE">58.1-8 DivisionRingByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7C193B7D7AFB29BE">58.1-9 AsDivisionRing</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap58_mj.html#X7C53566A839B57F6">58.2 <span class="Heading">Subfields of Fields</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7FE1FA217A08DCE5">58.2-1 Subfield</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X82A0E79A7B9799E0">58.2-2 FieldOverItselfByGenerators</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X86DB31B57FB4F570">58.2-3 PrimitiveElement</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7DD27F927BD57FDE">58.2-4 PrimeField</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X84B6F1E67AD0E33D">58.2-5 IsPrimeField</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7845CECE86A83219">58.2-6 DegreeOverPrimeField</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7ADDCBF47E2ED3D4">58.2-7 DefiningPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X8173DA4982DB1E8A">58.2-8 RootOfDefiningPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X82718B3B818DC699">58.2-9 FieldExtension</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X83490C65819D85FE">58.2-10 Subfields</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap58_mj.html#X7D9A02B07D08FA40">58.3 <span class="Heading">Galois Action</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X80CAA5BA82F09ED2">58.3-1 GaloisGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X8738C6687D784BB5">58.3-2 MinimalPolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X80FE7E017C2D255C">58.3-3 TracePolynomial</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X838515278587FF01">58.3-4 Norm</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X7DD17EB581200AD6">58.3-5 <span class="Heading">Traces of field elements and matrices</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.html#X837A4A5781F8EE92">58.3-6 Conjugates</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap58_mj.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_mj.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_mj.html#X7893ABF67A028802"><span class="RefLink">59</span></a>) and abelian number fields (see Chapter <a href="chap60_mj.html#X80510B5880521FDC"><span class="RefLink">60</span></a>), in particular the field of rationals (see Chapter <a href="chap17_mj.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_mj.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_mj.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_mj.html#X838515278587FF01"><span class="RefLink">58.3-4</span></a>) and <code class="func">Trace</code> (<a href="chap58_mj.html#X7DD17EB581200AD6"><span class="RefLink">58.3-5</span></a>) (see <a href="chap58_mj.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">‣ 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_mj.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">‣ IsField</code>( <var class="Arg">D</var> )</td><td class="tdright">( filter )</td></tr></table></div>
<p>A <em>field</em> is a commutative division ring (see <code class="func">IsDivisionRing</code> (<a href="chap58_mj.html#X7F2CAA9E7A16913D"><span class="RefLink">58.1-1</span></a>) and <code class="func">IsCommutative</code> (<a href="chap35_mj.html#X830A4A4C795FBC2D"><span class="RefLink">35.4-9</span></a>)).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsField( GaloisField(16) ); # the field with 16 elements</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsField( Rationals ); # the field of rationals</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">q:= QuaternionAlgebra( Rationals );; # noncommutative division ring</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsField( q ); IsDivisionRing( q );</span>
false
true
<span class="GAPprompt">gap></span> <span class="GAPinput">mat:= [ [ 1 ] ];; a:= Algebra( Rationals, [ mat ] );;</span>
<span class="GAPprompt">gap></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">‣ 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">‣ 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">\(\textit{z}, \ldots\)</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">‣ 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">‣ 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">\(\textit{z}, \ldots\)</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_mj.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></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></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></span> <span class="GAPinput">f1:= Field( EB(5) ); f2:= DefaultField( EB(5) );</span>
NF(5,[ 1, 4 ])
CF(5)
<span class="GAPprompt">gap></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">‣ 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">\(\ldots\)</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">‣ 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">‣ 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_mj.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">‣ 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">‣ 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">‣ 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">‣ 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">‣ 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">‣ 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">‣ 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_mj.html#X871AA7D58263E9AC"><span class="RefLink">58.1-3</span></a>) or <code class="func">FieldByGenerators</code> (<a href="chap58_mj.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">‣ 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">‣ 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">‣ 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_mj.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">‣ 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_mj.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">‣ 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_mj.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">‣ 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_mj.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">‣ 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">‣ 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 > K\)</span> be a field extension of finite degree. Then to each element <span class="SimpleMath">\(\alpha \in L\)</span>, we can associate a <span class="SimpleMath">\(K\)</span>-linear mapping <span class="SimpleMath">\(\varphi_{\alpha}\)</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">\(\alpha\)</span> the matrix <span class="SimpleMath">\(M_{\alpha}\)</span> (over <span class="SimpleMath">\(K\)</span>) of this mapping.</p>
<p>The <em>norm</em> of <span class="SimpleMath">\(\alpha\)</span> is defined as the determinant of <span class="SimpleMath">\(M_{\alpha}\)</span>, the <em>trace</em> of <span class="SimpleMath">\(\alpha\)</span> is defined as the trace of <span class="SimpleMath">\(M_{\alpha}\)</span>, the <em>minimal polynomial</em> <span class="SimpleMath">\(\mu_{\alpha}\)</span> and the <em>trace polynomial</em> <span class="SimpleMath">\(\chi_{\alpha}\)</span> of <span class="SimpleMath">\(\alpha\)</span> are defined as the minimal polynomial (see <a href="chap58_mj.html#X8738C6687D784BB5"><span class="RefLink">58.3-2</span></a>) and the characteristic polynomial (see <code class="func">CharacteristicPolynomial</code> (<a href="chap24_mj.html#X87FA0A727CDB060B"><span class="RefLink">24.13-1</span></a>) and <code class="func">TracePolynomial</code> (<a href="chap58_mj.html#X80FE7E017C2D255C"><span class="RefLink">58.3-3</span></a>)) of <span class="SimpleMath">\(M_{\alpha}\)</span>. (Note that <span class="SimpleMath">\(\mu_{\alpha}\)</span> depends only on <span class="SimpleMath">\(K\)</span> whereas <span class="SimpleMath">\(\chi_{\alpha}\)</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">\(\alpha\)</span> are elements of <span class="SimpleMath">\(K\)</span>, and <span class="SimpleMath">\(\mu_{\alpha}\)</span> and <span class="SimpleMath">\(\chi_{\alpha}\)</span> are polynomials over <span class="SimpleMath">\(K\)</span>, <span class="SimpleMath">\(\chi_{\alpha}\)</span> being a power of <span class="SimpleMath">\(\mu_{\alpha}\)</span>, and the degree of <span class="SimpleMath">\(\chi_{\alpha}\)</span> equals the degree of the field extension <span class="SimpleMath">\(L > K\)</span>.</p>
<p>The <em>conjugates</em> of <span class="SimpleMath">\(\alpha\)</span> in <span class="SimpleMath">\(L\)</span> are those roots of <span class="SimpleMath">\(\chi_{\alpha}\)</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 > 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 > K\)</span> is a Galois extension then the conjugates of <span class="SimpleMath">\(\alpha\)</span> are all roots of <span class="SimpleMath">\(\chi_{\alpha}\)</span> (with multiplicity), the set of conjugates equals the roots of <span class="SimpleMath">\(\mu_{\alpha}\)</span>, the norm of <span class="SimpleMath">\(\alpha\)</span> equals the product and the trace of <span class="SimpleMath">\(\alpha\)</span> equals the sum of the conjugates of <span class="SimpleMath">\(\alpha\)</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> > 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_mj.html#X8643915A8424DAF8"><span class="RefLink">66.8-1</span></a>) solves a system of linear equations, <code class="func">TracePolynomial</code> (<a href="chap58_mj.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_mj.html#X838515278587FF01"><span class="RefLink">58.3-4</span></a>) and <code class="func">Trace</code> (<a href="chap58_mj.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_mj.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_mj.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_mj.html#X838515278587FF01"><span class="RefLink">58.3-4</span></a>) computes the product of the conjugates, <code class="func">Trace</code> (<a href="chap58_mj.html#X7DD17EB581200AD6"><span class="RefLink">58.3-5</span></a>) computes the sum of the conjugates, <code class="func">TracePolynomial</code> (<a href="chap58_mj.html#X80FE7E017C2D255C"><span class="RefLink">58.3-3</span></a>) and <code class="func">MinimalPolynomial</code> (<a href="chap66_mj.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">‣ 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">\(\textit{F} > K\)</span> need <em>not</em> be a Galois extension.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= GaloisGroup( AsField( GF(2^2), GF(2^12) ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Size( g ); IsCyclic( g );</span>
6
true
<span class="GAPprompt">gap></span> <span class="GAPinput">h:= GaloisGroup( CF(60) );;</span>
<span class="GAPprompt">gap></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">‣ MinimalPolynomial</code>( <var class="Arg">F</var>, <var class="Arg">z</var>[, <var class="Arg">ind</var>] )</td><td class="tdright">( operation )</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">\(\textit{F}[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_mj.html#X8643915A8424DAF8"><span class="RefLink">66.8-1</span></a>) for rings.)</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalPolynomial( Rationals, E(8) );</span>
x_1^4+1
<span class="GAPprompt">gap></span> <span class="GAPinput">MinimalPolynomial( CF(4), E(8) );</span>
x_1^2+(-E(4))
<span class="GAPprompt">gap></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">‣ 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">\(\textit{L} > \textit{K}\)</span>. Therefore methods are installed for <code class="func">CharacteristicPolynomial</code> (<a href="chap24_mj.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></span> <span class="GAPinput">TracePolynomial( CF(8), Rationals, E(8) );</span>
x_1^4+1
<span class="GAPprompt">gap></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">‣ 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">\( > \)</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">‣ 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">‣ 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">\(\textit{L} > \textit{K}\)</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">‣ 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">\( > \)</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></span> <span class="GAPinput">Norm( E(8) ); Norm( CF(8), E(8) );</span>
1
1
<span class="GAPprompt">gap></span> <span class="GAPinput">Norm( CF(8), CF(4), E(8) );</span>
-E(4)
<span class="GAPprompt">gap></span> <span class="GAPinput">Norm( AsField( CF(4), CF(8) ), E(8) );</span>
-E(4)
<span class="GAPprompt">gap></span> <span class="GAPinput">Trace( E(8) ); Trace( CF(8), CF(8), E(8) );</span>
0
E(8)
<span class="GAPprompt">gap></span> <span class="GAPinput">Conjugates( CF(8), E(8) );</span>
[ E(8), E(8)^3, -E(8), -E(8)^3 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Conjugates( CF(8), CF(4), E(8) );</span>
[ E(8), -E(8) ]
<span class="GAPprompt">gap></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">‣ 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_mj.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_mj.html#biBArt68">[Art73]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">NormalBase( CF(5) );</span>
[ -E(5), -E(5)^2, -E(5)^3, -E(5)^4 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">NormalBase( CF(4) );</span>
[ 1/2-1/2*E(4), 1/2+1/2*E(4) ]
<span class="GAPprompt">gap></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></span> <span class="GAPinput">NormalBase( GF( GF(8), 2 ) );</span>
[ Z(2^6), Z(2^6)^8 ]
</pre></div>
<div class="chlinkprevnextbot"> <a href="chap0_mj.html">[Top of Book]</a> <a href="chap0_mj.html#contents">[Contents]</a> <a href="chap57_mj.html">[Previous Chapter]</a> <a href="chap59_mj.html">[Next Chapter]</a> </div>
<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a> <a href="chap1_mj.html">1</a> <a href="chap2_mj.html">2</a> <a href="chap3_mj.html">3</a> <a href="chap4_mj.html">4</a> <a href="chap5_mj.html">5</a> <a href="chap6_mj.html">6</a> <a href="chap7_mj.html">7</a> <a href="chap8_mj.html">8</a> <a href="chap9_mj.html">9</a> <a href="chap10_mj.html">10</a> <a href="chap11_mj.html">11</a> <a href="chap12_mj.html">12</a> <a href="chap13_mj.html">13</a> <a href="chap14_mj.html">14</a> <a href="chap15_mj.html">15</a> <a href="chap16_mj.html">16</a> <a href="chap17_mj.html">17</a> <a href="chap18_mj.html">18</a> <a href="chap19_mj.html">19</a> <a href="chap20_mj.html">20</a> <a href="chap21_mj.html">21</a> <a href="chap22_mj.html">22</a> <a href="chap23_mj.html">23</a> <a href="chap24_mj.html">24</a> <a href="chap25_mj.html">25</a> <a href="chap26_mj.html">26</a> <a href="chap27_mj.html">27</a> <a href="chap28_mj.html">28</a> <a href="chap29_mj.html">29</a> <a href="chap30_mj.html">30</a> <a href="chap31_mj.html">31</a> <a href="chap32_mj.html">32</a> <a href="chap33_mj.html">33</a> <a href="chap34_mj.html">34</a> <a href="chap35_mj.html">35</a> <a href="chap36_mj.html">36</a> <a href="chap37_mj.html">37</a> <a href="chap38_mj.html">38</a> <a href="chap39_mj.html">39</a> <a href="chap40_mj.html">40</a> <a href="chap41_mj.html">41</a> <a href="chap42_mj.html">42</a> <a href="chap43_mj.html">43</a> <a href="chap44_mj.html">44</a> <a href="chap45_mj.html">45</a> <a href="chap46_mj.html">46</a> <a href="chap47_mj.html">47</a> <a href="chap48_mj.html">48</a> <a href="chap49_mj.html">49</a> <a href="chap50_mj.html">50</a> <a href="chap51_mj.html">51</a> <a href="chap52_mj.html">52</a> <a href="chap53_mj.html">53</a> <a href="chap54_mj.html">54</a> <a href="chap55_mj.html">55</a> <a href="chap56_mj.html">56</a> <a href="chap57_mj.html">57</a> <a href="chap58_mj.html">58</a> <a href="chap59_mj.html">59</a> <a href="chap60_mj.html">60</a> <a href="chap61_mj.html">61</a> <a href="chap62_mj.html">62</a> <a href="chap63_mj.html">63</a> <a href="chap64_mj.html">64</a> <a href="chap65_mj.html">65</a> <a href="chap66_mj.html">66</a> <a href="chap67_mj.html">67</a> <a href="chap68_mj.html">68</a> <a href="chap69_mj.html">69</a> <a href="chap70_mj.html">70</a> <a href="chap71_mj.html">71</a> <a href="chap72_mj.html">72</a> <a href="chap73_mj.html">73</a> <a href="chap74_mj.html">74</a> <a href="chap75_mj.html">75</a> <a href="chap76_mj.html">76</a> <a href="chap77_mj.html">77</a> <a href="chap78_mj.html">78</a> <a href="chap79_mj.html">79</a> <a href="chap80_mj.html">80</a> <a href="chap81_mj.html">81</a> <a href="chap82_mj.html">82</a> <a href="chap83_mj.html">83</a> <a href="chap84_mj.html">84</a> <a href="chap85_mj.html">85</a> <a href="chap86_mj.html">86</a> <a href="chap87_mj.html">87</a> <a href="chapBib_mj.html">Bib</a> <a href="chapInd_mj.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>