Quelle chap50.html
Sprache: HTML
|
|
| products/Sources/formale Sprachen/GAP/doc/ref/chap50.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>
< title>GAP (ref) - Chapter 50: Group Libraries</ 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= "chap50" 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"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap49.html">[Previous Chapter]</a> <a href="chap51.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap50_mj.html">[MathJax on]</a></p>
<p><a id="X81B00B667D2BD022" name="X81B00B667D2BD022"></a></p>
<div class="ChapSects"><a href="chap50.html#X81B00B667D2BD022">50 <span class="Heading">Group Libraries</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap50.html#X839981CC7D9B671B">50.1 <span class="Heading">Basic Groups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X8489BECB78664847">50.1-1 TrivialGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7A7C473D87B31F3B">50.1-2 CyclicGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X81CCC3BF8005A2D7">50.1-3 AbelianGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X8778256286E50743">50.1-4 ElementaryAbelianGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7F43050D8587E767">50.1-5 FreeAbelianGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X838DE1AB7B3D70FF">50.1-6 DihedralGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X8233A853818CAF33">50.1-7 IsDihedralGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7E9844EF7C47EEB0">50.1-8 DicyclicGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7F260D177FD4BE4C">50.1-9 IsDicyclicGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X86E76B3A796BEFA8">50.1-10 ExtraspecialGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7E54D3E778E6A53E">50.1-11 <span class="Heading">AlternatingGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X858666F97BD85ABB">50.1-12 <span class="Heading">SymmetricGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X788FA7DE84E0FE6A">50.1-13 MathieuGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X8469DBBF82F8E5C3">50.1-14 SuzukiGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X87E5B0F679CA7FE4">50.1-15 ReeGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7D0FFDA4793995FC">50.1-16 <span class="Heading">Generator Names</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap50.html#X8674AAA578FE4AEE">50.2 <span class="Heading">Classical Groups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X85D607DD82AF3E27">50.2-1 <span class="Heading">GeneralLinearGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7CA3F7BF83992C6B">50.2-2 <span class="Heading">SpecialLinearGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X866D4E2B816BDFA5">50.2-3 GeneralUnitaryGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X82A2AADE805DCDE9">50.2-4 SpecialUnitaryGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X8142A8B07811CA90">50.2-5 <span class="Heading">SymplecticGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7C2051CB7B94CEB1">50.2-6 GeneralOrthogonalGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X78D4EEF27AA2DCFD">50.2-7 SpecialOrthogonalGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X8365E0AB8338DA3F">50.2-8 Omega</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X79C3C61A7D83A6D0">50.2-9 GeneralSemilinearGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7D3779237CB5B49C">50.2-10 SpecialSemilinearGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7F0DBEB880D2D574">50.2-11 ProjectiveGeneralLinearGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X86784EDA80224B74">50.2-12 ProjectiveSpecialLinearGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7E471ADE7E095604">50.2-13 ProjectiveGeneralUnitaryGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7A88FE2B7EF9C804">50.2-14 ProjectiveSpecialUnitaryGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7DEDE2537B8FFFF5">50.2-15 ProjectiveSymplecticGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X87AAB20A8434356B">50.2-16 ProjectiveGeneralOrthogonalGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X835E0D3384C4AB6B">50.2-17 ProjectiveSpecialOrthogonalGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7F546F907A37DF15">50.2-18 ProjectiveOmega</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X824925DB7C3A2FA6">50.2-19 ProjectiveGeneralSemilinearGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X86BD9AE27CCAB1A6">50.2-20 ProjectiveSpecialSemilinearGroup</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap50.html#X85B9F2D379616C35">50.3 <span class="Heading">Conjugacy Classes in Classical Groups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X831789117E93171E">50.3-1 NrConjugacyClassesGL</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap50.html#X817EBD6E841285CD">50.4 <span class="Heading">Constructors for Basic Groups</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap50.html#X82676ED5826E9E2E">50.5 <span class="Heading">Selection Functions</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap50.html#X7A884ECF813C2026">50.6 <span class="Heading">Finite Perfect Groups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X866A25F882A4E97B">50.6-1 SizesPerfectGroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7906BBA7818E9415">50.6-2 <span class="Heading">PerfectGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7E1CB2D18085FF9D">50.6-3 PerfectIdentification</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7D68BE547FE5C0F5">50.6-4 NumberPerfectGroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X866356A684F6B15E">50.6-5 SizeNumbersPerfectGroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X845419F07BB92867">50.6-6 <span class="Heading">DisplayInformationPerfectGroups</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X875C5BE67BAB7F71">50.6-7 <span class="Heading">More about the Perfect Groups Library</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap50.html#X7873506D873EDB95">50.7 <span class="Heading">Irreducible Maximal Finite Integral Matrix Groups</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X8693FD647EF3C53B">50.7-1 ImfNumberQQClasses</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X8705F64B7E19DDC7">50.7-2 DisplayImfInvariants</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X8604A2167B2E8434">50.7-3 ImfInvariants</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X78935B307B909101">50.7-4 ImfMatrixGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X84BF34B27CD5E85C">50.7-5 IsomorphismPermGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50.html#X7CEDB6CE7BAC4518">50.7-6 IsomorphismPermGroupImfGroup</a></span>
</div></div>
</div>
<h3>50 <span class="Heading">Group Libraries</span></h3>
<p>When you start <strong class="pkg">GAP</strong>, it already knows several groups. Currently <strong class="pkg">GAP</strong> initially knows the following groups:</p>
<ul>
<li><p>some basic groups, such as cyclic groups or symmetric groups (see <a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>),</p>
</li>
<li><p>classical matrix groups (see <a href="chap50.html#X8674AAA578FE4AEE"><span class="RefLink">50.2</span></a>),</p>
</li>
<li><p>a library of transitive permutation groups, provided by the <strong class="pkg">TransGrp</strong> package (see <a href="../../pkg/transgrp/htm/CHAP001.htm#SECT001"><span class="RefLink">transgrp: Transitive Permutation Groups</span></a>),</p>
</li>
<li><p>a library of groups of small order, provided by the <strong class="pkg">SmallGrp</strong> package (see <a href="../../pkg/smallgrp/doc/chap1.html#X7C16EA1580AC7586"><span class="RefLink">smallgrp: The Small Groups Library</span></a>),</p>
</li>
<li><p>a libary of finite perfect groups, (see <a href="chap50.html#X7A884ECF813C2026"><span class="RefLink">50.6</span></a>),</p>
</li>
<li><p>a library of primitive permutations groups, provided by the <strong class="pkg">PrimGrp</strong> package (see <a href="../../pkg/primgrp/doc/chap1.html#X7AE00EA7791F2574"><span class="RefLink">primgrp: Primitive Permutation Groups</span></a>),</p>
</li>
<li><p>the irreducible solvable subgroups of <span class="SimpleMath">GL(n,q)</span> for <span class="SimpleMath">n>1</span>, <span class="SimpleMath">q</span> a prime power and <span class="SimpleMath">q^n < 2^24</span>, provided by the <strong class="pkg">IRREDSOL</strong> package (see <a href="../../pkg/irredsol/htm/CHAP001.htm"><span class="RefLink">irredsol: Overview</span></a>),</p>
</li>
<li><p>the irreducible maximal finite integral matrix groups of dimension at most 31 (see <a href="chap50.html#X7873506D873EDB95"><span class="RefLink">50.7</span></a>),</p>
</li>
<li><p>the crystallographic groups of dimension at most 4, provided by the <strong class="pkg">CrystCat</strong> package (see <a href="../../pkg/crystcat/htm/CHAP001.htm"><span class="RefLink">CrystCat: The Crystallographic Groups Catalog</span></a>).</p>
</li>
</ul>
<p>There is usually no relation between the groups in the different libraries and a group may occur in different libraries in different incarnations.</p>
<p>Note that a system administrator may choose to install all, or only a few, or even none of the libraries. So some of the libraries mentioned below may not be available on your installation.</p>
<p><strong class="pkg">GAP</strong> might use data libraries that are available to speed up calculations, for example in using a classification to determine that groups must be isomorphic, based on agreement of properties; or to determine maximal subgroups or subgroup maximality. This will be indicated by an info message of level 2 in the info class <code class="code">InfoPerformance</code>. If the calculation is to be independent of such data library use, for example if it is used to verify the data library, functions can be called with the option <code class="code">NoPrecomputedData</code>, to turn these features off. Doing so might cause significantly longer calculations, or even failure of certain calculations.</p>
<p><a id="X839981CC7D9B671B" name="X839981CC7D9B671B"></a></p>
<h4>50.1 <span class="Heading">Basic Groups</span></h4>
<p>There are several infinite families of groups which are parametrized by numbers. <strong class="pkg">GAP</strong> provides various functions to construct these groups. The functions always permit (but do not require) one to indicate a filter (see <a href="chap13.html#X84EFA4C07D4277BB"><span class="RefLink">13.2</span></a>), for example <code class="func">IsPermGroup</code> (<a href="chap43.html#X7879877482F59676"><span class="RefLink">43.1-1</span></a>), <code class="func">IsMatrixGroup</code> (<a href="chap44.html#X7E6093FF85F1C3A1"><span class="RefLink">44.1-1</span></a>) or <code class="func">IsPcGroup</code> (<a href="chap46.html#X7D1F506D7830B1D9"><span class="RefLink">46.3-1</span></a>), in which the group shall be constructed. There always is a default filter corresponding to a <q>natural</q> way to describe the group in question. Note that not every group can be constructed in every filter, there may be theoretical restrictions (<code class="func">IsPcGroup</code> (<a href="chap46.html#X7D1F506D7830B1D9"><span class="RefLink">46.3-1</span></a>) only works for solvable groups) or methods may be available only for a few filters.</p>
<p>Certain filters may admit additional hints. For example, groups constructed in <code class="func">IsMatrixGroup</code> (<a href="chap44.html#X7E6093FF85F1C3A1"><span class="RefLink">44.1-1</span></a>) may be constructed over a specified field, which can be given as second argument of the function that constructs the group; The default field is <code class="func">Rationals</code> (<a href="chap17.html#X7B6029D18570C08A"><span class="RefLink">17.1-1</span></a>).</p>
<p><a id="X8489BECB78664847" name="X8489BECB78664847"></a></p>
<h5>50.1-1 TrivialGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ TrivialGroup</code>( [<var class="Arg">filter</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs a trivial group in the category given by the filter <var class="Arg">filter</var>. If <var class="Arg">filter</var> is not given it defaults to <code class="func">IsPcGroup</code> (<a href="chap46.html#X7D1F506D7830B1D9"><span class="RefLink">46.3-1</span></a>). For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">TrivialGroup();</span>
<pc group of size 1 with 0 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">TrivialGroup( IsPermGroup );</span>
Group(())
</pre></div>
<p><a id="X7A7C473D87B31F3B" name="X7A7C473D87B31F3B"></a></p>
<h5>50.1-2 CyclicGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CyclicGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">n</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs the cyclic group of size <var class="Arg">n</var> in the category given by the filter <var class="Arg">filt</var>. If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsPcGroup</code> (<a href="chap46.html#X7D1F506D7830B1D9"><span class="RefLink">46.3-1</span></a>), unless <var class="Arg">n</var> equals <code class="func">infinity</code> (<a href="chap18.html#X8511B8DF83324C27"><span class="RefLink">18.2-1</span></a>), in which case the default filter is switched to <code class="func">IsFpGroup</code> (<a href="chap47.html#X850B9DF17D90C3A2"><span class="RefLink">47.1-2</span></a>). For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CyclicGroup(12);</span>
<pc group of size 12 with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">CyclicGroup(infinity);</span>
<free group on the generators [ a ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">CyclicGroup(IsPermGroup,12);</span>
Group([ (1,2,3,4,5,6,7,8,9,10,11,12) ])
<span class="GAPprompt">gap></span> <span class="GAPinput">matgrp1:= CyclicGroup( IsMatrixGroup, 12 );</span>
<matrix group of size 12 with 1 generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">FieldOfMatrixGroup( matgrp1 );</span>
Rationals
<span class="GAPprompt">gap></span> <span class="GAPinput">matgrp2:= CyclicGroup( IsMatrixGroup, GF(2), 12 );</span>
<matrix group of size 12 with 1 generator>
<span class="GAPprompt">gap></span> <span class="GAPinput">FieldOfMatrixGroup( matgrp2 );</span>
GF(2)
</pre></div>
<p><a id="X81CCC3BF8005A2D7" name="X81CCC3BF8005A2D7"></a></p>
<h5>50.1-3 AbelianGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AbelianGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">ints</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs an abelian group in the category given by the filter <var class="Arg">filt</var> which is of isomorphism type <span class="SimpleMath">C_{<var class="Arg">ints</var>[1]} × C_{<var class="Arg">ints</var>[2]} × ... × C_{<var class="Arg">ints</var>[n]}</span>, where <var class="Arg">ints</var> must be a list of non-negative integers or <code class="func">infinity</code> (<a href="chap18.html#X8511B8DF83324C27"><span class="RefLink">18.2-1</span></a>); for the latter value or 0, <span class="SimpleMath">C_{<var class="Arg">ints</var>[i]}</span> is taken as an infinite cyclic group, otherwise as a cyclic group of order <var class="Arg">ints</var>[i]. If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsPcGroup</code> (<a href="chap46.html#X7D1F506D7830B1D9"><span class="RefLink">46.3-1</span></a>), unless any 0 or <code class="code">infinity</code> is contained in <var class="Arg">ints</var>, in which the default filter is switched to <code class="func">IsFpGroup</code> (<a href="chap47.html#X850B9DF17D90C3A2"><span class="RefLink">47.1-2</span></a>). The generators of the group returned are the elements corresponding to the factors <span class="SimpleMath">C_{<var class="Arg">ints</var>[i]}</span> and hence the integers in <var class="Arg">ints</var>. For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">AbelianGroup([1,2,3]);</span>
<pc group of size 6 with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=AbelianGroup([0,3]);</span>
<fp group of size infinity on the generators [ f1, f2 ]>
<span class="GAPprompt">gap></span> <span class="GAPinput">AbelianInvariants(G);</span>
[ 0, 3 ]
</pre></div>
<p><a id="X8778256286E50743" name="X8778256286E50743"></a></p>
<h5>50.1-4 ElementaryAbelianGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ElementaryAbelianGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">n</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs the elementary abelian group of size <var class="Arg">n</var> in the category given by the filter <var class="Arg">filt</var>. If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsPcGroup</code> (<a href="chap46.html#X7D1F506D7830B1D9"><span class="RefLink">46.3-1</span></a>). For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ElementaryAbelianGroup(8192);</span>
<pc group of size 8192 with 13 generators>
</pre></div>
<p><a id="X7F43050D8587E767" name="X7F43050D8587E767"></a></p>
<h5>50.1-5 FreeAbelianGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FreeAbelianGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">rank</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs the free abelian group of rank <var class="Arg">n</var> in the category given by the filter <var class="Arg">filt</var>. If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsFpGroup</code> (<a href="chap47.html#X850B9DF17D90C3A2"><span class="RefLink">47.1-2</span></a>). For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">FreeAbelianGroup(4);</span>
<fp group of size infinity on the generators [ f1, f2, f3, f4 ]>
</pre></div>
<p><a id="X838DE1AB7B3D70FF" name="X838DE1AB7B3D70FF"></a></p>
<h5>50.1-6 DihedralGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DihedralGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">n</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs the dihedral group of size <var class="Arg">n</var> in the category given by the filter <var class="Arg">filt</var>. If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsPcGroup</code> (<a href="chap46.html#X7D1F506D7830B1D9"><span class="RefLink">46.3-1</span></a>), unless <var class="Arg">n</var> equals <code class="func">infinity</code> (<a href="chap18.html#X8511B8DF83324C27"><span class="RefLink">18.2-1</span></a>), in which case the default filter is switched to <code class="func">IsFpGroup</code> (<a href="chap47.html#X850B9DF17D90C3A2"><span class="RefLink">47.1-2</span></a>). For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">DihedralGroup(8);</span>
<pc group of size 8 with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">DihedralGroup( IsPermGroup, 8 );</span>
Group([ (1,2,3,4), (2,4) ])
<span class="GAPprompt">gap></span> <span class="GAPinput">DihedralGroup(infinity);</span>
<fp group of size infinity on the generators [ r, s ]>
</pre></div>
<p><a id="X8233A853818CAF33" name="X8233A853818CAF33"></a></p>
<h5>50.1-7 IsDihedralGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsDihedralGroup</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DihedralGenerators</code>( <var class="Arg">G</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="func">IsDihedralGroup</code> indicates whether the group <var class="Arg">G</var> is a dihedral group. If it is, methods may set the attribute <code class="func">DihedralGenerators</code> to [<var class="Arg">t</var>,<var class="Arg">s</var>], where <var class="Arg">t</var> and <var class="Arg">s</var> are two elements such that <var class="Arg">G</var> = <span class="SimpleMath">⟨ t, s | t^2 = s^n = 1, s^t = s^-1 ⟩</span>.</p>
<p><a id="X7E9844EF7C47EEB0" name="X7E9844EF7C47EEB0"></a></p>
<h5>50.1-8 DicyclicGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DicyclicGroup</code>( [<var class="Arg">filt</var>, [<var class="Arg">field</var>, ]]<var class="Arg">n</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">‣ QuaternionGroup</code>( [<var class="Arg">filt</var>, [<var class="Arg">field</var>, ]]<var class="Arg">n</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p><code class="func">DicyclicGroup</code> constructs the dicyclic group of size <var class="Arg">n</var> in the category given by the filter <var class="Arg">filt</var>. Here, <var class="Arg">n</var> must be a multiple of 4. The synonym <code class="func">QuaternionGroup</code> for <code class="func">DicyclicGroup</code> is provided for backward compatibility, but will print a warning if <var class="Arg">n</var> is not a power of <span class="SimpleMath">2</span>. If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsPcGroup</code> (<a href="chap46.html#X7D1F506D7830B1D9"><span class="RefLink">46.3-1</span></a>). For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>). Methods are also available for permutation and matrix groups (of minimal degree and minimal dimension in coprime characteristic).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">DicyclicGroup(24);</span>
<pc group of size 24 with 4 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=QuaternionGroup(IsMatrixGroup,CF(16),32);</span>
Group([ [ [ 0, 1 ], [ -1, 0 ] ], [ [ E(16), 0 ], [ 0, -E(16)^7 ] ] ])
</pre></div>
<p><a id="X7F260D177FD4BE4C" name="X7F260D177FD4BE4C"></a></p>
<h5>50.1-9 IsDicyclicGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsDicyclicGroup</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DicyclicGenerators</code>( <var class="Arg">G</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">‣ IsGeneralisedQuaternionGroup</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneralisedQuaternionGenerators</code>( <var class="Arg">G</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">‣ IsQuaternionGroup</code>( <var class="Arg">G</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ QuaternionGenerators</code>( <var class="Arg">G</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p><code class="func">IsDicyclicGroup</code> indicates whether the group <var class="Arg">G</var> is a dicyclic group of order <span class="SimpleMath">N = 4n</span>. If it is, methods may set the attribute <code class="func">DicyclicGenerators</code> to <span class="SimpleMath">[ t, s ]</span>, where <span class="SimpleMath">t</span> and <span class="SimpleMath">s</span> are two elements such that <var class="Arg">G</var> = <span class="SimpleMath">⟨ t, s | s^2n = 1, t^2 = s^n, s^t = s^-1 ⟩</span> holds.</p>
<p><code class="func">IsGeneralisedQuaternionGroup</code> indicates whether <var class="Arg">G</var> is a generalized quaternion group, i. e., a dicyclic group of <span class="SimpleMath">2</span>-power order. If it is, methods may set the attribute <code class="func">GeneralisedQuaternionGenerators</code> to the value of <code class="func">DicyclicGenerators</code> for <var class="Arg">G</var>.</p>
<p><code class="func">IsQuaternionGroup</code> and <code class="func">QuaternionGenerators</code> are provided for backwards compatibility with existing code.</p>
<p><a id="X86E76B3A796BEFA8" name="X86E76B3A796BEFA8"></a></p>
<h5>50.1-10 ExtraspecialGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ExtraspecialGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">order</var>, <var class="Arg">exp</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Let <var class="Arg">order</var> be of the form <span class="SimpleMath">p^{2n+1}</span>, for a prime integer <span class="SimpleMath">p</span> and a positive integer <span class="SimpleMath">n</span>. <code class="func">ExtraspecialGroup</code> returns the extraspecial group of order <var class="Arg">order</var> that is determined by <var class="Arg">exp</var>, in the category given by the filter <var class="Arg">filt</var>.</p>
<p>If <span class="SimpleMath">p</span> is odd then admissible values of <var class="Arg">exp</var> are the exponent of the group (either <span class="SimpleMath">p</span> or <span class="SimpleMath">p^2</span>) or one of <code class="code">'+'</code>, <code class="code">"+"</code>, <code class="code">'-'</code>, <code class="code">"-"</code>. For <span class="SimpleMath">p = 2</span>, only the above plus or minus signs are admissible.</p>
<p>If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsPcGroup</code> (<a href="chap46.html#X7D1F506D7830B1D9"><span class="RefLink">46.3-1</span></a>). For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ExtraspecialGroup( 27, 3 );</span>
<pc group of size 27 with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">ExtraspecialGroup( 27, '+' );</span>
<pc group of size 27 with 3 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">ExtraspecialGroup( 8, "-" );</span>
<pc group of size 8 with 3 generators>
</pre></div>
<p><a id="X7E54D3E778E6A53E" name="X7E54D3E778E6A53E"></a></p>
<h5>50.1-11 <span class="Heading">AlternatingGroup</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AlternatingGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">deg</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">‣ AlternatingGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">dom</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs the alternating group of degree <var class="Arg">deg</var> in the category given by the filter <var class="Arg">filt</var>. If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsPermGroup</code> (<a href="chap43.html#X7879877482F59676"><span class="RefLink">43.1-1</span></a>). For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>). In the second version, the function constructs the alternating group on the points given in the set <var class="Arg">dom</var> which must be a set of positive integers.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">AlternatingGroup(5);</span>
Alt( [ 1 .. 5 ] )
</pre></div>
<p><a id="X858666F97BD85ABB" name="X858666F97BD85ABB"></a></p>
<h5>50.1-12 <span class="Heading">SymmetricGroup</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SymmetricGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">deg</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">‣ SymmetricGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">dom</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs the symmetric group of degree <var class="Arg">deg</var> in the category given by the filter <var class="Arg">filt</var>. If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsPermGroup</code> (<a href="chap43.html#X7879877482F59676"><span class="RefLink">43.1-1</span></a>). For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>). In the second version, the function constructs the symmetric group on the points given in the set <var class="Arg">dom</var> which must be a set of positive integers.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">SymmetricGroup(10);</span>
Sym( [ 1 .. 10 ] )
</pre></div>
<p>Note that permutation groups provide special treatment of symmetric and alternating groups, see <a href="chap43.html#X834208CD7C2956A3"><span class="RefLink">43.4</span></a>.</p>
<p><a id="X788FA7DE84E0FE6A" name="X788FA7DE84E0FE6A"></a></p>
<h5>50.1-13 MathieuGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MathieuGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">degree</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs the Mathieu group of degree <var class="Arg">degree</var> in the category given by the filter <var class="Arg">filt</var>, where <var class="Arg">degree</var> must be in the set <span class="SimpleMath">{ 9, 10, 11, 12, 21, 22, 23, 24 }</span>. If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsPermGroup</code> (<a href="chap43.html#X7879877482F59676"><span class="RefLink">43.1-1</span></a>). For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">MathieuGroup( 11 );</span>
Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6) ])
</pre></div>
<p><a id="X8469DBBF82F8E5C3" name="X8469DBBF82F8E5C3"></a></p>
<h5>50.1-14 SuzukiGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SuzukiGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">q</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">‣ Sz</code>( [<var class="Arg">filt</var>, ]<var class="Arg">q</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Constructs a group isomorphic to the Suzuki group Sz( <var class="Arg">q</var> ) over the field with <var class="Arg">q</var> elements, where <var class="Arg">q</var> is a non-square power of <span class="SimpleMath">2</span>.</p>
<p>If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsMatrixGroup</code> (<a href="chap44.html#X7E6093FF85F1C3A1"><span class="RefLink">44.1-1</span></a>), and the returned group is the Suzuki group itself. For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">SuzukiGroup( 32 );</span>
Sz(32)
</pre></div>
<p><a id="X87E5B0F679CA7FE4" name="X87E5B0F679CA7FE4"></a></p>
<h5>50.1-15 ReeGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ReeGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">q</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">‣ Ree</code>( [<var class="Arg">filt</var>, ]<var class="Arg">q</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Constructs a group isomorphic to the Ree group <span class="SimpleMath">^2G_2(q)</span> where <span class="SimpleMath">q = 3^{1+2m}</span> for <span class="SimpleMath">m</span> a non-negative integer.</p>
<p>If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsMatrixGroup</code> (<a href="chap44.html#X7E6093FF85F1C3A1"><span class="RefLink">44.1-1</span></a>) and the generating matrices are based on <a href="chapBib.html#biBKLM01">[KLM01]</a>. (No particular choice of a generating set is guaranteed.) For more information on possible values of <var class="Arg">filt</var> see section (<a href="chap50.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ReeGroup( 27 );</span>
Ree(27)
</pre></div>
<p><a id="X7D0FFDA4793995FC" name="X7D0FFDA4793995FC"></a></p>
<h5>50.1-16 <span class="Heading">Generator Names</span></h5>
<p>For groups created as finitely presented groups, including polycyclic groups, the generators are labelled, by default, with a letter and a number. It is possible to influence this naming with the option <code class="code">generatorNames</code>, see Section <a href="chap4.html#X867D54987EF86D1D"><span class="RefLink">4.12-2</span></a>. If this option holds a string, then the generators are named with this string and sequential numbers starting with <code class="code">1</code>. If this option holds a list of sufficient length consisting of nonempty strings, then the generator names are taken from this list, in order.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfGroup(AbelianGroup([5,7]));</span>
[ f1, f2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfGroup(AbelianGroup([5,7]:generatorNames:="a"));</span>
[ a1, a2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneratorsOfGroup(AbelianGroup([5,7]:generatorNames:=["u","v","w"]));</span>
[ u, v ]
<span class="GAPprompt">gap></span> <span class="GAPinput">AsSSortedList(DihedralGroup(12:generatorNames:="a"));</span>
[ <identity> of ..., a1, a2, a3, a1*a2, a1*a3, a2*a3, a3^2, a1*a2*a3,
a1*a3^2, a2*a3^2, a1*a2*a3^2 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">AsSSortedList(DihedralGroup(12:generatorNames:=["a","b","c"]));</span>
[ <identity> of ..., a, b, c, a*b, a*c, b*c, c^2, a*b*c, a*c^2, b*c^2,
a*b*c^2 ]
</pre></div>
<p><a id="X8674AAA578FE4AEE" name="X8674AAA578FE4AEE"></a></p>
<h4>50.2 <span class="Heading">Classical Groups</span></h4>
<p>The following functions return classical groups.</p>
<p>For the linear, symplectic, and unitary groups (the latter in dimension at least <span class="SimpleMath">3</span>), the generators are taken from <a href="chapBib.html#biBTay87">[Tay87]</a>. For the unitary groups in dimension <span class="SimpleMath">2</span>, the isomorphism of SU<span class="SimpleMath">(2,q)</span> and SL<span class="SimpleMath">(2,q)</span> is used, see for example <a href="chapBib.html#biBHup67">[Hup67]</a>.</p>
<p>The generators of the general and special orthogonal groups are taken from <a href="chapBib.html#biBIshibashiEarnest94">[IE94]</a> and <a href="chapBib.html#biBKleidmanLiebeck90">[KL90]</a>, except that the generators of the groups in odd dimension in even characteristic are constructed via the isomorphism to a symplectic group, see for example <a href="chapBib.html#biBCar72a">[Car72]</a>.</p>
<p>The generators of the groups <span class="SimpleMath">Ω^ϵ(d, q)</span> are taken from <a href="chapBib.html#biBRylandsTalor98">[RT98]</a>, except that in odd dimension and even characteristic, the generators of SO<span class="SimpleMath">(d, q)</span> are taken for <span class="SimpleMath">Ω(d, q)</span>. Note that the generators claimed in <a href="chapBib.html#biBRylandsTalor98">[RT98, Section 4.5 and 4.6]</a> do not describe orthogonal groups, one would have to transpose these matrices in order to get groups that respect the required forms. The matrices from <a href="chapBib.html#biBRylandsTalor98">[RT98]</a> generate groups of the right isomorphism types but not orthogonal groups, except in the case <span class="SimpleMath">(d,q) = (5,2)</span>, where the matrices from <a href="chapBib.html#biBRylandsTalor98">[RT98]</a> generate the simple group <span class="SimpleMath">S_4(2)' and not the group S_4(2).
<p>The generators for the semilinear groups are constructed from the generators of the corresponding linear groups plus one additional generator that describes the action of the group of field automorphisms; for prime integers <span class="SimpleMath">p</span> and positive integers <span class="SimpleMath">f</span>, this yields the matrix groups <span class="SimpleMath">Gamma</span>L<span class="SimpleMath">(d, p^f)</span> and <span class="SimpleMath">Sigma</span>L<span class="SimpleMath">(d, p^f)</span> as groups of <span class="SimpleMath">d f × df</span> matrices over the field with <span class="SimpleMath">p</span> elements.</p>
<p>For symplectic and orthogonal matrix groups returned by the functions described below, the invariant bilinear form is stored as the value of the attribute <code class="func">InvariantBilinearForm</code> (<a href="chap44.html#X7C08385A81AB05E1"><span class="RefLink">44.5-1</span></a>). Analogously, the invariant sesquilinear form defining the unitary groups is stored as the value of the attribute <code class="func">InvariantSesquilinearForm</code> (<a href="chap44.html#X82F22079852130C9"><span class="RefLink">44.5-3</span></a>)). The defining quadratic form of orthogonal groups is stored as the value of the attribute <code class="func">InvariantQuadraticForm</code> (<a href="chap44.html#X7BCACC007EB9B613"><span class="RefLink">44.5-5</span></a>).</p>
<p>Note that due to the different sources for the generators, the invariant forms for the groups <span class="SimpleMath">Ω(e,d,q)</span> are in general different from the forms for SO<span class="SimpleMath">(e,d,q)</span> and GO<span class="SimpleMath">(e,d,q)</span>. If version at least 1.2.6 of the <strong class="pkg">Forms</strong> package is loaded then compatible groups can be created by specifying the desired form, see the sections below.</p>
<p><a id="X85D607DD82AF3E27" name="X85D607DD82AF3E27"></a></p>
<h5>50.2-1 <span class="Heading">GeneralLinearGroup</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneralLinearGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">R</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">‣ GL</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">R</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">‣ GeneralLinearGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">q</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">‣ GL</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">q</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>The first two forms construct a group isomorphic to the general linear group GL( <var class="Arg">d</var>, <var class="Arg">R</var> ) of all <span class="SimpleMath"><var class="Arg">d</var> × <var class="Arg">d</var></span> matrices that are invertible over the ring <var class="Arg">R</var>, in the category given by the filter <var class="Arg">filt</var>.</p>
<p>The third and the fourth form construct the general linear group over the finite field with <var class="Arg">q</var> elements.</p>
<p>If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsMatrixGroup</code> (<a href="chap44.html#X7E6093FF85F1C3A1"><span class="RefLink">44.1-1</span></a>), and the returned group is the general linear group as a matrix group in its natural action (see also <code class="func">IsNaturalGL</code> (<a href="chap44.html#X86F9A27D7AFAEB5A"><span class="RefLink">44.4-2</span></a>), <code class="func">IsNaturalGLnZ</code> (<a href="chap44.html#X86F9CC1E7DB97CB6"><span class="RefLink">44.6-4</span></a>)).</p>
<p>Currently supported rings <var class="Arg">R</var> are finite fields, the ring <code class="func">Integers</code> (<a href="chap14.html#X7E20D82B79DE5129"><span class="RefLink">14.1-1</span></a>), and residue class rings <code class="code">Integers mod <var class="Arg">m</var></code>, see <a href="chap14.html#X864BF040862409FC"><span class="RefLink">14.5</span></a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">GL(4,3);</span>
GL(4,3)
<span class="GAPprompt">gap></span> <span class="GAPinput">GL(2,Integers);</span>
GL(2,Integers)
<span class="GAPprompt">gap></span> <span class="GAPinput">GL(3,Integers mod 12);</span>
GL(3,Z/12Z)
</pre></div>
<p>Using the <code class="func">OnLines</code> (<a href="chap41.html#X86DC2DD5829CAD9A"><span class="RefLink">41.2-12</span></a>) operation it is possible to obtain the corresponding projective groups in a permutation action:</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=GL(4,3);;Size(g);</span>
24261120
<span class="GAPprompt">gap></span> <span class="GAPinput">pgl:=Action(g,Orbit(g,Z(3)^0*[1,0,0,0],OnLines),OnLines);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Size(pgl);</span>
12130560
</pre></div>
<p>If you are interested only in the projective group as a permutation group and not in the correspondence between its moved points and the points in the projective space, you can also use <code class="func">PGL</code> (<a href="chap50.html#X7F0DBEB880D2D574"><span class="RefLink">50.2-11</span></a>).</p>
<p><a id="X7CA3F7BF83992C6B" name="X7CA3F7BF83992C6B"></a></p>
<h5>50.2-2 <span class="Heading">SpecialLinearGroup</span></h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SpecialLinearGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">R</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">‣ SL</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">R</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">‣ SpecialLinearGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">q</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">‣ SL</ | |