<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>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>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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>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>
<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>
<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>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>
<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>
<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>
<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>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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
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.