  
  [1X11 [33X[0;0YPoincare series[133X[101X
  
  [33X[0;0Y[10XEfficientNormalSubgroups(G)[110X[133X
  [33X[0;0Y[10XEfficientNormalSubgroups(G,k)[110X[133X
  
  [33X[0;0YInputs  a  prime-power  group  [22XG[122X  and, optionally, a positive integer [22Xk[122X. The
  default  is [22Xk=4[122X. The function returns a list of normal subgroups [22XN[122X in [22XG[122X such
  that  the  Poincare  series  for [22XG[122X equals the Poincare series for the direct
  product [22X(N × (G/N))[122X up to degree [22Xk[122X.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XExpansionOfRationalFunction(f,n)[110X[133X
  
  [33X[0;0YInputs a positive integer [22Xn[122X and a rational function [22Xf(x)=p(x)/q(x)[122X where the
  degree  of  the polynomial [22Xp(x)[122X is less than that of [22Xq(x)[122X. It returns a list
  [22X[a_0  ,  a_1  ,  a_2  , a_3 , ... ,a_n][122X of the first [22Xn+1[122X coefficients of the
  infinite expansion[133X
  
  [33X[0;0Y[22Xf(x) = a_0 + a_1x + a_2x^2 + a_3x^3 + ...[122X .[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPoincareSeries(G,n) [110X[133X
  [33X[0;0Y[10X PoincareSeries(R,n) [110X[133X
  [33X[0;0Y[10X PoincareSeries(L,n) [110X[133X
  [33X[0;0Y[10X PoincareSeries(G) [110X[133X
  
  [33X[0;0YInputs a finite [22Xp[122X-group [22XG[122X and a positive integer [22Xn[122X. It returns a quotient of
  polynomials  [22Xf(x)=P(x)/Q(x)[122X  whose coefficient of [22Xx^k[122X equals the rank of the
  vector space [22XH_k(G,Z_p)[122X for all [22Xk[122X in the range [22Xk=1[122X to [22Xk=n[122X. (The second input
  variable  can  be  omitted,  in  which  case  the function tries to choose a
  "reasonable" value for [22Xn[122X. For [22X2[122X-groups the function PoincareSeriesLHS(G) can
  be used to produce an [22Xf(x)[122X that is correct in all degrees.)[133X
  
  [33X[0;0YIn  place of the group [22XG[122X the function can also input (at least [22Xn[122X terms of) a
  minimal mod [22Xp[122X resolution [22XR[122X for [22XG[122X.[133X
  
  [33X[0;0YAlternatively, the first input variable can be a list [22XL[122X of integers. In this
  case  the  coefficient  of  [22Xx^k[122X  in [22Xf(x)[122X is equal to the [22X(k+1)[122Xst term in the
  list.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPoincareSeriesPrimePart(G,p,n) [110X[133X
  
  [33X[0;0YInputs  a  finite group [22XG[122X, a prime [22Xp[122X, and a positive integer [22Xn[122X. It returns a
  quotient  of  polynomials [22Xf(x)=P(x)/Q(x)[122X whose coefficient of [22Xx^k[122X equals the
  rank of the vector space [22XH_k(G,Z_p)[122X for all [22Xk[122X in the range [22Xk=1[122X to [22Xk=n[122X.[133X
  
  [33X[0;0YThe efficiency of this function needs to be improved.[133X
  [33X[0;0Y[10XPoincareSeriesLHS(G) [110X[133X
  
  [33X[0;0YInputs   a   finite   [22X2[122X-group  [22XG[122X  and  returns  a  quotient  of  polynomials
  [22Xf(x)=P(x)/Q(x)[122X  whose coefficient of [22Xx^k[122X equals the rank of the vector space
  [22XH_k(G,Z_2)[122X for all [22Xk[122X.[133X
  
  [33X[0;0YThis  function  was  written  by  [12XPaul Smith[112X. It use the Singular system for
  commutative algebra.[133X
  [33X[0;0Y::::::::::::::::::::::::[133X
  [33X[0;0Y[10XPrank(G) [110X[133X
  
  [33X[0;0YInputs  a  [22Xp[122X-group  [22XG[122X and returns the rank of the largest elementary abelian
  subgroup.[133X
  
