Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 5e1854624d3bc613bdd0dd13d1ef9ac7 > files > 1845

gap-system-4.4.12-5mdv2010.0.i586.rpm

<?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 (HAPprime Datatypes) - Chapter 9: Poincaré series</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" />
</head>
<body>


<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="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop">&nbsp;<a href="chap0.html">Top of Book</a>&nbsp;  &nbsp;<a href="chap8.html">Previous Chapter</a>&nbsp;  &nbsp;<a href="chap10.html">Next Chapter</a>&nbsp;  </div>

<p><a id="X7FF2605B79D7B5F8" name="X7FF2605B79D7B5F8"></a></p>
<div class="ChapSects"><a href="chap9.html#X7FF2605B79D7B5F8">9 <span class="Heading">Poincaré series</span></a>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap9.html#X872F597F7AACA402">9.1 <span class="Heading">Computing the Poincaré series using spectral sequences</span></a>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap9.html#X7978D58181D2725F">9.2 <span class="Heading">Computing the Poincaré series using a minimal resolution</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap9.html#X7F0911257D80691E">9.2-1 PoincareSeriesAutoMem</a></span>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap9.html#X82A90FCC80BAC1F9">9.3 <span class="Heading">Example Poincaré series computations</span></a>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap9.html#X84E1A5148674E7E0">9.4 <span class="Heading">The Poincaré series of groups of order 64 and 128</span></a>
</div>
</div>

<h3>9 <span class="Heading">Poincaré series</span></h3>

<p>The Poincaré series for the mod-p cohomology ring H^*(G, F) is the infinite series</p>

<p class="pcenter">
      a_0 + a_1x + a_2x^2 + a_3x^3 + ...
    </p>

<p>where a_k is the dimension of the vector space H^k(G, F). The Poincaré function is a rational function P(x)/Q(x) which is equal to the Poincaré series.</p>

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

<h4>9.1 <span class="Heading">Computing the Poincaré series using spectral sequences</span></h4>

<p><strong class="pkg">HAPprime</strong> can calculate a provably-correct Poincaré series for the mod-p cohomology ring of a small p-group using spectral sequences, without having to compute the actual cohomology ring. The limiting sheet of a Lyndon-Hochschild-Serre spectral sequence for a group G will be a ring with the same additive structure as the cohomology ring for G, and thus the same Poincaré series. This is implemented in the <strong class="pkg">HAPprime</strong> function <code class="func">PoincareSeriesLHS</code> (<a href="/home/pas/GAP/pkg/happrime-0.3.2/doc/userguide/chap3.html#X7E1A4C8781A02CD0"><b>HAPprime: PoincareSeriesLHS</b></a>). See the documentation for that function in the user guide for more details.</p>

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

<h4>9.2 <span class="Heading">Computing the Poincaré series using a minimal resolution</span></h4>

<p>Given a resolution R of length n for a group G, the <strong class="pkg">HAP</strong> function <code class="func">PoincareSeries</code> (<a href="/home/pas/GAP/pkg/Hap1.8/doc/chap7.html#X850CDAFE801E2B2A"><b>HAP: PoincareSeries</b></a>) calculates a quotient of polynomials such that the coefficient of x^k equals the dimension of H^k(G, F) for k = 1 to k = n. Given a sufficiently long resolution R, this quotient should equal the true Poincaré series. The function can also automatically find a suitable value for n by trying resolutions of increasing length until a consistent estimate is found for the Poincaré series. This is likely to be correct, but we have no proof that this will always be the case.</p>

