Quelle chap1_mj.html
Sprache: HTML
|
|
| products/sources/formale Sprachen/GAP/pkg/ctbllib/doc2/chap1_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 (CTblLibXpls) - Chapter 1: Maintenance Issues for the GAP Character Table Library</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="chap1" 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="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="chap0_mj.html">[Previous Chapter]</a> <a href="chap2_mj.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap1.html">[MathJax off]</a></p>
<p><a id="X8354C98179CDB193" name="X8354C98179CDB193"></a></p>
<div class="ChapSects"><a href="chap1_mj.html#X8354C98179CDB193">1 <span class="Heading">Maintenance Issues for the <strong class="pkg">GAP</strong> Character Table Library</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1_mj.html#X7ECA800587320C2C">1.1 <span class="Heading">Disproving Possible Character Tables (November 2006)</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X795DCCEA7F4D187A">1.1-1 <span class="Heading">A Perfect Pseudo Character Table (November 2006)</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X80F0B4E07B0B2277">1.1-2 <span class="Heading">An Error in the Character Table of <span class="SimpleMath">\(E_6(2)\)</span> (March 2016)</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X7D7982CD87413F76">1.1-3 <span class="Heading">An Error in a Power Map of the Character Table of <span class="SimpleMath">\(2.F_4(2).2\)</span> (November 2015)</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X836E4B6184F32EF5">1.1-4 <span class="Heading">A Character Table with a Wrong Name (May 2017)</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1_mj.html#X8159D79C7F071B33">1.2 <span class="Heading">Some finite factor groups of perfect space groups (February 2014)</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X8710D4947AEB366F">1.2-1 <span class="Heading">Constructing the space groups in question</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X84E7FE70843422B0">1.2-2 <span class="Heading">Constructing the factor groups in question</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X79109A20873E76DA">1.2-3 <span class="Heading">Examples with point group <span class="SimpleMath">\(A_5\)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X83523D1E792F9E01">1.2-4 <span class="Heading">Examples with point group <span class="SimpleMath">\(L_3(2)\)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X7A01A9BC846BE39A">1.2-5 <span class="Heading">Example with point group SL<span class="SimpleMath">\(_2(7)\)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X7D3100B58093F37D">1.2-6 <span class="Heading">Example with point group <span class="SimpleMath">\(2^3.L_3(2)\)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X80800F3B7D6EF06C">1.2-7 <span class="Heading">Examples with point group <span class="SimpleMath">\(A_6\)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X7D43452C79B0EAE1">1.2-8 <span class="Heading">Examples with point group <span class="SimpleMath">\(L_2(8)\)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X8575CE147A9819BF">1.2-9 <span class="Heading">Example with point group <span class="SimpleMath">\(M_{11}\)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X7C0201B77DA1682A">1.2-10 <span class="Heading">Example with point group <span class="SimpleMath">\(U_3(3)\)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X85D9C329792E58F3">1.2-11 <span class="Heading">Examples with point group <span class="SimpleMath">\(U_4(2)\)</span></span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X8635EE0B78A66120">1.2-12 <span class="Heading">A remark on one of the example groups</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1_mj.html#X8448022280E82C52">1.3 <span class="Heading">Generality problems (December 2004/October 2015)</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X7D1A66C3844D09B1">1.3-1 <span class="Heading">Listing possible generality problems</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X80EB5D827A78975A">1.3-2 <span class="Heading">A generality problem concerning the group <span class="SimpleMath">\(J_3\)</span> (April 2015)</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X82C37532783168AA">1.3-3 <span class="Heading">A generality problem concerning the group <span class="SimpleMath">\(HN\)</span> (August 2022)</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1_mj.html#X7D8C6D1883C9CECA">1.4 <span class="Heading">Brauer Tables that can be derived from Known Tables</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X7DF018B77E722CA7">1.4-1 <span class="Heading">Brauer Tables via Construction Information</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X795419A287BD228E">1.4-2 <span class="Heading">Liftable Brauer Characters (May 2017)</span></a>
</span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1_mj.html#X864EFF897A854F89">1.5 <span class="Heading">Information about certain subgroups of the Monster group</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X82C7A03684DD7C6E">1.5-1 <span class="Heading">The Monster group does not contain subgroups of the type <span class="SimpleMath">\(2.U_4(2)\)</span> (August 2023)</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X87EC0C48866D1BDE">1.5-2 <span class="Heading">Perfect central extensions of <span class="SimpleMath">\(L_3(4)\)</span> (August 2023)</span></a>
</span>
<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X7F605CA28441687F">1.5-3 <span class="Heading">The character table of <span class="SimpleMath">\((2 \times O_8^+(3)).S_4 \leq 2.B\)</span> (October 2023)</span></a>
</span>
</div></div>
</div>
<h3>1 <span class="Heading">Maintenance Issues for the <strong class="pkg">GAP</strong> Character Table Library</span></h3>
<p>This chapter collects examples of computations that arose in the context of maintaining the <strong class="pkg">GAP</strong> Character Table Library. The sections have been added when the issues in question arose; the dates of the additions are shown in the section titles.</p>
<p><a id="X7ECA800587320C2C" name="X7ECA800587320C2C"></a></p>
<h4>1.1 <span class="Heading">Disproving Possible Character Tables (November 2006)</span></h4>
<p>I do not know a necessary and sufficient criterion for checking whether a given matrix together with a list of power maps describes the character table of a finite group. Examples of <em>pseudo character tables</em> (tables which satisfy certain necessary conditions but for which actually no group exists) have been given in <a href="chapBib_mj.html#biBGag86">[Gag86]</a>. Another such example is described in Section <a href="chap2_mj.html#X7E0C603880157C4E"><span class="RefLink">2.4-17</span></a>. The tables in the <strong class="pkg">GAP</strong> Character Table Library satisfy the usual tests. However, there are table candidates for which these tests are not good enough. Another question would be whether a given character table belongs to the group for which it is claimed to belong, see Section <a href="chap1_mj.html#X836E4B6184F32EF5"><span class="RefLink">1.1-4</span></a> for an example.</p>
<p><a id="X795DCCEA7F4D187A" name="X795DCCEA7F4D187A"></a></p>
<h5>1.1-1 <span class="Heading">A Perfect Pseudo Character Table (November 2006)</span></h5>
<p>(This example arose from a discussion with Jack Schmidt.)</p>
<p>Up to version 1.1.3 of the <strong class="pkg">GAP</strong> Character Table Library, the table with identifier <code class="code">"P41/G1/L1/V4/ext2"</code> was not correct. The problem occurs already in the microfiches that are attached to <a href="chapBib_mj.html#biBHP89">[HP89]</a>.</p>
<p>In the following, we show that this table is not the character table of a finite group, using the <strong class="pkg">GAP</strong> library of perfect groups. Currently we do not know how to prove this inconsistency alone from the table.</p>
<p>We start with the construction of the inconsistent table; apart from a little editing, the following input equals the data formerly stored in the file <code class="file">data/ctoholpl.tbl</code> of the <strong class="pkg">GAP</strong> Character Table Library.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">tbl:= rec(</span>
<span class="GAPprompt">></span> <span class="GAPinput"> Identifier:= "P41/G1/L1/V4/ext2",</span>
<span class="GAPprompt">></span> <span class="GAPinput"> InfoText:= Concatenation( [</span>
<span class="GAPprompt">></span> <span class="GAPinput"> "origin: Hanrath library,\n",</span>
<span class="GAPprompt">></span> <span class="GAPinput"> "structure is 2^7.L2(8),\n",</span>
<span class="GAPprompt">></span> <span class="GAPinput"> "characters sorted with permutation (12,14,15,13)(19,20)" ] ),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> UnderlyingCharacteristic:= 0,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> SizesCentralizers:= [64512,1024,1024,64512,64,64,64,64,128,128,64,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> 64,128,128,18,18,14,14,14,14,14,14,18,18,18,18,18,18],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> ComputedPowerMaps:= [,[1,1,1,1,2,3,3,2,3,2,2,1,3,2,16,16,20,20,22,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> 22,18,18,26,26,27,27,23,23],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,4,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> 1,21,22,17,18,19,20,16,15,15,16,16,15],,,,[1,2,3,4,5,6,7,8,9,10,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> 11,12,13,14,15,16,4,1,4,1,4,1,26,25,28,27,23,24]],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> Irr:= 0,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> AutomorphismsOfTable:= Group( [(23,26,27)(24,25,28),(9,13)(10,14),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> (17,19,21)(18,20,22)] ),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> ConstructionInfoCharacterTable:= ["ConstructClifford",[[[1,2,3,4,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> 5,6,7,8,9],[1,7,8,3,9,2],[1,4,5,6,2],[1,2,2,2,2,2,2,2]],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [["L2(8)"],["Dihedral",18],["Dihedral",14],["2^3"]],[[[1,2,3,4],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [1,1,1,1],["elab",4,25]],[[1,2,3,4,4,4,4,4,4,4],[2,6,5,2,3,4,5,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> 6,7,8],["elab",10,17]],[[1,2],[3,4],[[1,1],[-1,1]]],[[1,3],[4,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> 2],[[1,1],[-1,1]]],[[1,3],[5,3],[[1,1],[-1,1]]],[[1,3],[6,4],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [[1,1],[-1,1]]],[[1,2],[7,2],[[1,1],[1,-1]]],[[1,2],[8,3],[[1,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> 1],[-1,1]]],[[1,2],[9,5],[[1,1],[1,-1]]]]]],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ConstructClifford( tbl, tbl.ConstructionInfoCharacterTable[2] );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ConvertToLibraryCharacterTableNC( tbl );;</span>
</pre></div>
<p>Suppose that there is a group <span class="SimpleMath">\(G\)</span>, say, with this table. Then <span class="SimpleMath">\(G\)</span> is perfect since the table has only one linear character.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length( LinearCharacters( tbl ) );</span>
1
<span class="GAPprompt">gap></span> <span class="GAPinput">IsPerfectCharacterTable( tbl );</span>
true
</pre></div>
<p>The table satisfies the orthogonality relations, the structure constants are nonnegative integers, and symmetrizations of the irreducibles decompose into the irreducibles, with nonnegative integral coefficients.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsInternallyConsistent( tbl );</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">irr:= Irr( tbl );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">test:= Concatenation( List( [ 2 .. 7 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> n -> Symmetrizations( tbl, irr, n ) ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Append( test, Set( Tensored( irr, irr ) ) );</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">fail in Decomposition( irr, test, "nonnegative" );</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">if ForAny( Tuples( [ 1 .. NrConjugacyClasses( tbl ) ], 3 ),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> t -> not ClassMultiplicationCoefficient( tbl, t[1], t[2], t[3] )</span>
<span class="GAPprompt">></span> <span class="GAPinput"> in NonnegativeIntegers ) then</span>
<span class="GAPprompt">></span> <span class="GAPinput"> Error( "contradiction" );</span>
<span class="GAPprompt">></span> <span class="GAPinput">fi;</span>
</pre></div>
<p>The <strong class="pkg">GAP</strong> Library of Perfect Groups contains representatives of the four isomorphism types of perfect groups of order <span class="SimpleMath">\(|G| = 64\,512\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">n:= Size( tbl );</span>
64512
<span class="GAPprompt">gap></span> <span class="GAPinput">NumberPerfectGroups( n );</span>
4
<span class="GAPprompt">gap></span> <span class="GAPinput">grps:= List( [ 1 .. 4 ], i -> PerfectGroup( IsPermGroup, n, i ) );</span>
[ L2(8) 2^6 E 2^1, L2(8) N 2^6 E 2^1 I, L2(8) N 2^6 E 2^1 II,
L2(8) N 2^6 E 2^1 III ]
</pre></div>
<p>If we believe that the classification of perfect groups of order <span class="SimpleMath">\(|G|\)</span> is correct then all we have to do is to show that none of the character tables of these four groups is equivalent to the given table.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">tbls:= List( grps, CharacterTable );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List( tbls,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> x -> TransformingPermutationsCharacterTables( x, tbl ) );</span>
[ fail, fail, fail, fail ]
</pre></div>
<p>In fact, already the matrices of irreducible characters of the four groups do not fit to the given table.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">List( tbls,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> t -> TransformingPermutations( Irr( t ), Irr( tbl ) ) );</span>
[ fail, fail, fail, fail ]
</pre></div>
<p>Let us look closer at the tables in question. Each character table of a perfect group of order <span class="SimpleMath">\(64\,512\)</span> has exactly one irreducible character of degree <span class="SimpleMath">\(63\)</span> that takes exactly the values <span class="SimpleMath">\(-1\)</span>, <span class="SimpleMath">\(0\)</span>, <span class="SimpleMath">\(7\)</span>, and <span class="SimpleMath">\(63\)</span>; moreover, the value <span class="SimpleMath">\(7\)</span> occurs in exactly two classes.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">testchars:= List( tbls,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> t -> Filtered( Irr( t ),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> x -> x[1] = 63 and Set( x ) = [ -1, 0, 7, 63 ] ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List( testchars, Length );</span>
[ 1, 1, 1, 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List( testchars, l -> Number( l[1], x -> x = 7 ) );</span>
[ 2, 2, 2, 2 ]
</pre></div>
<p>(Another way to state this is that in each of the four tables <span class="SimpleMath">\(t\)</span> in question, there are ten preimage classes of the involution class in the simple factor group <span class="SimpleMath">\(L_2(8)\)</span>, there are eight preimage classes of this class in the factor group <span class="SimpleMath">\(2^6.L_2(8)\)</span>, and that the unique class in which an irreducible degree <span class="SimpleMath">\(63\)</span> character of this factor group takes the value <span class="SimpleMath">\(7\)</span> splits in <span class="SimpleMath">\(t\)</span>.)</p>
<p>In the erroneous table, however, there is only one class with the value <span class="SimpleMath">\(7\)</span> in this character.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">testchars:= List( [ tbl ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> t -> Filtered( Irr( t ),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> x -> x[1] = 63 and Set( x ) = [ -1, 0, 7, 63 ] ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">List( testchars, Length );</span>
[ 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List( testchars, l -> Number( l[1], x -> x = 7 ) );</span>
[ 1 ]
</pre></div>
<p>This property can be checked easily for the displayed table stored in fiche <span class="SimpleMath">\(2\)</span>, row <span class="SimpleMath">\(4\)</span>, column <span class="SimpleMath">\(7\)</span> of <a href="chapBib_mj.html#biBHP89">[HP89]</a>, with the name <code class="code">6L1<>Z^7<>L2(8); V4; MOD 2</code>, and it turns out that this table is not correct.</p>
<p>Note that these microfiches contain <em>two</em> tables of order <span class="SimpleMath">\(64\,512\)</span>, and there were <em>three</em> tables of groups of that order in the <strong class="pkg">GAP</strong> Character Table Library that contain <code class="code">origin: Hanrath library</code> in their <code class="func">InfoText</code> (<a href="../../../doc/ref/chap12_mj.html#X871562FD7F982C12"><span class="RefLink">Reference: InfoText</span></a>) value. Besides the incorrect table, these library tables are the character tables of the groups <code class="code">PerfectGroup( 64512, 1 )</code> and <code class="code">PerfectGroup( 64512, 3 )</code>, respectively. (The matrices of irreducible characters of these tables are equivalent.)</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Filtered( [ 1 .. 4 ], i -></span>
<span class="GAPprompt">></span> <span class="GAPinput"> TransformingPermutationsCharacterTables( tbls[i],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> CharacterTable( "P41/G1/L1/V1/ext2" ) ) <> fail );</span>
[ 1 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Filtered( [ 1 .. 4 ], i -></span>
<span class="GAPprompt">></span> <span class="GAPinput"> TransformingPermutationsCharacterTables( tbls[i],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> CharacterTable( "P41/G1/L1/V2/ext2" ) ) <> fail );</span>
[ 3 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">TransformingPermutations( Irr( tbls[1] ), Irr( tbls[3] ) ) <> fail;</span>
true
</pre></div>
<p>Since version 1.2 of the <strong class="pkg">GAP</strong> Character Table Library, the character table with the <code class="func">Identifier</code> (<a href="../../../doc/ref/chap70_mj.html#X810E53597B5BB4F8"><span class="RefLink">Reference: Identifier for tables of marks</span></a>) value <code class="code">"P41/G1/L1/V4/ext2"</code> corresponds to the group <code class="code">PerfectGroup( 64512, 4 )</code>. The choice of this group was somewhat arbitrary since the vector system <code class="code">V4</code> seems to be not defined in <a href="chapBib_mj.html#biBHP89">[HP89]</a>; anyhow, this group and the remaining perfect group, <code class="code">PerfectGroup( 64512, 2 )</code>, have equivalent matrices of irreducibles.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Filtered( [ 1 .. 4 ], i -></span>
<span class="GAPprompt">></span> <span class="GAPinput"> TransformingPermutationsCharacterTables( tbls[i],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> CharacterTable( "P41/G1/L1/V4/ext2" ) ) <> fail );</span>
[ 4 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">TransformingPermutations( Irr( tbls[2] ), Irr( tbls[4] ) ) <> fail;</span>
true
</pre></div>
<p><a id="X80F0B4E07B0B2277" name="X80F0B4E07B0B2277"></a></p>
<h5>1.1-2 <span class="Heading">An Error in the Character Table of <span class="SimpleMath">\(E_6(2)\)</span> (March 2016)</span></h5>
<p>In March 2016, Bill Unger computed the character table of the simple group <span class="SimpleMath">\(E_6(2)\)</span> with Magma (see <a href="chapBib_mj.html#biBCP96">[CP96]</a>) and compared it with the table that was contained in the <strong class="pkg">GAP</strong> Character Table Library since 2000. It turned out that the two tables did not coincide.</p>
<p>The differences concern irrational character values on classes of element order <span class="SimpleMath">\(91\)</span> and power map values on these classes. (The character values and power maps fit to each other in both tables; thus it may be that the assumption of a wrong power has implied the wrong character values, or vice versa.) Specifically, the <span class="SimpleMath">\(11\)</span>th power map in the <strong class="pkg">GAP</strong> table fixed all elements of order <span class="SimpleMath">\(91\)</span>. Using the smallest matrix representation of <span class="SimpleMath">\(E_6(2)\)</span> over the field with two elements, one can easily find an element <span class="SimpleMath">\(g\)</span> of order <span class="SimpleMath">\(91\)</span>, and show that the characteristic polynomials of <span class="SimpleMath">\(g\)</span> and <span class="SimpleMath">\(g^{11}\)</span> differ. Hence these two elements cannot be conjugate in <span class="SimpleMath">\(E_6(2)\)</span>. In other words, the <strong class="pkg">GAP</strong> table was wrong.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= AtlasGroup( "E6(2)" );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">repeat x:= PseudoRandom( g ); until Order( x ) = 91;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CharacteristicPolynomial( x ) = CharacteristicPolynomial( x^11 );</span>
false
</pre></div>
<p>The wrong <strong class="pkg">GAP</strong> table has been corrected in version 1.3.0 of the <strong class="pkg">GAP</strong> Character Table Library.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">t:= CharacterTable( "E6(2)" );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ord91:= Positions( OrdersClassRepresentatives( t ), 91 );</span>
[ 163, 164, 165, 166, 167, 168 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">PowerMap( t, 11 ){ ord91 };</span>
[ 167, 168, 163, 164, 165, 166 ]
</pre></div>
<p><a id="X7D7982CD87413F76" name="X7D7982CD87413F76"></a></p>
<h5>1.1-3 <span class="Heading">An Error in a Power Map of the Character Table of <span class="SimpleMath">\(2.F_4(2).2\)</span> (November 2015)</span></h5>
<p>As a part of the computations for <a href="chapBib_mj.html#biBBMO17">[BMO17]</a>, the character table of the group <span class="SimpleMath">\(2.F_4(2).2\)</span> was computed automatically from a representation of the group, using Magma (see <a href="chapBib_mj.html#biBCP96">[CP96]</a>). It turned out that the <span class="SimpleMath">\(2\)</span>-nd power map that had been stored on the library character table of <span class="SimpleMath">\(2.F_4(2).2\)</span> had been wrong.</p>
<p>In fact, this was the one and only case of a power map for an <strong class="pkg">Atlas</strong> group which was not determined by the character table, and the <code class="func">InfoText</code> (<a href="../../../doc/ref/chap12_mj.html#X871562FD7F982C12"><span class="RefLink">Reference: InfoText</span></a>) value of the character table had mentioned the two alternatives.</p>
<p>Note that the ambiguity is not present in the table of the factor group <span class="SimpleMath">\(F_4(2).2\)</span>, and only four faithful irreducible characters of <span class="SimpleMath">\(2.F_4(2).2\)</span> distinguish the four relevant conjugacy classes.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">t:= CharacterTable( "2.F4(2).2" );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">f:= CharacterTable( "F4(2).2" );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">map:= PowerMap( t, 2 );</span>
[ 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 11, 11, 3, 3, 3, 5, 5, 5, 3, 6, 6, 5,
5, 7, 7, 5, 8, 7, 29, 29, 9, 9, 9, 9, 11, 11, 9, 9, 9, 9, 11, 11,
43, 43, 20, 20, 20, 14, 14, 13, 13, 20, 21, 24, 28, 28, 57, 57, 29,
29, 29, 29, 33, 33, 35, 37, 37, 37, 37, 33, 33, 37, 37, 35, 41, 41,
42, 42, 79, 79, 43, 43, 83, 83, 45, 45, 47, 47, 53, 53, 91, 91, 57,
57, 61, 61, 61, 98, 98, 70, 70, 63, 63, 81, 81, 83, 83, 1, 6, 7,
11, 16, 17, 24, 24, 21, 27, 27, 25, 26, 29, 41, 53, 53, 53, 46, 56,
56, 56, 56, 62, 75, 75, 78, 78, 77, 77, 79, 79, 86, 86, 85, 85, 88,
88, 88, 88, 95, 95, 96, 96 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">PositionSublist( map, [ 86, 86, 85, 85 ] );</span>
140
<span class="GAPprompt">gap></span> <span class="GAPinput">OrdersClassRepresentatives( t ){ [ 140 .. 143 ] };</span>
[ 32, 32, 32, 32 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">SizesCentralizers( t ){ [ 140 .. 143 ] };</span>
[ 64, 64, 64, 64 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">GetFusionMap( t, f ){ [ 140 ..143 ] };</span>
[ 86, 86, 87, 87 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">PowerMap( f, 2 ){ [ 86, 87 ] };</span>
[ 50, 50 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">pos:= PositionsProperty( Irr( t ),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> x -> x[1] <> x[2] and Length( Set( x{ [ 140 .. 143 ] } ) ) > 1 );</span>
[ 144, 145, 146, 147 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">List( pos, i -> Irr(t)[i]{ [ 140 .. 143 ] } );</span>
[ [ 2*E(16)-2*E(16)^7, -2*E(16)+2*E(16)^7, 2*E(16)^3-2*E(16)^5,
-2*E(16)^3+2*E(16)^5 ],
[ -2*E(16)+2*E(16)^7, 2*E(16)-2*E(16)^7, -2*E(16)^3+2*E(16)^5,
2*E(16)^3-2*E(16)^5 ],
[ -2*E(16)^3+2*E(16)^5, 2*E(16)^3-2*E(16)^5, 2*E(16)-2*E(16)^7,
-2*E(16)+2*E(16)^7 ],
[ 2*E(16)^3-2*E(16)^5, -2*E(16)^3+2*E(16)^5, -2*E(16)+2*E(16)^7,
2*E(16)-2*E(16)^7 ] ]
</pre></div>
<p>I had not found a suitable subgroup of <span class="SimpleMath">\(2.F_4(2).2\)</span> whose character table could be used to decide the question which of the two alternatives is the correct one.</p>
<p><a id="X836E4B6184F32EF5" name="X836E4B6184F32EF5"></a></p>
<h5>1.1-4 <span class="Heading">A Character Table with a Wrong Name (May 2017)</span></h5>
<p>(This example is much older.)</p>
<p>The character table that is shown in <a href="chapBib_mj.html#biBOst86">[Ost86, p. 126 f.]</a> is claimed to be the table of a Sylow <span class="SimpleMath">\(2\)</span> subgroup <span class="SimpleMath">\(P\)</span> of the sporadic simple Lyons group <span class="SimpleMath">\(Ly\)</span>. This table had been contained in the character table library of the <strong class="pkg">CAS</strong> system (see <a href="chapBib_mj.html#biBNPP84">[NPP84]</a>), which was one of the predecessors of <strong class="pkg">GAP</strong>.</p>
<p>It is easy to see that no subgroup of <span class="SimpleMath">\(Ly\)</span> can have this character table. Namely, the group of that table contains elements of order eight with centralizer order <span class="SimpleMath">\(2^6\)</span>, and this does not occur in <span class="SimpleMath">\(Ly\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">tbl:= CharacterTable( "Ly" );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">orders:= OrdersClassRepresentatives( tbl );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">order8:= Filtered( [ 1 .. Length( orders ) ], x -> orders[x] = 8 );</span>
[ 12, 13 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">SizesCentralizers( tbl ){ order8 } / 2^6;</span>
[ 15/2, 3/2 ]
</pre></div>
<p>The table of <span class="SimpleMath">\(P\)</span> has been computed in <a href="chapBib_mj.html#biBBre91">[Bre91]</a> with character theoretic methods. Nowadays it would be no problem to take a permutation representation of <span class="SimpleMath">\(Ly\)</span>, to compute its Sylow <span class="SimpleMath">\(2\)</span> subgroup, and use this group to compute its character table. However, the task is even easier if we assume that <span class="SimpleMath">\(Ly\)</span> has a subgroup of the structure <span class="SimpleMath">\(3.McL.2\)</span>. This subgroup is of odd index, hence it contains a conjugate of <span class="SimpleMath">\(P\)</span>. Clearly the Sylow <span class="SimpleMath">\(2\)</span> subgroups in the factor group <span class="SimpleMath">\(McL.2\)</span> are isomorphic with <span class="SimpleMath">\(P\)</span>. Thus we can start with a rather small permutation representation.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= AtlasGroup( "McL.2" );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">NrMovedPoints( g );</span>
275
<span class="GAPprompt">gap></span> <span class="GAPinput">syl:= SylowSubgroup( g, 2 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">pc:= Image( IsomorphismPcGroup( syl ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">t:= CharacterTable( pc );;</span>
</pre></div>
<p>The character table coincides with the one which is stored in the Character Table Library.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsRecord( TransformingPermutationsCharacterTables( t,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> CharacterTable( "LyN2" ) ) );</span>
true
</pre></div>
<p><a id="X8159D79C7F071B33" name="X8159D79C7F071B33"></a></p>
<h4>1.2 <span class="Heading">Some finite factor groups of perfect space groups (February 2014)</span></h4>
<p>If one wants to find a group to which a given character table from the <strong class="pkg">GAP</strong> Character Table Library belongs, one can try the function <code class="func">GroupInfoForCharacterTable</code> (<a href="../doc/chap3_mj.html#X78DCD38B7D96D8A4"><span class="RefLink">CTblLib: GroupInfoForCharacterTable</span></a>). For a long time, this was not successful in the case of <span class="SimpleMath">\(16\)</span> character tables that had been computed by W. Hanrath (see Section <q>Ordinary and Brauer Tables in the <strong class="pkg">GAP</strong> Character Table Library</q> in the <strong class="pkg">CTblLib</strong> manual).</p>
<p>Using the information from <a href="chapBib_mj.html#biBHP89">[HP89]</a>, it is straightforward to construct such groups as factor groups of infinite groups. Since version 1.3.0 of the <strong class="pkg">CTblLib</strong> package, calling <code class="func">GroupInfoForCharacterTable</code> (<a href="../doc/chap3_mj.html#X78DCD38B7D96D8A4"><span class="RefLink">CTblLib: GroupInfoForCharacterTable</span></a>) for the <span class="SimpleMath">\(16\)</span> library tables in question yields nonempty lists and thus allows one to access the results of these constructions, via the function <code class="code">CTblLib.FactorGroupOfPerfectSpaceGroup</code>. This is an undocumented auxiliary function that becomes available automatically when <code class="func">GroupInfoForCharacterTable</code> (<a href="../doc/chap3_mj.html#X78DCD38B7D96D8A4"><span class="RefLink">CTblLib: GroupInfoForCharacterTable</span></a>) has been called for the first time.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">GroupInfoForCharacterTable( "A5" );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsBound( CTblLib.FactorGroupOfPerfectSpaceGroup );</span>
true
</pre></div>
<p>Below we list the <span class="SimpleMath">\(16\)</span> group constructions. In each case, an epimorphism from the space group in question is defined by mapping the generators returned by by the function <code class="code">generatorsOfPerfectSpaceGroup</code> defined below to the generators stored in the attribute <code class="func">GeneratorsOfGroup</code> (<a href="../../../doc/ref/chap39_mj.html#X79C44528864044C5"><span class="RefLink">Reference: GeneratorsOfGroup</span></a>) of the group returned by <code class="code">CTblLib.FactorGroupOfPerfectSpaceGroup</code>.</p>
<p><a id="X8710D4947AEB366F" name="X8710D4947AEB366F"></a></p>
<h5>1.2-1 <span class="Heading">Constructing the space groups in question</span></h5>
<p>In <a href="chapBib_mj.html#biBHP89">[HP89]</a>, a space group <span class="SimpleMath">\(S\)</span> is described as a subgroup <span class="SimpleMath">\(\{ M(g, t); g \in P, t \in T \}\)</span> of GL<span class="SimpleMath">\((d+1, ℤ)\)</span>, where</p>
<p><div class="pcenter"><table> <tr> <td class="tdright"><span class="SimpleMath">M(g, t)</span></td> <td class="tdcenter"><span class="SimpleMath"> = </span></td> <td class="tdleft"> <table class="GAPDocTable"> <tr> <td class="tdright"><span class="SimpleMath">g</span></td> <td class="tdright"><span class="SimpleMath">0</span></td> </tr> <tr> <td class="tdright"><span class="SimpleMath">V(g)+t</span></td> <td class="tdright"><span class="SimpleMath">1</span></td> </tr> </table> </td> </tr> </table> </div></p>
<p>the <em>point group</em> <span class="SimpleMath">\(P\)</span> of <span class="SimpleMath">\(S\)</span> is a finite subgroup of GL<span class="SimpleMath">\((d, ℤ)\)</span>, the <em>translation lattice</em> <span class="SimpleMath">\(T\)</span> of <span class="SimpleMath">\(S\)</span> is a sublattice of <span class="SimpleMath">\(ℤ^d\)</span>, and the <em>vector system</em> <span class="SimpleMath">\(V\)</span> of <span class="SimpleMath">\(S\)</span> is a map from <span class="SimpleMath">\(P\)</span> to <span class="SimpleMath">\(ℤ^d\)</span>. Note that <span class="SimpleMath">\(V\)</span> maps the identity matrix <span class="SimpleMath">\(I \in\)</span> GL<span class="SimpleMath">\((d, ℤ)\)</span> to the zero vector, and <span class="SimpleMath">\(M(T):= \{ M(I, t); t \in T \}\)</span> is a normal subgroup of <span class="SimpleMath">\(S\)</span> that is isomorphic with <span class="SimpleMath">\(T\)</span>. More generally, <span class="SimpleMath">\(M(n T)\)</span> is a normal subgroup of <span class="SimpleMath">\(S\)</span>, for any positive integer <span class="SimpleMath">\(n\)</span>.</p>
<p>Specifically, <span class="SimpleMath">\(P\)</span> is given by generators <span class="SimpleMath">\(g_1, g_2, \ldots, g_k\)</span>, <span class="SimpleMath">\(T\)</span> is given by a <span class="SimpleMath">\(ℤ\)</span>-basis <span class="SimpleMath">\(B = \{ b_1, b_2, \ldots, b_d \}\)</span> of <span class="SimpleMath">\(T\)</span>, and <span class="SimpleMath">\(V\)</span> is given by the vectors <span class="SimpleMath">\(V(g_1), V(g_2), \ldots, V(g_k)\)</span>.</p>
<p>In the examples below, the matrix representation of <span class="SimpleMath">\(P\)</span> is irreducible, so we need just the following <span class="SimpleMath">\(k+1\)</span> elements to generate <span class="SimpleMath">\(S\)</span>:</p>
<p><div class="pcenter"> <table> <tr> <td class="tdleft"> <table class="GAPDocTable"> <tr> <td class="tdright"><span class="SimpleMath">g_1</span></td> <td class="tdright"><span class="SimpleMath">0</span></td> </tr> <tr> <td class="tdright"><span class="SimpleMath">V(g_1)</span></td> <td class="tdright"><span class="SimpleMath">1</span></td> </tr> </table> <td class="tdleft"> , </td> </td> <td class="tdleft"> <table class="GAPDocTable"> <tr> <td class="tdright"><span class="SimpleMath">g_2</span></td> <td class="tdright"><span class="SimpleMath">0</span></td> </tr> <tr> <td class="tdright"><span class="SimpleMath">V(g_2)</span></td> <td class="tdright"><span class="SimpleMath">1</span></td> </tr> </table> </td> <td class="tdleft"> , ..., </td> <td class="tdleft"> <table class="GAPDocTable"> <tr> <td class="tdright"><span class="SimpleMath">g_k</span></td> <td class="tdright"><span class="SimpleMath">0</span></td> </tr> <tr> <td class="tdright"><span class="SimpleMath">V(g_k)</span></td> <td class="tdright"><span class="SimpleMath">1</span></td> </tr> </table> </td> <td class="tdleft"> , </td> <td class="tdleft"> <table class="GAPDocTable"> <tr> <td class="tdright"><span class="SimpleMath">I</span></td> <td class="tdright"><span class="SimpleMath">0</span></td> </tr> <tr> <td class="tdright"><span class="SimpleMath">b_1</span></td> <td class="tdright"><span class="SimpleMath">1</span></td> </tr> </table> </td> <td class="tdleft"> . </td> </tr> </table> </div></p>
<p>These generators are returned by the function <code class="code">generatorsOfPerfectSpaceGroup</code>, when the inputs are <span class="SimpleMath">\([ g_1, g_2, \ldots, g_k ]\)</span>, <span class="SimpleMath">\([ V(g_1), V(g_2), \ldots, V(g_k) ]\)</span>, and <span class="SimpleMath">\(b_1\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">generatorsOfPerfectSpaceGroup:= function( Pgens, V, t )</span>
<span class="GAPprompt">></span> <span class="GAPinput"> local d, result, i, m;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> d:= Length( Pgens[1] );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> result:= [];</span>
<span class="GAPprompt">></span> <span class="GAPinput"> for i in [ 1 .. Length( Pgens ) ] do</span>
<span class="GAPprompt">></span> <span class="GAPinput"> m:= IdentityMat( d+1 );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> m{ [ 1 .. d ] }{ [ 1 .. d ] }:= Pgens[i];</span>
<span class="GAPprompt">></span> <span class="GAPinput"> m[ d+1 ]{ [ 1 .. d ] }:= V[i];</span>
<span class="GAPprompt">></span> <span class="GAPinput"> result[i]:= m;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> od;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> m:= IdentityMat( d+1 );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> m[ d+1 ]{ [ 1 .. d ] }:= t;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> Add( result, m );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> return result;</span>
<span class="GAPprompt">></span> <span class="GAPinput">end;;</span>
</pre></div>
<p><a id="X84E7FE70843422B0" name="X84E7FE70843422B0"></a></p>
<h5>1.2-2 <span class="Heading">Constructing the factor groups in question</span></h5>
<p>The space group <span class="SimpleMath">\(S\)</span> acts on <span class="SimpleMath">\(ℤ^d\)</span>, via <span class="SimpleMath">\(v \cdot M(g, t) = v g + V(g) + t\)</span>. A (not necessarily faithful) representation of <span class="SimpleMath">\(S/M(n T)\)</span> can be obtained from the corresponding action of <span class="SimpleMath">\(S\)</span> on <span class="SimpleMath">\(ℤ^d/(n ℤ^d)\)</span>, that is, by reducing the vectors modulo <span class="SimpleMath">\(n\)</span>. For the <strong class="pkg">GAP</strong> computations, we work instead with vectors of length <span class="SimpleMath">\(d+1\)</span>, extending each vector in <span class="SimpleMath">\(ℤ^d\)</span> by <span class="SimpleMath">\(1\)</span> in the last position, and acting on these vectors by right multiplicaton with elements of <span class="SimpleMath">\(S\)</span>. Multiplication followed by reduction modulo <span class="SimpleMath">\(n\)</span> is implemented by the action function returned by <code class="code">multiplicationModulo</code> when this is called with argument <span class="SimpleMath">\(n\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">multiplicationModulo:= n -> function( v, g )</span>
<span class="GAPprompt">></span> <span class="GAPinput"> return List( v * g, x -> x mod n ); end;;</span>
</pre></div>
<p>In some of the examples, the representation of <span class="SimpleMath">\(P\)</span> given in <a href="chapBib_mj.html#biBHP89">[HP89]</a> is the action on the factor of a permutation module modulo its trivial submodule. For that, we provide the function <code class="code">deletedPermutationMat</code>, cf. <a href="chapBib_mj.html#biBHP89">[HP89, p. 269]</a>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">deletedPermutationMat:= function( pi, n )</span>
<span class="GAPprompt">></span> <span class="GAPinput"> local mat, j, i;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> mat:= PermutationMat( pi, n );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> mat:= mat{ [ 1 .. n-1 ] }{ [ 1 .. n-1 ] };</span>
<span class="GAPprompt">></span> <span class="GAPinput"> j:= n ^ pi;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> if j <> n then</span>
<span class="GAPprompt">></span> <span class="GAPinput"> for i in [ 1 .. n-1 ] do</span>
<span class="GAPprompt">></span> <span class="GAPinput"> mat[i][j]:= -1;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> od;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> fi;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> return mat;</span>
<span class="GAPprompt">></span> <span class="GAPinput">end;;</span>
</pre></div>
<p>After constructing permutation generators for the example groups, we verify that the groups fit to the character tables from the <strong class="pkg">GAP</strong> Character Table Library and to the permutation generators stored for the construction of the group via <code class="code">CTblLib.FactorGroupOfPerfectSpaceGroup</code>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">verifyFactorGroup:= function( gens, id )</span>
<span class="GAPprompt">></span> <span class="GAPinput"> local sm, act, stored, hom;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> sm:= SmallerDegreePermutationRepresentation( Group( gens ) );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> gens:= List( gens, x -> x^sm );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> act:= Images( sm );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> if not IsRecord( TransformingPermutationsCharacterTables(</span>
<span class="GAPprompt">></span> <span class="GAPinput"> CharacterTable( act ),</span>
<span class="GAPprompt">></span> <span class="GAPinput"> CharacterTable( id ) ) ) then</span>
<span class="GAPprompt">></span> <span class="GAPinput"> return "wrong character table";</span>
<span class="GAPprompt">></span> <span class="GAPinput"> fi;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> GroupInfoForCharacterTable( id );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> stored:= CTblLib.FactorGroupOfPerfectSpaceGroup( id );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> hom:= GroupHomomorphismByImages( stored, act,</span>
<span class="GAPprompt">></span> <span class="GAPinput"> GeneratorsOfGroup( stored ), gens );</span>
<span class="GAPprompt">></span> <span class="GAPinput"> if hom = fail or not IsBijective( hom ) then</span>
<span class="GAPprompt">></span> <span class="GAPinput"> return "wrong group";</span>
<span class="GAPprompt">></span> <span class="GAPinput"> fi;</span>
<span class="GAPprompt">></span> <span class="GAPinput"> return true;</span>
<span class="GAPprompt">></span> <span class="GAPinput">end;;</span>
</pre></div>
<p><a id="X79109A20873E76DA" name="X79109A20873E76DA"></a></p>
<h5>1.2-3 <span class="Heading">Examples with point group <span class="SimpleMath">\(A_5\)</span></span></h5>
<p>There are two examples with <span class="SimpleMath">\(d = 5\)</span>. The generators of the point group are as follows (see <a href="chapBib_mj.html#biBHP89">[HP89, p. 272]</a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">a:= deletedPermutationMat( (1,3)(2,4), 6 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">b:= deletedPermutationMat( (1,2,3)(4,5,6), 6 );;</span>
</pre></div>
<p>In both cases, the vector system is <span class="SimpleMath">\(V_2\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">v:= [ [ 2, 2, 0, 0, 1 ], 0 * b[1] ];;</span>
</pre></div>
<p>In the first example, the translation lattice is the sublattice <span class="SimpleMath">\(L = 2 L_1\)</span> of the full lattice <span class="SimpleMath">\(L_1 = ℤ^d\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">t:= [ 2, 0, 0, 0, 0 ];;</span>
</pre></div>
<p>The library character table with identifier <code class="code">"P1/G2/L1/V2/ext4"</code> belongs to the factor group of <span class="SimpleMath">\(S\)</span> modulo the normal subgroup <span class="SimpleMath">\(M(4 L)\)</span>, so we compute the action on an orbit modulo <span class="SimpleMath">\(8\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= Group( sgens );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">fun:= multiplicationModulo( 8 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">orb:= Orbit( g, [ 1, 0, 0, 0, 0, 1 ], fun );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">verifyFactorGroup( permgens, "P1/G2/L1/V2/ext4" );</span>
true
</pre></div>
<p>In the second example, the translation lattice is the sublattice <span class="SimpleMath">\(2 L_2\)</span> of <span class="SimpleMath">\(ℤ^d\)</span> where <span class="SimpleMath">\(L_2\)</span> has the following basis.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">bas:= [ [-1,-1, 1, 1, 1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [-1, 1,-1, 1, 1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 1, 1,-1,-1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 1,-1,-1, 1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [-1, 1, 1,-1, 1 ] ];;</span>
</pre></div>
<p>For the sake of simplicity, we rewrite the action of the point group to one on <span class="SimpleMath">\(L_2\)</span>, and we adjust also the vector system.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">B:= Basis( Rationals^Length( bas ), bas );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">abas:= List( bas, x -> Coefficients( B, x * a ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">bbas:= List( bas, x -> Coefficients( B, x * b ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">vbas:= List( v, x -> Coefficients( B, x ) );</span>
[ [ 3/2, 1, 2, 3/2, -1 ], [ 0, 0, 0, 0, 0 ] ]
</pre></div>
<p>In order to work with integral matrices (which is necessary because <code class="code">multiplicationModulo</code> uses <strong class="pkg">GAP</strong>'s mod operator), we double both the vector system and the translation lattice.
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">vbas:= vbas * 2;</span>
[ [ 3, 2, 4, 3, -2 ], [ 0, 0, 0, 0, 0 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">t:= 2 * t;</span>
[ 4, 0, 0, 0, 0 ]
</pre></div>
<p>The library character table with identifier <code class="code">"P1/G2/L2/V2/ext4"</code> belongs to the factor group of <span class="SimpleMath">\(S\)</span> modulo the normal subgroup <span class="SimpleMath">\(M(8 L_2)\)</span>; since we have doubled the lattice, we compute the action on an orbit modulo <span class="SimpleMath">\(16\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">sgens:= generatorsOfPerfectSpaceGroup( [ abas, bbas ], vbas, t );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= Group( sgens );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">fun:= multiplicationModulo( 16 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">orb:= Orbit( g, [ 0, 0, 0, 0, 0, 1 ], fun );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">verifyFactorGroup( permgens, "P1/G2/L2/V2/ext4" );</span>
true
</pre></div>
<p><a id="X83523D1E792F9E01" name="X83523D1E792F9E01"></a></p>
<h5>1.2-4 <span class="Heading">Examples with point group <span class="SimpleMath">\(L_3(2)\)</span></span></h5>
<p>There are three examples with <span class="SimpleMath">\(d = 6\)</span> and one example with <span class="SimpleMath">\(d = 8\)</span>. The generators of the point group for the first three examples are as follows (see <a href="chapBib_mj.html#biBHP89">[HP89, p. 290]</a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">a:= [ [ 0, 1, 0, 1, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 1, 1, 1, 1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [-1,-1,-1,-1, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0,-1,-1,-1,-1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 1, 1, 1, 0, 1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 1, 0, 1, 0 ] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">b:= [ [-1, 0, 0, 0, 0,-1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0,-1, 0,-1, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 1, 1, 1, 1, 1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 1, 0, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [-1,-1,-1, 0, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 0, 0, 0, 0 ] ];;</span>
</pre></div>
<p>The first vector system is the trivial vector system <span class="SimpleMath">\(V_1\)</span> (that is, the space group <span class="SimpleMath">\(S\)</span> is a split extension of the point group and the translation lattice), and the translation lattice is the full lattice <span class="SimpleMath">\(L_1 = ℤ^d\)</span>.</p>
<p>The library character table with identifier <code class="code">"P11/G1/L1/V1/ext4"</code> belongs to the factor group of <span class="SimpleMath">\(S\)</span> modulo the normal subgroup <span class="SimpleMath">\(M(4 L_1)\)</span>, so we compute the action on an orbit modulo <span class="SimpleMath">\(4\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">v:= List( [ 1, 2 ], i -> 0 * a[1] );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">t:= [ 1, 0, 0, 0, 0, 0 ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= Group( sgens );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">fun:= multiplicationModulo( 4 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">seed:= [ 1, 0, 0, 0, 0, 0, 1 ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">orb:= Orbit( g, seed, fun );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">verifyFactorGroup( permgens, "P11/G1/L1/V1/ext4" );</span>
true
</pre></div>
<p>The second vector system is <span class="SimpleMath">\(V_2\)</span>, and the translation lattice is <span class="SimpleMath">\(2 L_1\)</span>.</p>
<p>The library character table with identifier <code class="code">"P11/G1/L1/V2/ext4"</code> belongs to the factor group of <span class="SimpleMath">\(S\)</span> modulo the normal subgroup <span class="SimpleMath">\(M(8 L_1)\)</span>, so we compute the action on an orbit modulo <span class="SimpleMath">\(8\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">v:= [ [ 1, 0, 1, 0, 0, 0 ], 0 * a[1] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">t:= [ 2, 0, 0, 0, 0, 0 ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= Group( sgens );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">fun:= multiplicationModulo( 8 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">orb:= Orbit( g, [ 1, 0, 0, 0, 0, 0, 1 ], fun );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">verifyFactorGroup( permgens, "P11/G1/L1/V2/ext4" );</span>
true
</pre></div>
<p>The third vector system is <span class="SimpleMath">\(V_3\)</span>, and the translation lattice is <span class="SimpleMath">\(2 L_1\)</span>.</p>
<p>The library character table with identifier <code class="code">"P11/G1/L1/V3/ext4"</code> belongs to the factor group of <span class="SimpleMath">\(S\)</span> modulo the normal subgroup <span class="SimpleMath">\(M(8 L_1)\)</span>, so we compute the action on an orbit modulo <span class="SimpleMath">\(8\)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">v:= [ [ 0, 1, 0, 0, 1, 0 ], 0 * a[1] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">t:= [ 2, 0, 0, 0, 0, 0 ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">sgens:= generatorsOfPerfectSpaceGroup( [ a, b ], v, t );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g:= Group( sgens );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">fun:= multiplicationModulo( 8 );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">orb:= Orbit( g, [ 1, 0, 0, 0, 0, 0, 1 ], fun );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">permgens:= List( sgens, x -> Permutation( x, orb, fun ) );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">verifyFactorGroup( permgens, "P11/G1/L1/V3/ext4" );</span>
true
</pre></div>
<p>The generators of the point group for the fourth example are as follows (see <a href="chapBib_mj.html#biBHP89">[HP89, p. 293]</a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">a:= [ [ 1, 0, 0, 1, 0,-1, 0, 1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0,-1, 1, 0,-1, 0, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 0, 1, 0,-1, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0,-1, 0,-1, 0, 1, 1,-1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0,-1, 1, 1,-1, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1,-1,-1, 0, 0, 0, 1, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0,-1, 1, 0,-1, 1, 0,-1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0,-1, 0, 0, 0, 0, 0 ] ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">b:= [ [ 1, 0,-2, 0, 1,-1, 1, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0,-1, 0, 0, 0, 0, 1,-1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0,-1, 0, 1,-1, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [-1,-1, 1,-1,-1, 2, 0,-1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0, 0, 0,-1, 0, 0, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 0,-1, 0,-1,-1, 1, 1,-1 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1,-1, 0, 0, 0, 0, 0, 0 ],</span>
<span class="GAPprompt">></span> <span class="GAPinput"> [ 1, 0, 0, 0, 0, 0, 0, 0 ] ];;</span>
</pre></div>
<p>The vector system is the trivial vector system <span class="SimpleMath">\(V_1\)</span>, and the translation lattice is the full lattice <span class="SimpleMath">\(L_1 = ℤ^d\)</span>.</p>
<p>The library character table with identifier <code class="code">"P11/G4/L1/V1/ext3"</code> belongs to the factor group of <span class="SimpleMath">\(S\)</span> modulo the normal subgroup <sp | |