Quellcode-Bibliothek chap3.html
Sprache: unbekannt
|
|
Columbo aufrufen.html Download desUnknown {[0] [0] [0]}Datei anzeigen <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GAP (WPE) - Chapter 3: Tutorial</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="chap3" onload="jscontent()">
<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a> <a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chap5.html">5</a> <a href="chapBib.html">Bib</a> <a href="chapInd.html">Ind</a> </div>
<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap2.html">[Previous Chapter]</a> <a href="chap4.html">[Next Chapter]</a> </div>
<p id="mathjaxlink" class="pcenter"><a href="chap3_mj.html">[MathJax on]</a></p>
<p><a id="X81932F777898AD72" name="X81932F777898AD72"></a></p>
<div class="ChapSects"><a href="chap3.html#X81932F777898AD72">3 <span class="Heading">Tutorial</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X820D3CEF8368DB04">3.1 <span class="Heading">Creating Wreath Product Elements</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X7C85A3718343D842">3.2 <span class="Heading">Displaying Wreath Product Elements</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X8345CC25855C9406">3.3 <span class="Heading">Computing in Wreath Products</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X8017E4AF7EBB72D2">3.4 <span class="Heading">Conjugacy Problem</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X7D474F8F87E4E5D9">3.5 <span class="Heading">Conjugacy Classes</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X7A2BF4527E08803C">3.6 <span class="Heading">Centralizer</span></a>
</span>
</div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap3.html#X87A59E867A83A798">3.7 <span class="Heading">Cycle Index Polynomial</span></a>
</span>
</div>
</div>
<h3>3 <span class="Heading">Tutorial</span></h3>
<p>This chapter is a collection of tutorials that show how to work with wreath products in <strong class="pkg">GAP</strong> in conjunction with the package <strong class="pkg">WPE</strong>.</p>
<p><a id="X820D3CEF8368DB04" name="X820D3CEF8368DB04"></a></p>
<h4>3.1 <span class="Heading">Creating Wreath Product Elements</span></h4>
<p>In this section we present an example session which demonstrates how we can create wreath products elements by specifying its components.</p>
<p>In the following we will work with the wreath product <span class="SimpleMath">G = Alt(5) ≀ Sym(4)</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadPackage("WPE");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">K := AlternatingGroup(5);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">H := SymmetricGroup(4);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G := WreathProduct(K, H);</span>
<permutation group of size 311040000 with 10 generators>
</pre></div>
<p>The resulting group <span class="SimpleMath">G</span> is embedded into a symmetric group on <span class="SimpleMath">5 ⋅ 4 = 20</span> points via the imprimitive action of the wreath product. The size of the group is</p>
<p class="pcenter">| G | = |Alt(5)|^4 ⋅ |Sym(4)| = 60^4 ⋅ 24 = 311040000 .</p>
<p>Suppose we would like to input the wreath product element</p>
<p class="pcenter">g = ( (1,5,2,4,3), (1,3,5,2,4), (1,5,3,4,2), (1,4,5); (1,3)(2,4) )</p>
<p>as an element of <span class="SimpleMath">G</span>. The method <code class="code">WreathProductElementList</code> is the preferred way to create a wreath product element by specifying its components. Note that we first specify the four base components and at the end the top component as the last entry.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">gList := [ (1,5,2,4,3), (1,3,5,2,4), (1,5,3,4,2), (1,4,5), (1,3)(2,4) ];;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := WreathProductElementList(G, gList);</span>
(1,15,3,11,5,12)(2,14)(4,13)(6,18,8,20)(7,19,10,17)(9,16)
<span class="GAPprompt">gap></span> <span class="GAPinput">g in G;</span>
true
</pre></div>
<p>On the other hand, the method <code class="code">ListWreathProductElement</code> can be used to get a list containing the components of a wreath product element.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ListWreathProductElement(G, g);</span>
[ (1,5,2,4,3), (1,3,5,2,4), (1,5,3,4,2), (1,4,5), (1,3)(2,4) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">last = gList;</span>
true
</pre></div>
<p>The package author has implemented the methods <code class="func">ListWreathProductElement</code> (<a href="../../../doc/ref/chap49.html#X801A358E879A0FF0"><span class="RefLink">Reference: ListWreathProductElement</span></a>) and <code class="func">WreathProductElementList</code> (<a href="../../../doc/ref/chap49.html#X7ECB076E81D8D402"><span class="RefLink">Reference: WreathProductElementList</span></a>) in <strong class="pkg">GAP</strong> in order to translate between list representations of wreath product elements and other representations. The naming conventions are the same as for <code class="code">ListPerm</code> and <code class="code">PermList</code>.</p>
<p>Moreover, all functions that work for <code class="code">IsWreathProductElement</code> can also be used on these list representations. However, it is not checked if the list indeed represents a wreath product element.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Territory(gList);</span>
[ 1, 2, 3, 4 ]
</pre></div>
<p>If the wreath product element is "sparse", i.e. has only a few non-trivial components, it might be easier to create it by embedding its non-trivial components into <span class="SimpleMath">G</span> directly and multiplying them. Note however, that <code class="code">WreathProductElementList</code> might be faster as it avoids group multiplications.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">h := (1,2,3) ^ Embedding(G,2)</span>
<span class="GAPprompt">></span> <span class="GAPinput"> * (1,5,2,4,3) ^ Embedding(G,4)</span>
<span class="GAPprompt">></span> <span class="GAPinput"> * (1,2,4) ^ Embedding(G, 5);</span>
(1,6,17,4,9,19,3,8,16,5,10,20,2,7,18)
<span class="GAPprompt">gap></span> <span class="GAPinput">hList := ListWreathProductElement(G, h);</span>
[ (), (1,2,3), (), (1,5,2,4,3), (1,2,4) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">IsWreathCycle(hList);</span>
true
</pre></div>
<p><a id="X7C85A3718343D842" name="X7C85A3718343D842"></a></p>
<h4>3.2 <span class="Heading">Displaying Wreath Product Elements</span></h4>
<p>In this section we present an example session which demonstrates how we can display wreath product elements in an intuitive way. Wreath product elements are viewed, printed and displayed (see section <a href="../../../doc/ref/chap6.html#X8074A8387C9DB9A8"><span class="RefLink">Reference: View and Print</span></a> for the distinctions between these operations) as generic wreath product elements (see section <a href="chap2.html#X7DF2AEBC8518FFA4"><span class="RefLink">2.1</span></a>).</p>
<p>Suppose we are given some element <span class="SimpleMath">g</span> in the wreath product <span class="SimpleMath">G = Alt(5) ≀ Sym(4)</span>, and would like to view its components in a nice way.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadPackage("WPE");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">K := AlternatingGroup(5);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">H := SymmetricGroup(4);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G := WreathProduct(K, H);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">iso := IsomorphismWreathProduct(G);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">W := Image(iso);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g := (1,15,8,20)(2,14,7,19,5,12,6,18,3,11,10,17)(4,13,9,16);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g in G;</span>
true
</pre></div>
<p>First we translate the element <span class="SimpleMath">g</span> into a generic wreath product element <span class="SimpleMath">w</span>. <strong class="pkg">GAP</strong> uses <code class="code">ViewObj</code> to print <span class="SimpleMath">w</span> in a compressed form.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">w := g ^ iso;</span>
< wreath product element with 4 base components >
</pre></div>
<p>If we want to print this element in a "machine-readable" way, we could use one of the following methods.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Print(w);</span>
[ (1,5,2,4,3), (1,3,5,2,4), (1,5,3,4,2), (1,4,5), (1,3,2,4) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">L := ListWreathProductElement(W, w);</span>
[ (1,5,2,4,3), (1,3,5,2,4), (1,5,3,4,2), (1,4,5), (1,3,2,4) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">L = ListWreathProductElement(G, g);</span>
true
</pre></div>
<p>Usually, we want to display this element in a nice format instead, which is "human-readable" and allows us to quickly distinguish components.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(w);</span>
1 2 3 4 top
( (1,5,2,4,3), (1,3,5,2,4), (1,5,3,4,2), (1,4,5); (1,3,2,4) )
</pre></div>
<p>There are many display options available for adjusting the display behaviour for wreath product elements to your liking (see <a href="chap4.html#X8227AD6B7FC637DE"><span class="RefLink">4.4</span></a>). For example, we might want to display the element vertically. We can do this for a single call to the `Display` command without changing the global display options like this:</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(w, rec(horizontal := false));</span>
1: (1,5,2,4,3)
2: (1,3,5,2,4)
3: (1,5,3,4,2)
4: (1,4,5)
top: (1,3,2,4)
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(w);</span>
1 2 3 4 top
( (1,5,2,4,3), (1,3,5,2,4), (1,5,3,4,2), (1,4,5); (1,3,2,4) )
</pre></div>
<p>We can also change the global display options via the following command.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetDisplayOptionsForWreathProductElements(rec(horizontal := false));</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(w);</span>
1: (1,5,2,4,3)
2: (1,3,5,2,4)
3: (1,5,3,4,2)
4: (1,4,5)
top: (1,3,2,4)
</pre></div>
<p>All changes to the global behaviour can be reverted to the default behaviour via the following command.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ResetDisplayOptionsForWreathProductElements();</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(w);</span>
1 2 3 4 top
( (1,5,2,4,3), (1,3,5,2,4), (1,5,3,4,2), (1,4,5); (1,3,2,4) )
</pre></div>
<p>But sometimes, it is sufficient to just look at some components of a wreath product element. We can directly use the list representation to access the components on a low-level or we can use high-level functions on wreath product elements instead.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">a := BaseComponentOfWreathProductElement(w, 3);</span>
(1,5,3,4,2)
<span class="GAPprompt">gap></span> <span class="GAPinput">a = L[3];</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">b := TopComponentOfWreathProductElement(w);</span>
(1,3,2,4)
<span class="GAPprompt">gap></span> <span class="GAPinput">b = L[5];</span>
true
</pre></div>
<p><a id="X8345CC25855C9406" name="X8345CC25855C9406"></a></p>
<h4>3.3 <span class="Heading">Computing in Wreath Products</span></h4>
<p>As noted in the introduction, no additional setup is required if one wants to benefit from the optimizations for computations in wreath products. We simply create the wreath products via the native <strong class="pkg">GAP</strong> command <code class="func">WreathProduct</code> (<a href="../../../doc/ref/chap49.html#X8786EFBC78D7D6ED"><span class="RefLink">Reference: WreathProduct</span></a>), and the generic representation is used under the hood whenever appropiate.</p>
<p>We include in the following sections examples for each computational problem listed in <a href="chap1.html#X7D96C25680814773"><span class="RefLink">1.3</span></a>. For all such examples we fix the following wreath product.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadPackage("WPE");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">K := Group([ (1,2,3,4,5), (1,2,4,3) ]);; # F(5)</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">H := Group([ (1,2,3,4,5,6), (2,6)(3,5) ]);; # D(12)</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G := WreathProduct(K, H);</span>
<permutation group of size 768000000 with 4 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">P := WreathProduct(K, SymmetricGroup(NrMovedPoints(H)));</span>
<permutation group of size 46080000000 with 4 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">IsSubgroup(P, G);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">iso := IsomorphismWreathProduct(P);;</span>
</pre></div>
<p>Moreover, we fix the following elements of the parent wreath product <span class="SimpleMath">P</span>. We choose them in such a way, that they do not lie in the smaller wreath product <span class="SimpleMath">G</span> for demonstration purposes only.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">x := (1,23,12,6,4,24,13,9,5,21,15,10,2,25,14,7)(3,22,11,8)(16,30,20,28)(17,27,19,26)(18,29);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">y := (1,12,26,8,3,14,28,7,2,13,27,10,5,11,30,6)(4,15,29,9)(16,23,20,22)(17,24,19,21)(18,25);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(x ^ iso);</span>
1 2 3 4 5 6 top
( (1,3,2,5), (1,4,5,2), (1,3,4,2), (1,5,3,4), (1,5,4,3,2), (1,2,4,3); (1,5,3,2)(4,6) )
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(y ^ iso);</span>
1 2 3 4 5 6 top
( (1,2,3,4,5), (), (1,5,4,3,2), (1,3,5,2,4), (1,2)(3,5), (1,3,2,5); (1,3,6,2)(4,5) )
<span class="GAPprompt">gap></span> <span class="GAPinput">x in P and y in P;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">not x in G and not y in G;</span>
true
</pre></div>
<p><a id="X8017E4AF7EBB72D2" name="X8017E4AF7EBB72D2"></a></p>
<h4>3.4 <span class="Heading">Conjugacy Problem</span></h4>
<p>We now demonstrate how to solve the conjugacy problem for <span class="SimpleMath">x</span> and <span class="SimpleMath">y</span> over <span class="SimpleMath">G</span>, i.e. decide whether there exists <span class="SimpleMath">c ∈ G</span> with <span class="SimpleMath">x^c = y</span> and if it does, explicitly compute such a conjugating element <span class="SimpleMath">c</span>.</p>
<p>We continue the <strong class="pkg">GAP</strong> session from Section <a href="chap3.html#X8345CC25855C9406"><span class="RefLink">3.3</span></a>.</p>
<p>To check in <strong class="pkg">GAP</strong> whether two elements are conjugate in a group we use native <strong class="pkg">GAP</strong> command <code class="func">RepresentativeAction</code> (<a href="../../../doc/ref/chap41.html#X857DC7B085EB0539"><span class="RefLink">Reference: RepresentativeAction</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">RepresentativeAction(G, x, y);</span>
fail
</pre></div>
<p>The output <code class="code">fail</code> indicates, that <span class="SimpleMath">x</span> and <span class="SimpleMath">y</span> are not conjugate over <span class="SimpleMath">G</span>. But are <span class="SimpleMath">x</span> and <span class="SimpleMath">y</span> conjugate in the parent wreath product?</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">c := RepresentativeAction(P, x, y);</span>
(2,5)(3,4)(6,8,9,7)(11,29,25)(12,26,21,13,28,22,15,27,24,14,30,23)
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(c^iso);</span>
1 2 3 4 5 6 top
( (2,5)(3,4), (1,3,4,2), (1,4,5,2), (), (1,3,2,5), (2,4,5,3); (3,6,5) )
<span class="GAPprompt">gap></span> <span class="GAPinput">x ^ c = y;</span>
true
</pre></div>
<p>We see, that indeed these elements are conjugate over the larger wreath product <span class="SimpleMath">P</span> by the conjugating element <span class="SimpleMath">c ∈ P</span>.</p>
<p><a id="X7D474F8F87E4E5D9" name="X7D474F8F87E4E5D9"></a></p>
<h4>3.5 <span class="Heading">Conjugacy Classes</span></h4>
<p>Enumerate representatives of all conjugacy classes of elements of <span class="SimpleMath">G</span>, i.e. return elements <span class="SimpleMath">g_1, dots, g_ℓ</span> such that <span class="SimpleMath">g_1^G, dots, g_ℓ^G</span> are the conjugacy classes of <span class="SimpleMath">G</span>.</p>
<p>We continue the <strong class="pkg">GAP</strong> session from Section <a href="chap3.html#X8345CC25855C9406"><span class="RefLink">3.3</span></a>. In particular recall the definition of the isomorphism <code class="code">iso</code>.</p>
<p>To compute in <strong class="pkg">GAP</strong> the conjugacy classes of elements of a group we use <code class="func">ConjugacyClasses</code> (<a href="../../../doc/ref/chap39.html#X871B570284BBA685"><span class="RefLink">Reference: ConjugacyClasses attribute</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">CC := ConjugacyClasses(G);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Length(CC);</span>
1960
</pre></div>
<p>We see that there are <span class="SimpleMath">1960</span> many conjugacy classes of elements of <span class="SimpleMath">G</span>. Let us look at a single conjugacy class.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">A := CC[1617];</span>
(2,4,5,3)(6,26)(7,29,9,30,10,28,8,27)(11,21)(12,22)(13,23)(14,24)(15,25)^G
</pre></div>
<p>We can compute additional information about a conjugacy class on the go. For example, we can ask <strong class="pkg">GAP</strong> for the number of elements in this class.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Size(A);</span>
60000
</pre></div>
<p>To access the representative of this class, we do the following.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">a := Representative(A);</span>
(2,4,5,3)(6,26)(7,29,9,30,10,28,8,27)(11,21)(12,22)(13,23)(14,24)(15,25)
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(a ^ iso);</span>
1 2 3 4 5 6 top
( (2,4,5,3), (2,4,5,3), (), (), (), (); (2,6)(3,5) )
</pre></div>
<p>Representatives are always given in a sparse format, e.g. all cycles in the wreath cycle decomposition of <span class="SimpleMath">a</span> are sparse (see <a href="chap2.html#X872BE72F7B2BBD6B"><span class="RefLink">2.3</span></a>).</p>
<p><a id="X7A2BF4527E08803C" name="X7A2BF4527E08803C"></a></p>
<h4>3.6 <span class="Heading">Centralizer</span></h4>
<p>Compute the centralizer of <span class="SimpleMath">x</span> in <span class="SimpleMath">G</span>, i.e. compute a generating set of <span class="SimpleMath">C_G(x)</span>.</p>
<p>We continue the <strong class="pkg">GAP</strong> session from <a href="chap3.html#X8345CC25855C9406"><span class="RefLink">3.3</span></a>. In particular recall the definition of the isomorphism <code class="code">iso</code>.</p>
<p>To compute in <strong class="pkg">GAP</strong> the centralizer of an element in a group we use <code class="func">Centralizer</code> (<a href="../../../doc/ref/chap35.html#X7A2BF4527E08803C"><span class="RefLink">Reference: centraliser</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">C := Centralizer(G, x);</span>
Group([ (16,20)(17,19)(26,27)(28,30), (16,19,20,17)(26,28,27,30),
(1,4,5,2)(6,9,10,7)(12,13,15,14)(21,25,23,24) ])
</pre></div>
<p>We can compute additional information about the centralizer on the go. For example, we can ask <strong class="pkg">GAP</strong> for the number of elements in <span class="SimpleMath">G</span> that centralize <span class="SimpleMath">x</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Size(C);</span>
16
</pre></div>
<p>The generators of a centralizer are always given in a sparse format, e.g. all cycles in the wreath cycle decomposition of a generator <span class="SimpleMath">g</span> are sparse (see <a href="chap2.html#X872BE72F7B2BBD6B"><span class="RefLink">2.3</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">for g in GeneratorsOfGroup(C) do</span>
<span class="GAPprompt">></span> <span class="GAPinput"> Display(g ^ iso);</span>
<span class="GAPprompt">></span> <span class="GAPinput">od;</span>
1 2 3 4 5 6 top
( (), (), (), (1,5)(2,4), (), (1,2)(3,5); () )
1 2 3 4 5 6 top
( (), (), (), (1,4,5,2), (), (1,3,2,5); () )
1 2 3 4 5 6 top
( (1,4,5,2), (1,4,5,2), (2,3,5,4), (), (1,5,3,4), (); () )
</pre></div>
<p><a id="X87A59E867A83A798" name="X87A59E867A83A798"></a></p>
<h4>3.7 <span class="Heading">Cycle Index Polynomial</span></h4>
<p>Compute the cycle index polynomial of <span class="SimpleMath">G</span> either for the imprimitive action or the product action. We do not continue the <strong class="pkg">GAP</strong> session from <a href="chap3.html#X8345CC25855C9406"><span class="RefLink">3.3</span></a> since the wreath product is too large to make sense of the cycle index polynomial just by looking at it. Instead we use the following wreath product.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadPackage("WPE");;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">K := Group([ (1,2), (1,2,3) ]);; # S(3)</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">H := Group([ (1,2) ]);; # C(2)</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">G_impr := WreathProduct(K, H);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">NrMovedPoints(G_impr);</span>
6
<span class="GAPprompt">gap></span> <span class="GAPinput">Order(G_impr);</span>
72
</pre></div>
<p>To compute in <strong class="pkg">GAP</strong> the cycle index of a a group we use <code class="func">CycleIndex</code> (<a href="../../../doc/ref/chap41.html#X87FDA6838065CDCB"><span class="RefLink">Reference: CycleIndex</span></a>). Note that by default, the wreath product is given in imprimitive action.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">c_impr := CycleIndex(G_impr);</span>
1/72*x_1^6+1/12*x_1^4*x_2+1/18*x_1^3*x_3+1/8*x_1^2*x_2^2+1/6*x_1*x_2*x_3
+1/12*x_2^3+1/4*x_2*x_4+1/18*x_3^2+1/6*x_6
</pre></div>
<p>For example, the second monomial <code class="code">1/12*x_1^4*x_2</code> tells us that there are exactly <span class="SimpleMath">frac7212 = 6</span> elements with cycle type <span class="SimpleMath">(4, 1)</span>, i.e. elements that have four fixed points and one <span class="SimpleMath">2</span>-cycle. If one wants to access these monomials on the computer, one needs to use <code class="func">ExtRepPolynomialRatFun</code> (<a href="../../../doc/ref/chap66.html#X8406EE2E8775FBAB"><span class="RefLink">Reference: ExtRepPolynomialRatFun</span></a>).</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">Display(ExtRepPolynomialRatFun(c_impr));</span>
[ [ 6, 1 ], 1/6, [ 3, 2 ], 1/18, [ 2, 1, 4, 1 ], 1/4, [ 2, 3 ], 1/12,
[ 1, 1, 2, 1, 3, 1 ], 1/6, [ 1, 2, 2, 2 ], 1/8, [ 1, 3, 3, 1 ], 1/18,
[ 1, 4, 2, 1 ], 1/12, [ 1, 6 ], 1/72 ]
</pre></div>
<p>The way how to read this representation is roughly the following. The list consists of alternating entries, the first one encoding the monomial and the second one the corresponding coefficient, for example consider <code class="code">[ 1, 4, 2, 1 ], 1/12</code>. The coefficient is <code class="code">1/12</code> and the monomial is encoded by <code class="code">[ 1, 4, 2, 1 ]</code>. The encoding of the monomial again consists of alternating entries, the first one encoding the indeterminant and the second one its exponent. For example <code class="code">[ 1, 4, 2, 1 ]</code> translates to <code class="code">x_1^4 * x_2^1</code>. For more details, see <a href="../../../doc/ref/chap66.html#X7F44CF87801DB965"><span class="RefLink">Reference: The Defining Attributes of Rational Functions</span></a>.</p>
<p>If we want to consider the wreath product given in product action, we need to use the command <code class="func">WreathProductProductAction</code> (<a href="../../../doc/ref/chap49.html#X82B8DD1C868A3726"><span class="RefLink">Reference: WreathProductProductAction</span></a>)</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">G_prod := WreathProductProductAction(K, H);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">NrMovedPoints(G_prod);</span>
9
<span class="GAPprompt">gap></span> <span class="GAPinput">c_prod := CycleIndex(G_prod);</span>
1/72*x_1^9+1/6*x_1^3*x_2^3+1/8*x_1*x_2^4+1/4*x_1*x_4^2+1/9*x_3^3+1/3*x_3*x_6
</pre></div>
<p>However, we do not need to create the wreath product in order to compute the cycle index of the group. Thus the package provides the functions <code class="func">CycleIndexWreathProductImprimitiveAction</code> (<a href="chap4.html#X871F79767C6BC7C0"><span class="RefLink">4.5-1</span></a>) and <code class="func">CycleIndexWreathProductProductAction</code> (<a href="chap4.html#X799B029E79EACCC3"><span class="RefLink">4.5-2</span></a>) to compute the cycle index directly from the components <span class="SimpleMath">K</span> and <span class="SimpleMath">H</span> without writing down a representation of <span class="SimpleMath">K ≀ H</span>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">c1 := CycleIndexWreathProductImprimitiveAction(K, H);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c_impr = c1;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">c2 := CycleIndexWreathProductProductAction(K, H);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">c_prod = c2;</span>
true
</pre></div>
<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a> <a href="chap0.html#contents">[Contents]</a> <a href="chap2.html">[Previous Chapter]</a> <a href="chap4.html">[Next Chapter]</a> </div>
<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a> <a href="chap1.html">1</a> <a href="chap2.html">2</a> <a href="chap3.html">3</a> <a href="chap4.html">4</a> <a href="chap5.html">5</a> <a href="chapBib.html">Bib</a> <a href="chapInd.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>
[ 0.151Quellennavigators
]
|
2026-03-28
|