Home Online Manual
Top
Back: ivDimCheck
Forward: ivKDim
FastBack:
FastForward:
Up: fpadim_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document
7.7.7.0. ivHilbert
Procedure from library fpadim.lib (see fpadim_lib).

Usage:
ivHilbert(L,n[,degbound]); L a list of intmats, n an integer,
degbound an optional integer

Return:
intvec, containing the coefficients of the Hilbert series

Purpose:
Computing the Hilbert series

Assume:
- basering is a Letterplace ring.
- all rows of each intmat correspond to a Letterplace monomial
- if you specify a different degree bound degbound,
degbound <= attrib(basering,uptodeg) holds.

Note:
- If degbound is set, a degree bound will be added. By default there
is no degree bound.
- n is the number of variables.
- If I is returned, then I[k] is the (k-1)-th coefficient of the Hilbert
series.
- If the K-dimension is known to be infinite, a degree bound is needed

Example:
 
LIB "fpadim.lib";
ring r = 0,(x,y),dp;
def R = makeLetterplaceRing(5); // constructs a Letterplace ring
R;
==> // coefficients: QQ
==> // number of vars : 10
==> //        block   1 : ordering a
==> //                  : names    x(1) y(1) x(2) y(2) x(3) y(3) x(4) y(4) x(\
   5) y(5)
==> //                  : weights     1    1    1    1    1    1    1    1   \
    1    1
==> //        block   2 : ordering dp
==> //                  : names    x(1) y(1)
==> //        block   3 : ordering dp
==> //                  : names    x(2) y(2)
==> //        block   4 : ordering dp
==> //                  : names    x(3) y(3)
==> //        block   5 : ordering dp
==> //                  : names    x(4) y(4)
==> //        block   6 : ordering dp
==> //                  : names    x(5) y(5)
==> //        block   7 : ordering C
setring R; // sets basering to Letterplace ring
//some intmats, which contain monomials in intvec representation as rows
intmat I1 [2][2] = 1,1,2,2; intmat I2 [1][3]  = 1,2,1;
intmat J1 [1][2] =  1,1; intmat J2 [2][3] = 2,1,2,1,2,1;
print(I1);
==>      1     1
==>      2     2
print(I2);
==>      1     2     1
print(J1);
==>      1     1
print(J2);
==>      2     1     2
==>      1     2     1
list G = I1,I2; // ideal, which is already a Groebner basis
list I = J1,J2; // ideal, which is already a Groebner basis
ivHilbert(G,2); // invokes the procedure without any degree bound
==> 1,2,2,1
ivHilbert(I,2,5); // invokes the procedure with degree bound 5
==> 1,2,3,3,4,4