Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/inducereduce/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 16.9.2025 mit Größe 18 kB image not shown  

Quelle  chap1_mj.html   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/inducereduce/doc/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 (InduceReduce) - Chapter 1: The InduceReduce package</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="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="X8063C5AD861C9596" name="X8063C5AD861C9596"></a></p>
<div class="ChapSects"><a href="chap1_mj.html#X8063C5AD861C9596">1 <span class="Heading">The <strong class="pkg">InduceReduce</strong> package</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1_mj.html#X8729B87B848E3F89">1.1 <span class="Heading">Theory</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1_mj.html#X7A4605C07A94C9F6">1.2 <span class="Heading">Program</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap1_mj.html#X800870BA80335175">1.2-1 CharacterTableUnger</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap1_mj.html#X854929007C135EA0">1.2-2 InfoCTUnger</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap1_mj.html#X82B1841B7ED017DA">1.2-3 CTUngerDefaultOptions</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1_mj.html#X7E6B8D107B819CDC">1.3 <span class="Heading">Options</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap1_mj.html#X8650B24882BA95D0">1.3-1 <span class="Heading">DoCyclicFirst and DocyclicLast</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap1_mj.html#X853CD33F845DFFD8">1.3-2 <span class="Heading">LLLOffset</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap1_mj.html#X82C33CF282FC5A73">1.3-3 <span class="Heading">Delta</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap1_mj.html#X83236B2C84A86425">1.3-4 <span class="Heading">Changing the default options</span></a>
</span>
</div></div>
</div>

<h3>1 <span class="Heading">The <strong class="pkg">InduceReduce</strong> package</span></h3>

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

<h4>1.1 <span class="Heading">Theory</span></h4>

<p>The <strong class="pkg">InduceReduce</strong> provides a function for computing the table of ordinary irreducible characters of a finite group <span class="SimpleMath">\(G\)</span> using an algorithm based on Brauer's theorem on induced characters (see the Wikipedia article), which has been described by W. Unger in [Ung06]. By Brauer's theorem, the ring <span class="SimpleMath">\(ℤ{\textrm{Irr}}(G)\)</span> of generalized characters of <span class="SimpleMath">\(G\)</span> is generated by the induced characters <span class="SimpleMath">\({\textrm{Ind}}_H^G(\lambda)\)</span>, where <span class="SimpleMath">\(H\)</span> runs over all elementary subgroups of <span class="SimpleMath">\(G\)</span> and <span class="SimpleMath">\(\lambda\)</span> runs over all irreducible characters of <span class="SimpleMath">\(H\)</span>. The algorithm runs over suitably chosen elementary subgroups of <span class="SimpleMath">\(G\)</span>, computes their irreducible characters and induces them to <span class="SimpleMath">\(G\)</span>. In the resulting lattice of generalized characters, it searches for an orthonormal basis by means of LLL lattice reduction. Once an orthonormal basis of size equal to the number of conjugacy classes of <span class="SimpleMath">\(G\)</span> is found, it is clear from character theory that the elements of this basis are up to sign the irreducible characters of <span class="SimpleMath">\(G\)</span>.</p>

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

<h4>1.2 <span class="Heading">Program</span></h4>

<p>Unger's Algorithm is implemented in the function CharacterTableUnger (1.2-1).



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

<h5>1.2-1 CharacterTableUnger</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CharacterTableUnger</code>( <var class="Arg">G</var>[, <var class="Arg">Opt</var>] )</td><td class="tdright">( function )</td></tr></table></div>
<p>This function computes the character table of a finite group using Unger's algorithm. The argument G must be a finite group, the argument Opt must be a record which sets some options for the algorithm (more details in Section 1.3 below).




<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=AlternatingGroup(6);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CharacterTableUnger(G);</span>
CharacterTable( Alt( [ 1 .. 6 ] ) )
</pre></div>

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

