|
7.7.7.0. ivDHilbertSickle
Procedure from library fpadim.lib (see fpadim_lib).
- Usage:
- ivDHilbertSickle(L,n[,degbound]); L a list of intmats, n an integer,
degbound an optional integer
- Return:
- list
- Purpose:
- Computing K-dimension, Hilbert series and mistletoes
- 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 L is the list returned, then L[1] is an integer, L[2] is an intvec
which contains the coefficients of the Hilbert series and L[3]
is a list, containing the mistletoes as intvecs.
- 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 = L[2] is the intvec 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
ivDHilbertSickle(G,2); // invokes the procedure without a degree bound
==> [1]:
==> 6
==> [2]:
==> 1,2,2,1
==> [3]:
==> [1]:
==> 1,2
==> [2]:
==> 2,1,2
ivDHilbertSickle(I,2,3); // invokes the procedure with degree bound 3
==> [1]:
==> 9
==> [2]:
==> 1,2,3,3
==> [3]:
==> [1]:
==> 1,2,2
==> [2]:
==> 2,1
==> [3]:
==> 2,2,1
==> [4]:
==> 2,2,2
|
|