<p>The function <code class="func">ExtendResolutionPrimePowerGroupAutoMem</code> (<a href="/home/pas/GAP/pkg/happrime-0.3.2/doc/userguide/chap3.html#X7B435C307F28D44F"><b>HAPprime: ExtendResolutionPrimePowerGroupAutoMem</b></a>) allows <strong class="pkg">HAPprime</strong> to provide a simplified implementation for calculating Poincaré series in the case where n is not specified (since extending existing resolutions is difficult in <strong class="pkg">HAP</strong>). The <strong class="pkg">HAPprime</strong> function <code class="func">PoincareSeriesAutoMem</code> (<a href="/home/pas/GAP/pkg/happrime-0.3.2/doc/datatypes/chap9.html#X7F0911257D80691E"><b>HAPprime Datatypes: PoincareSeriesAutoMem</b></a>) is a replacement for <strong class="pkg">HAP</strong>'s <code class="func">PoincareSeries</code> (<a href="/home/pas/GAP/pkg/Hap1.8/doc/chap7.html#X850CDAFE801E2B2A"><b>HAP: PoincareSeries</b></a>) in the case where G is a p-group and the optimal n is not known.</p>

<p>By using the <strong class="pkg">HAPprime</strong> resolution-calculation functions, <code class="func">PoincareSeriesAutoMem</code> (<a href="/home/pas/GAP/pkg/happrime-0.3.2/doc/datatypes/chap9.html#X7F0911257D80691E"><b>HAPprime Datatypes: PoincareSeriesAutoMem</b></a>) saves memory when storing resolution, and switches to the <code class="code">GF</code> algorithm when memory is low. As a result, it can calculate the Poincaré series for groups that would be impossible using <strong class="pkg">HAP</strong> without having about five times the memory available to the machine.</p>

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