<h5>1.2-2 InfoCTUnger</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ InfoCTUnger</code></td><td class="tdright">( info class )</td></tr></table></div>
<p>The info class <code class="func">InfoCTUnger</code> makes the function <code class="func">CharacterTableUnger</code> (<a href="chap1_mj.html#X800870BA80335175"><span class="RefLink">1.2-1</span></a>) display information about the current state of the computation, which may be useful for computations with large groups. If <code class="func">InfoCTUnger</code> is set to <code class="code">1</code> then the function first displays the number of conjugacy classes of <var class="Arg">G</var> and then shows for any elementary subgroup <span class="SimpleMath">\(E = ZP\)</spanwhose characters are induced to <var class="Arg">G</var> the order of <span class="SimpleMath">\(Z\)</span>, the order of <span class="SimpleMath">\(P\)</span> and the number of conjugacy classes of <span class="SimpleMath">\(E\)</span>. If <code class="func">InfoCTUnger</code> is set to <code class="code">2</code> then it additionally displays the orders of the conjugacy. Moreover, it shows after each LLL reduction the total number of irreducible characters found so far, the dimension of the character lattice and the determinant of the Gram matrix.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=AlternatingGroup(6);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetInfoLevel(InfoCTUnger,1);</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CharacterTableUnger(G);</span>
#I  Induce/Restrict: group with 7 conjugacy classes.
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 5, 1, 5 ]
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 4, 1, 4 ]
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 3, 1, 3 ]
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 3, 1, 3 ]
CharacterTable( Alt( [ 1 .. 6 ] ) )

<span class="GAPprompt">gap></span> <span class="GAPinput">SetInfoLevel(InfoCTUnger,2);</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CharacterTableUnger(G);</span>
#I  Induce/Restrict: group with 7 conjugacy classes.
#I  Induce/Restrict: orders of class reps: [ 1, 2, 3, 3, 4, 5, 5 ]
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 5, 1, 5 ]
#I  Reduce: |Irr| = 1, dim = 4, det(G) = 43
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 4, 1, 4 ]
#I  Reduce: |Irr| = 1, dim = 6, det(G) = 8
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 3, 1, 3 ]
#I  Reduce: |Irr| = 2, dim = 7, det(G) = 4
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 3, 1, 3 ]
#I  Reduce: |Irr| = 7
CharacterTable( Alt( [ 1 .. 6 ] ) )
</pre></div>

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

<h5>1.2-3 CTUngerDefaultOptions</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CTUngerDefaultOptions</code></td><td class="tdright">( global variable )</td></tr></table></div>
<p>The global variable <code class="func">CTUngerDefaultOptions</code> contains a record with four components <code class="code">DoCyclicFirst</code>, <code class="code">DoCyclicLast</code>, <code class="code">LLLOffset</code> and <code class="code">Delta</code>, which specify the default options for the function <code class="func">CharacterTableUnger</code> (<a href="chap1_mj.html#X800870BA80335175"><span class="RefLink">1.2-1</span></a>). The options can be changed manually by the user, for more details see Subsection <a href="chap1_mj.html#X83236B2C84A86425"><span class="RefLink">1.3-4</span></a> below. The initial values for the record components are as follows:</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CTUngerDefaultOptions;</span>
rec( Delta := 3/4, DoCyclicFirst := false, DoCyclicLast := false, LLLOffset := 0 )
</pre></div>

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

<h4>1.3 <span class="Heading">Options</span></h4>

<p>In this section, we explain the options for <code class="func">CharacterTableUnger</code> (<a href="chap1_mj.html#X800870BA80335175"><span class="RefLink">1.2-1</span></a>) using the optional second argument <var class="Arg">Opt</var>, which should be a record with components <code class="code">DoCyclicFirst</code>, <code class="code">DoCyclicLast</code>, <code class="code">LLLOffset</code> and <code class="code">Delta</code>. You only need to specify those components of the record that you want to manually set to a certain value, the others will be assigned their default value by the program. Additional components of the record will be ignored. The intended use of the different components of <var class="Arg">Opt</var> is as follows:</p>

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

