<h3>7 <span class="Heading">Cosets of PcpGroups</span></h3>
<p><strong class="pkg">GAP</strong> is well-equipped to deal with <em>finite</em> cosets. However, if a coset is infinite, methods may not be available, may be faulty, or may run forever. The <strong class="pkg">TwistedConjugacy</strong> package provides additional methods for existing functions that can deal with infinite cosets of PcpGroups.</p>
<p>The only completely new functions are <code class="func">DoubleCosetIndex</code> (<a href="chap7_mj.html#X805F0F1E803BE255"><span class="RefLink">7.2-7</span></a>) and its <code class="code">NC</code> version.</p>
<p>Calculating the intersection of two right cosets <span class="SimpleMath">\(Hx\)</span> and <span class="SimpleMath">\(Ky\)</span> can be reduced to calculating the intersection <span class="SimpleMath">\(H \cap K\)</span> and verifying whether <span class="SimpleMath">\(xy^{-1} \in HK\)</span> (see <code class="func">\in</code> (<a href="chap7_mj.html#X87BDB89B7AAFE8AD"><spanclass="RefLink">7.2-1</span></a>)).</p>
<p>Algorithms designed for computing with twisted conjugacy classes can be leveraged to do computations involving double cosets, see <a href="chapBib_mj.html#biBtert25-a">[Ter25, Sec. 9]</a> for a description on this. When the <strong class="pkg">TwistedConjugacy</strong> package is loaded, it does this automatically, and the functions below should then work for PcpGroups, even if they are infinite.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Size</code>( <var class="Arg">D</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the number of elements in <var class="Arg">D</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ List</code>( <var class="Arg">D</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list containing the elements of <var class="Arg">D</var>.</p>
<p>If <var class="Arg">D</var> is infinite, this will run forever. It is recommended to first test the finiteness of <var class="Arg">D</var> using <code class="func">Size</code> (<a href="chap7_mj.html#X858ADA3B7A684421"><span class="RefLink">7.2-2</span></a>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DoubleCosets</code>( <var class="Arg">G</var>, <var class="Arg">H</var>, <var class="Arg">K</var> )</td><tdclass="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DoubleCosetsNC</code>( <var class="Arg">G</var>, <var class="Arg">H</var>, <var class="Arg">K</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a duplicate-free list of all <code class="code">(<var class="Arg">H</var>,<var class="Arg">K</var>)</code>-double cosets in <var class="Arg">G</var> if there are finitely many, otherwise <code class="keyw">fail</code>.</p>
<p>The groups <var class="Arg">H</var> and <var class="Arg">K</var> must be subgroups of the group <var class="Arg">G</var>. The <code class="code">NC</code> version does not check whether this is the case.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DoubleCosetRepsAndSizes</code>( <var class="Arg">G</var>, <var class="Arg">H</var>, <var class="Arg">K</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a list containing pairs of the form <code class="code">[ r, n ]</code>, where <code class="code">r</code> is a representative and <code class="code">n</code> is the size of a double coset.</p>
<p>While for finite groups this function is supposed to be faster than <code class="func">DoubleCosetsNC</code> (<a href="chap7_mj.html#X7A5EFABB86E6D4D5"><span class="RefLink">7.2-5</span></a>), for PcpGroups it is usually <em>slower</em>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DoubleCosetIndex</code>( <var class="Arg">G</var>, <var class="Arg">H</var>, <var class="Arg">K</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DoubleCosetIndexNC</code>( <var class="Arg">G</var>, <var class="Arg">H</var>, <var class="Arg">K</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the double coset index of the pair (<var class="Arg">H</var>,<var class="Arg">K</var>).</p>
<p>The groups <var class="Arg">H</var> and <var class="Arg">K</var> must be subgroups of the group <var class="Arg">G</var>. The <code class="code">NC</code> version does not check whether this is the case.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">HxK := DoubleCoset( H, x, K );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">HyK := DoubleCoset( H, y, K );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">HzK := DoubleCoset( H, z, K );;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">y in HxK;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">z in HxK;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">HxK = HyK;</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">HxK = HzK;</span>
false
<span class="GAPprompt">gap></span> <span class="GAPinput">DoubleCosets( G, H, K );</span>
[ DoubleCoset(<group with 2 generators>,<object>,<group with 2 generators>),
DoubleCoset(<group with 2 generators>,<object>,<group with 2 generators>) ]
<span class="GAPprompt">gap></span> <span class="GAPinput">DoubleCosetIndex( G, H, K );</span>
2
</pre></div>
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 und die Messung sind noch experimentell.