<h5>9.2-1 PoincareSeriesAutoMem</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; PoincareSeriesAutoMem</code>( <var class="Arg">G[, n]</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p><b>Returns: </b>Rational function</p>

<p>For a finite p-group <var class="Arg">G</var>, this function calculates and returns a quotient of polynomials f(x) = P(x)/Q(x) (i.e. the Poincaré series) whose coefficient of x^k equals the rank of the vector space H_k(G, F_p) for all k in the range k=1 to k=n. If no value is given for <var class="Arg">n</var> then increasing values of n are tried to find the minimum value which gives a consistent Poincaré series, defined as a the minimum value n &gt; 10 such that <code class="code">PoincareSeries(G, n) = PoincareSeries(G, n-1) = PoincareSeries(G, n-2)</code>.</p>

<p>This function uses the <strong class="pkg">HAP</strong> function <code class="func">PoincareSeries</code> (<a href="/home/pas/GAP/pkg/Hap1.8/doc/chap7.html#X850CDAFE801E2B2A"><b>HAP: PoincareSeries</b></a>) to calculate the Poincaré series, but the <strong class="pkg">HAPprime</strong> function <code class="func">ExtendResolutionPrimePowerGroupAutoMem</code> (<a href="/home/pas/GAP/pkg/happrime-0.3.2/doc/userguide/chap3.html#X7B435C307F28D44F"><b>HAPprime: ExtendResolutionPrimePowerGroupAutoMem</b></a>) to calculate and gradually extend the resolution, so should be both faster and more memory-efficient than using <code class="keyw">PoincareSeries</code> by itself. See Section <a href="chap9.html#X82A90FCC80BAC1F9"><b>9.3</b></a> for an example.</p>

<p>The Poincaré series calculated using this function is likely to be correct, but we have no proof that this will be the case. If a correct Poincaré series is required, use <code class="func">PoincareSeriesLHS</code> (<a href="/home/pas/GAP/pkg/happrime-0.3.2/doc/userguide/chap3.html#X7E1A4C8781A02CD0"><b>HAPprime: PoincareSeriesLHS</b></a>)</p>

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

<h4>9.3 <span class="Heading">Example Poincaré series computations</span></h4>

<p>This example compares the time taken by <code class="func">PoincareSeries</code> (<a href="/home/pas/GAP/pkg/Hap1.8/doc/chap7.html#X850CDAFE801E2B2A"><b>HAP: PoincareSeries</b></a>) and <code class="func">PoincareSeriesAutoMem</code> (<a href="/home/pas/GAP/pkg/happrime-0.3.2/doc/datatypes/chap9.html#X7F0911257D80691E"><b>HAPprime Datatypes: PoincareSeriesAutoMem</b></a>), and shows that the times are roughly comparable:</p>


<table class="example">
<tr><td><pre>
gap&gt; G := SmallGroup(64, 210);;
gap&gt; # Compute the Poincare series using HAP
gap&gt; P1 := PoincareSeries(G);time;
(x_1^4+x_1^2+x_1+1)/(-x_1^7+3*x_1^6-5*x_1^5+7*x_1^4-7*x_1^3+5*x_1^2-3*x_1+1)
51355
gap&gt; # Compute the Poincare series using HAPprime
gap&gt; P2 := PoincareSeriesAutoMem(G);time;
(x_1^4+x_1^2+x_1+1)/(-x_1^7+3*x_1^6-5*x_1^5+7*x_1^4-7*x_1^3+5*x_1^2-3*x_1+1)
39774
gap&gt; P1 = P2;
true</pre></td></tr></table>

<p>The <strong class="pkg">HAPprime</strong> function <code class="func">PoincareSeriesLHS</code> (<a href="/home/pas/GAP/pkg/happrime-0.3.2/doc/userguide/chap3.html#X7E1A4C8781A02CD0"><b>HAPprime: PoincareSeriesLHS</b></a>) uses an alternative approach to compute Poincaré series which are guaranteed to be correct. In many cases it is also faster, as we see if we compute the Poincaré series for the same group using this function:</p>


<table class="example">
<tr><td><pre>
gap&gt; G := SmallGroup(64, 210);;
gap&gt; P3 := PoincareSeriesLHS(G);time;
(x_1^4+x_1^2+x_1+1)/(-x_1^7+3*x_1^6-5*x_1^5+7*x_1^4-7*x_1^3+5*x_1^2-3*x_1+1)
3564</pre></td></tr></table>

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

<h4>9.4 <span class="Heading">The Poincaré series of groups of order 64 and 128</span></h4>

<p>Using <strong class="pkg">HAPprime</strong>, on a dual-processor AMD Opteron 250 machine, we have calculated the Poincaré series for all of the groups of order 64 using the resolution-based technique. Most computed within a few seconds using only a few Mb of memory. With a maximum of 1Gb of memory available to <strong class="pkg">GAP</strong>, four groups (numbers 4, 60, 242 and 266 from the <strong class="pkg">GAP</strong> <code class="keyw">SmallGroup</code> library) needed to switch to using <code class="func">ExtendResolutionPrimePowerGroupGF</code> (<a href="/home/pas/GAP/pkg/happrime-0.3.2/doc/userguide/chap3.html#X7B435C307F28D44F"><b>HAPprime: ExtendResolutionPrimePowerGroupGF</b></a>). Calculating the Poincaré series of the most difficult group, <code class="code">SmallGroup(64, 60)</code>, took 24 days, computing a resolution whose last term was M_16 = (FG)^2445. The complete list of the Poincaré series for all groups of order 64 is available on the <strong class="pkg">HAPprime</strong> website <span class="URL"><a href="http://www.maths.nuigalway.ie/~pas/CHA/HAPprime/HAPprimeindex.html">http://www.maths.nuigalway.ie/~pas/CHA/HAPprime/HAPprimeindex.html</a></span></p>

<p>There is an on-going programme of calculating the Poincaré series for the groups of order 128. To date, using the same constraints as for the groups of order 64 above, we have computed the Poincaré series for about half of them. For latest details, again please see the <strong class="pkg">HAPprime</strong> website.</p>


<div class="chlinkprevnextbot">&nbsp;<a href="chap0.html">Top of Book</a>&nbsp;  &nbsp;<a href="chap8.html">Previous Chapter</a>&nbsp;  &nbsp;<a href="chap10.html">Next Chapter</a>&nbsp;  </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="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chap10.html">10</a>  <a href="chapInd.html">Ind</a>  </div>

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