up previous next
HilbertSeries

the Hilbert-Poincare series

Syntax
HilbertSeries(M: MODULE|IDEAL|RING):TAGGED("$hp.PSeries")

Description
This function computes the Hilbert-Poincare series of M . The input, M , must be homogeneous (with respect to the first row of the weights matrix). In the standard case, i.e. the weights of all indeterminates are 1, the result is simplified so that the power appearing in the denominator is the dimension of M .

NOTE: for the local case see PrimaryHilbertSeries .

NOTES:

(i) the coefficient ring must be a field.

(ii) these functions produce tagged objects: they cannot safely be tested for (non-)equality to other values.

Starting from release 4.7.5 the input may also be an ideal.

For more information, see the article: A.M. Bigatti, "Computations of Hilbert-Poincare Series" J. Pure Appl. Algebra, 119/3 (1997), 237--253.

Example
/**/  use R ::= QQ[t,x,y,z]; -- standard weights
/**/  HilbertSeries(R/ideal(R,[]));
(1) / (1-t)^4

/**/  HilbertSeries(R/ideal(t^2, x, y^3));
(1 + 2*t + 2*t^2 + t^3) / (1-t)

/**/  R2 := NewFreeModule(R, 2); -- MODULE
/**/  M := SubmoduleRows(R2, matrix(R, [[x^2,0], [0,z^3]]));
/**/  HilbertSeries(M);
(t^2 + t^3) / (1-t)^4

-- /**/  HilbertSeries(R2/M);  --***WORK IN PROGRESS***

/**/  Ws := RowMat([1,2,3,4]); -- weights and multigradings
/**/  P := NewPolyRing(QQ, "t,x,y,z", MakeTermOrd(Ws), 1);
/**/  use P;
/**/  HilbertSeries(P/ideal(t^2, x, y^3));
---  Non-simplified HilbertPoincare' Series  ---
(1 - 2*t^2 + t^4 - t^9 + 2*t^11 - t^13) / ( (1-t)*(1-t^2)*(1-t^3)*(1-t^4) )

/**/  HilbertSeries(ideal(t^2, x, y^3));
---  Non-simplified HilbertPoincare' Series  ---
(2*t^2 - t^4 + t^9 - 2*t^11 + t^13) / ( (1-t)*(1-t^2)*(1-t^3)*(1-t^4) )

/**/  Ws := mat([[1,2,3,4],[0,0,5,8]]);
/**/  P := NewPolyRing(QQ, "t,x,y,z", MakeTermOrd(Ws), 2);
/**/  use P;
/**/  HilbertSeries(P/ideal(t^2, x, y^3));
---  Non Simplified Pseries  ---
(1 - 2*t[1]^2 + t[1]^4 - t[1]^9*t[2]^15 + 2*t[1]^11*t[2]^15 - t[1]^13*t[2]^15) / ( (1-t[1])^1*(1-t[1]^2)*(1-t[1]^3*t[2]^5)*(1-t[1]^4*t[2]^8) )

/**/  Ws := mat([[1,2,3,4],[0,0,5,8]]);
/**/  P := NewPolyRing(QQ, "t,x,y,z", MakeTermOrd(Ws), 2);
/**/  use P;
/**/  HilbertSeries(P/ideal(t^2, y^3));
---  Non-simplified HilbertPoincare' Series  ---
(1 - t[1]^2 - t[1]^9*t[2]^15 + t[1]^11*t[2]^15) /
    ((1-t[1])^1*(1-t[1]^2)*(1-t[1]^3*t[2]^5)*(1-t[1]^4*t[2]^8) )

See Also