<Verb>PoincareSeries(G,n):: Group, Int --> RationalFunction</Verb>
<Verb>PoincareSeries(G):: Group --> RationalFunction</Verb>
<Verb>PoincareSeries(R,n):: Group, Int --> RationalFunction</Verb>
<Verb>PoincareSeries(L,n):: Group, Int --> RationalFunction</Verb><P/>


<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 expansion
 has coefficient of <M>x^k</M> equal to the rank of the vector space 
<M>H_k(G,\mathbb F_p)</M> for all <M>k</M> in the range <M>1 \le k \le n</M>. 
(The second input variable can be omitted, in which case the function tries to 
choose a `reasonable' value for <M>n</M>. For 2-groups the function 
<B>PoincareSeriesLHS(G)</B> can be used to produce an <M>f(x)</M> that is correct in all degrees.)

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

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.

