<Chapter><Heading> Poincare series</Heading> <Table Align="|l|" > <Row> <Item> <C>EfficientNormalSubgroups(G)</C> <Br/> <C>EfficientNormalSubgroups(G,k)</C> <P/> Inputs a prime-power group <M>G</M> and, optionally, a positive integer <M>k</M>. The default is <M>k=4</M>. The function returns a list of normal subgroups <M>N</M> in <M>G</M> such that the Poincare series for <M>G</M> equals the Poincare series for the direct product <M>(N \times (G/N))</M> up to degree <M>k</M>. </Item> </Row> <Row> <Item> <Index> ExpansionOfRationalFunction</Index> <C>ExpansionOfRationalFunction(f,n)</C> <P/> Inputs a positive integer <M>n</M> and a rational function <M>f(x)=p(x)/q(x)</M> where the degree of the polynomial <M>p(x)</M> is less than that of <M>q(x)</M>. It returns a list <M>[a_0 , a_1 , a_2 , a_3 , \ldots ,a_n]</M> of the first <M>n+1</M> coefficients of the infinite expansion <P/> <M>f(x) = a_0 + a_1x + a_2x^2 + a_3x^3 + \ldots </M> . </Item> </Row> <Row> <Item> <Index> PoincareSeries</Index> <C> PoincareSeries(G,n) </C> <C> PoincareSeries(R,n) </C> <Br/> <C> PoincareSeries(L,n) </C> <Br/> <C> PoincareSeries(G) </C> <P/> Inputs a finite <M>p</M>-group <M>G</M> and a positive integer <M>n</M>. It returns a quotient of polynomials <M>f(x)=P(x)/Q(x)</M> whose coefficient of <M>x^k</M> equals the rank of the vector space <M>H_k(G,Z_p)</M> for all <M>k</M> in the range <M>k=1</M> to <M>k=n</M>. (The second input variable can be omitted, in which case the function tries to choose a "reasonable" value for <M>n</M>.) <P/> In place of the group <M>G</M> the function can also input (at least <M>n</M> terms of) a minimal mod <M>p</M> resolution <M>R</M> for <M>G</M>. <P/> Alternatively, the first input variable can be a list <M>L</M> of integers. In this case the coefficient of <M>x^k</M> in <M>f(x)</M> is equal to the <M>(k+1)</M>st term in the list. </Item> </Row> <Row> <Item> <Index> PoincareSeriesPrimePart</Index> <C>PoincareSeriesPrimePart(G,p,n) </C> <P/> Inputs a finite group <M>G</M>, a prime <M>p</M>, and a positive integer <M>n</M>. It returns a quotient of polynomials <M>f(x)=P(x)/Q(x)</M> whose coefficient of <M>x^k</M> equals the rank of the vector space <M>H_k(G,Z_p)</M> for all <M>k</M> in the range <M>k=1</M> to <M>k=n</M>. <P/> The efficiency of this function needs to be improved. </Item> </Row> <Row> <Item> <Index> Prank</Index> <C> Prank(G) </C> <P/> Inputs a <M>p</M>-group <M>G</M> and returns the rank of the largest elementary abelian subgroup. </Item> </Row> </Table> </Chapter>