Quelle chap50_mj.html
Sprache: HTML
|
|
| products/sources/formale Sprachen/GAP/doc/ref/chap50_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= "https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</ script>
< 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_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="chap49_mj.html">[Previous Chapter]</a> <a href="chap51_mj.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap50.html">[MathJax off]</a></p>
<p><a id="X81B00B667D2BD022" name="X81B00B667D2BD022"></a></p>
<div class="ChapSects"><a href="chap50_mj.html#X81B00B667D2BD022">50 <span class="Heading">Group Libraries</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap50_mj.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_mj.html#X8489BECB78664847">50.1-1 TrivialGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7A7C473D87B31F3B">50.1-2 CyclicGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X81CCC3BF8005A2D7">50.1-3 AbelianGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X8778256286E50743">50.1-4 ElementaryAbelianGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7F43050D8587E767">50.1-5 FreeAbelianGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X838DE1AB7B3D70FF">50.1-6 DihedralGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X8233A853818CAF33">50.1-7 IsDihedralGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7E9844EF7C47EEB0">50.1-8 DicyclicGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7F260D177FD4BE4C">50.1-9 IsDicyclicGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X86E76B3A796BEFA8">50.1-10 ExtraspecialGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7E54D3E778E6A53E">50.1-11 <span class="Heading">AlternatingGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X858666F97BD85ABB">50.1-12 <span class="Heading">SymmetricGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X788FA7DE84E0FE6A">50.1-13 MathieuGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X8469DBBF82F8E5C3">50.1-14 SuzukiGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X87E5B0F679CA7FE4">50.1-15 ReeGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.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_mj.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_mj.html#X85D607DD82AF3E27">50.2-1 <span class="Heading">GeneralLinearGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7CA3F7BF83992C6B">50.2-2 <span class="Heading">SpecialLinearGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X866D4E2B816BDFA5">50.2-3 GeneralUnitaryGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X82A2AADE805DCDE9">50.2-4 SpecialUnitaryGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X8142A8B07811CA90">50.2-5 <span class="Heading">SymplecticGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7C2051CB7B94CEB1">50.2-6 GeneralOrthogonalGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X78D4EEF27AA2DCFD">50.2-7 SpecialOrthogonalGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X8365E0AB8338DA3F">50.2-8 Omega</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X79C3C61A7D83A6D0">50.2-9 GeneralSemilinearGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7D3779237CB5B49C">50.2-10 SpecialSemilinearGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7F0DBEB880D2D574">50.2-11 ProjectiveGeneralLinearGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X86784EDA80224B74">50.2-12 ProjectiveSpecialLinearGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7E471ADE7E095604">50.2-13 ProjectiveGeneralUnitaryGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7A88FE2B7EF9C804">50.2-14 ProjectiveSpecialUnitaryGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7DEDE2537B8FFFF5">50.2-15 ProjectiveSymplecticGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X87AAB20A8434356B">50.2-16 ProjectiveGeneralOrthogonalGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X835E0D3384C4AB6B">50.2-17 ProjectiveSpecialOrthogonalGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7F546F907A37DF15">50.2-18 ProjectiveOmega</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X824925DB7C3A2FA6">50.2-19 ProjectiveGeneralSemilinearGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X86BD9AE27CCAB1A6">50.2-20 ProjectiveSpecialSemilinearGroup</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap50_mj.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_mj.html#X831789117E93171E">50.3-1 NrConjugacyClassesGL</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap50_mj.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_mj.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_mj.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_mj.html#X866A25F882A4E97B">50.6-1 SizesPerfectGroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7906BBA7818E9415">50.6-2 <span class="Heading">PerfectGroup</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7E1CB2D18085FF9D">50.6-3 PerfectIdentification</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X7D68BE547FE5C0F5">50.6-4 NumberPerfectGroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X866356A684F6B15E">50.6-5 SizeNumbersPerfectGroups</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X845419F07BB92867">50.6-6 <span class="Heading">DisplayInformationPerfectGroups</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.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_mj.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_mj.html#X8693FD647EF3C53B">50.7-1 ImfNumberQQClasses</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X8705F64B7E19DDC7">50.7-2 DisplayImfInvariants</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X8604A2167B2E8434">50.7-3 ImfInvariants</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X78935B307B909101">50.7-4 ImfMatrixGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.html#X84BF34B27CD5E85C">50.7-5 IsomorphismPermGroup</a></span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap50_mj.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_mj.html#X839981CC7D9B671B"><span class="RefLink">50.1</span></a>),</p>
</li>
<li><p>classical matrix groups (see <a href="chap50_mj.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_mj.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_mj.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_mj.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_mj.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_mj.html#X84EFA4C07D4277BB"><span class="RefLink">13.2</span></a>), for example <code class="func">IsPermGroup</code> (<a href="chap43_mj.html#X7879877482F59676"><span class="RefLink">43.1-1</span></a>), <code class="func">IsMatrixGroup</code> (<a href="chap44_mj.html#X7E6093FF85F1C3A1"><span class="RefLink">44.1-1</span></a>) or <code class="func">IsPcGroup</code> (<a href="chap46_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_{{\textit{ints}[1]}} \times C_{{\textit{ints}[2]}} \times \ldots \times C_{{\textit{ints}[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_mj.html#X8511B8DF83324C27"><span class="RefLink">18.2-1</span></a>); for the latter value or 0, <span class="SimpleMath">\(C_{{\textit{ints}[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_mj.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_mj.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_{{\textit{ints}[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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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">\(\langle t, s | t^2 = s^n = 1, s^t = s^{-1} \rangle\)</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_mj.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_mj.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">\(\langle t, s | s^{2n} = 1, t^2 = s^n, s^t = s^{-1} \rangle\)</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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.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_mj.html#X7E6093FF85F1C3A1"><span class="RefLink">44.1-1</span></a>) and the generating matrices are based on <a href="chapBib_mj.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_mj.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_mj.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_mj.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_mj.html#biBHup67">[Hup67]</a>.</p>
<p>The generators of the general and special orthogonal groups are taken from <a href="chapBib_mj.html#biBIshibashiEarnest94">[IE94]</a> and <a href="chapBib_mj.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_mj.html#biBCar72a">[Car72]</a>.</p>
<p>The generators of the groups <span class="SimpleMath">\(\Omega^\epsilon(d, q)\)</span> are taken from <a href="chapBib_mj.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">\(\Omega(d, q)\)</span>. Note that the generators claimed in <a href="chapBib_mj.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_mj.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_mj.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 \times 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_mj.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_mj.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_mj.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">\(\Omega(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">\(\textit{d} \times \textit{d}\)</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_mj.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_mj.html#X86F9A27D7AFAEB5A"><span class="RefLink">44.4-2</span></a>), <code class="func">IsNaturalGLnZ</code> (<a href="chap44_mj.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_mj.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_mj.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_mj.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_mj.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</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 special linear group SL( <var class="Arg">d</var>, <var class="Arg">R</var> ) of all those <span class="SimpleMath">\(\textit{d} \times \textit{d}\)</span> matrices over the ring <var class="Arg">R</var> whose determinant is the identity of <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 special 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_mj.html#X7E6093FF85F1C3A1"><span class="RefLink">44.1-1</span></a>), and the returned group is the special linear group as a matrix group in its natural action (see also <code class="func">IsNaturalSL</code> (<a href="chap44_mj.html#X84134F08781EB943"><span class="RefLink">44.4-4</span></a>), <code class="func">IsNaturalSLnZ</code> (<a href="chap44_mj.html#X7B0E70127F5D2EAF"><span class="RefLink">44.6-5</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_mj.html#X853DF11B80068ED5"><span class="RefLink">14</span></a>), and residue class rings <code class="code">Integers mod <var class="Arg">m</var></code>, see <a href="chap14_mj.html#X864BF040862409FC"><span class="RefLink">14.5</span></a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">SpecialLinearGroup(2,2);</span>
SL(2,2)
<span class="GAPprompt">gap></span> <span class="GAPinput">SL(3,Integers);</span>
SL(3,Integers)
<span class="GAPprompt">gap></span> <span class="GAPinput">SL(4,Integers mod 4);</span>
SL(4,Z/4Z)
</pre></div>
<p><a id="X866D4E2B816BDFA5" name="X866D4E2B816BDFA5"></a></p>
<h5>50.2-3 GeneralUnitaryGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeneralUnitaryGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">q</var>[, <var class="Arg">form</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">‣ GeneralUnitaryGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">form</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">‣ GU</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">q</var>[, <var class="Arg">form</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">‣ GU</code>( [<var class="Arg">filt</var>, ]<var class="Arg">form</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs a group isomorphic to the general unitary group GU( <var class="Arg">d</var>, <var class="Arg">q</var> ) of those <span class="SimpleMath">\(\textit{d} \times \textit{d}\)</span> matrices over the field with <span class="SimpleMath">\(\textit{q}^2\)</span> elements that respect a fixed nondegenerate sesquilinear form, in the category given by the filter <var class="Arg">filt</var>.</p>
<p>If <var class="Arg">filt</var> is not given it defaults to <code class="func">IsMatrixGroup</code> (<a href="chap44_mj.html#X7E6093FF85F1C3A1"><span class="RefLink">44.1-1</span></a>), and the returned group is the general unitary group itself.</p>
<p>If version at least 1.2.6 of the <strong class="pkg">Forms</strong> package is loaded then the desired sesquilinear form can be specified via <var class="Arg">form</var>, which can be either a matrix or a form object in <code class="func">IsHermitianForm</code> (<a href="../../pkg/forms/doc/chap4_mj.html#X7FA162E5874E8330"><span class="RefLink">Forms: IsHermitianForm</span></a>) or a group with stored <code class="func">InvariantSesquilinearForm</code> (<a href="chap44_mj.html#X82F22079852130C9"><span class="RefLink">44.5-3</span></a>) value (and then this form is taken).</p>
<p>A given <var class="Arg">form</var> determines <var class="Arg">d</var>, and also <var class="Arg">q</var> except if <var class="Arg">form</var> is a matrix that does not store its <code class="func">BaseDomain</code> (<a href="chap26_mj.html#X8662026C7CCDB446"><span class="RefLink">26.3-1</span></a>) value. These parameters can be entered, and an error is signalled if they do not fit to the given <var class="Arg">form</var>.</p>
<p>If <var class="Arg">form</var> is not given then a default is chosen as described in the introduction to Section <a href="chap50_mj.html#X8674AAA578FE4AEE"><span class="RefLink">50.2</span></a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneralUnitaryGroup( 3, 5 );</span>
GU(3,5)
<span class="GAPprompt">gap></span> <span class="GAPinput">GeneralUnitaryGroup( IsPermGroup, 3, 5 );</span>
Perm_GU(3,5)
</pre></div>
<p><a id="X82A2AADE805DCDE9" name="X82A2AADE805DCDE9"></a></p>
<h5>50.2-4 SpecialUnitaryGroup</h5>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SpecialUnitaryGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">q</var>[, <var class="Arg">form</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">‣ SpecialUnitaryGroup</code>( [<var class="Arg">filt</var>, ]<var class="Arg">form</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">‣ SU</code>( [<var class="Arg">filt</var>, ]<var class="Arg">d</var>, <var class="Arg">q</var>[, <var class="Arg">form</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">‣ SU</code>( [<var class="Arg">filt</var>, ]<var class="Arg">form</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>constructs a group isomorphic to the special unitary group SU( <var class="Arg">d</var>, <var class="Arg">q</var> ) of those <span class="SimpleMath">\(\textit{d} \times \textit{d}\)</span> matrices over the field with < | |