<h5>1.3-1 <span class="Heading">DoCyclicFirst and DocyclicLast</span></h5>

<p>The component <code class="code">Opt.DoCyclicFirst</code> should be a boolean which is by default set to <code class="keyw">false</code>. It tells the function <code class="func">CharacterTableUnger</code> (<a href="chap1_mj.html#X800870BA80335175"><span class="RefLink">1.2-1</span></a>) to first induce all irreducible characters of the cyclic subgroups and then proceed to do the same for the non-cyclic elementary subgroups. The option <code class="code">Opt.DoCyclicLast</code> does the opposite, that is, it tells <code class="func">CharacterTableUnger</code> (<a href="chap1_mj.html#X800870BA80335175"><span class="RefLink">1.2-1</span></a>) to first induce the characters of the non-cyclic elementary subgroups and then proceed to induce the characters of the cyclic subgroups. The default value is also <code class="keyw">false</code> Note that even when <code class="code">Opt.DoCyclicLast</code> is <code class="keyw">true</code>, it may happen that some cyclic group are used by the algorithm earlier than some non-cyclic elementary subgroups, but only when the group <span class="SimpleMath">\(P\)</span> in <span class="SimpleMath">\(E = ZP\)</span> is cyclic. When both <code class="code">Opt.DoCyclicFirst</code> and <code class="code">Opt.DoCyclicLast</code> are set to be <code class="keyw">true</code> then the program still induces from cyclic groups first.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CharacterTableUnger(G,rec( DoCyclicFirst:=true ));</span>
#I  Induce/Restrict: group with 7 conjugacy classes.
#I  Induce/Restrict: orders of class reps: [ 1, 2, 3, 3, 4, 5, 5 ]
#I  Induce: from cyclic subgroups
#I  Reduce: |Irr| = 7
CharacterTable( Alt( [ 1 .. 6 ] ) )

<span class="GAPprompt">gap></span> <span class="GAPinput">CharacterTableUnger(G,rec( DoCyclicLast:=true ));</span>
#I  Induce/Restrict: group with 7 conjugacy classes.
#I  Induce/Restrict: orders of class reps: [ 1, 2, 3, 3, 4, 5, 5 ]
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 1, 5, 5 ]
#I  Reduce: |Irr| = 1, dim = 4, det(G) = 43
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 1, 8, 5 ]
#I  Reduce: |Irr| = 5, dim = 6, det(G) = 2
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 1, 9, 9 ]
#I  Reduce: |Irr| = 7
CharacterTable( Alt( [ 1 .. 6 ] ) )
</pre></div>

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

<h5>1.3-2 <span class="Heading">LLLOffset</span></h5>

<p>The component <code class="code">Opt.LLLOffset</code> should be an integer telling the function <code class="func">CharacterTableUnger</code> (<a href="chap1_mj.html#X800870BA80335175"><span class="RefLink">1.2-1</span></a>) to not apply LLL reduction to the Gram matrix of the character lattice each time after the characters of some elementary subgroup have been induced. More precisely, the first LLL reduction will be carried out after the characters of the first <code class="code">Opt.LLLOffset</code>elementary subgroups have been induced. When <code class="code">Opt.DoCyclicFirst</code> is true then the first LLL reduction will be carried out after the characters of the cyclic groups and the first <code class="code">Opt.LLLOffset</code> non-cyclic elementary groups have been induced. The default value for <code class="code">Opt.LLLOffset</code> is <code class="code">0</code>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CharacterTableUnger(G,rec( LLLOffset:=3 ));</span>
#I  Induce/Restrict: group with 7 conjugacy classes.
#I  Induce/Restrict: orders of class reps: [ 1, 2, 3, 3, 4, 5, 5 ]
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 5, 1, 5 ]
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 4, 1, 4 ]
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 3, 1, 3 ]
#I  Reduce: |Irr| = 2, dim = 7, det(G) = 4
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 3, 1, 3 ]
#I  Reduce: |Irr| = 7
CharacterTable( Alt( [ 1 .. 6 ] ) )
</pre></div>

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

<h5>1.3-3 <span class="Heading">Delta</span></h5>

<p>The component <code class="code">Opt.Delta</code> can be used to specify the parameter <span class="SimpleMath">\(\delta\)</span> for the LLL reduction, where <span class="SimpleMath">\(1/4 < \delta \leq 1\)</span>. The default value for <code class="code">Opt.Delta</code> is <span class="SimpleMath">\(3/4\)</span> and <code class="code">Opt.Delta</code> is ignored if it is not a rational with <span class="SimpleMath">\(1/4 <\)</span> <code class="code">Opt.Delta</code> and <code class="code">Opt.Delta</code> <span class="SimpleMath">\(\leq 1\)</span>.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetInfoLevel(InfoCTUnger,2);</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G:=AlternatingGroup(6);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CharacterTableUnger(G,rec( Delta:=3/10 ));</span>
#I  Induce/Restrict: group with 7 conjugacy classes.
#I  Induce/Restrict: orders of class reps: [ 1, 2, 3, 3, 4, 5, 5 ]
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 5, 1, 5 ]
#I  Reduce: |Irr| = 1, dim = 4, det(G) = 43
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 4, 1, 4 ]
#I  Reduce: |Irr| = 1, dim = 6, det(G) = 8
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 3, 1, 3 ]
#I  Reduce: |Irr| = 2, dim = 7, det(G) = 4
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 3, 1, 3 ]
#I  Reduce: |Irr| = 5, dim = 7, det(G) = 1
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 1, 9, 9 ]
#I  Reduce: |Irr| = 7
CharacterTable( Alt( [ 1 .. 6 ] ) )

<span class="GAPprompt">gap></span> <span class="GAPinput">CharacterTableUnger(G,rec( Delta:=3/10, DoCyclicLast:=true ));</span>
#I  Induce/Restrict: group with 7 conjugacy classes.
#I  Induce/Restrict: orders of class reps: [ 1, 2, 3, 3, 4, 5, 5 ]
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 1, 5, 5 ]
#I  Reduce: |Irr| = 1, dim = 4, det(G) = 43
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 1, 9, 9 ]
#I  Reduce: |Irr| = 2, dim = 6, det(G) = 3
#I  Induce/Restrict: Trying [|Z|, |P|, k(E)] = [ 1, 8, 5 ]
#I  Reduce: |Irr| = 5, dim = 7, det(G) = 1
#I  Reduce: |Irr| = 7
CharacterTable( Alt( [ 1 .. 6 ] ) )
</pre></div>

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

<h5>1.3-4 <span class="Heading">Changing the default options</span></h5>

<p>In cases where the character tables of several groups need to be computed using the same options, it may be useful to change the default options, which are specified in the record <code class="func">CTUngerDefaultOptions</code> (<a href="chap1_mj.html#X82B1841B7ED017DA"><span class="RefLink">1.2-3</span></a>). This can be done by simply overwriting the the components of that record.</p>


<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CTUngerDefaultOptions;</span>
rec( Delta := 3/4, DoCyclicFirst := false, DoCyclicLast := false, LLLOffset := 0 )
<span class="GAPprompt">gap></span> <span class="GAPinput">CTUngerDefaultOptions.Delta:=1;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CTUngerDefaultOptions.DoCyclicLast:=true;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">CTUngerDefaultOptions;</span>
rec( Delta := 1, DoCyclicFirst := false, DoCyclicLast := true, LLLOffset := 0 )
</pre></div>


<div class="chlinkprevnextbot"> <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>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0_mj.html">Top</a>  <a href="chap1_mj.html">1</a>  <a href="chap2_mj.html">2</a>  <a href="chapBib_mj.html">Bib</a>  <a href="chapInd_mj.html">Ind</a>  </div>

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

100%


¤ Dauer der Verarbeitung: 0.2 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.