|
7.5.13.0. ncHilb
Procedure from library nchilbert.lib (see nchilbert_lib).
- Usage:
- ncHilb(M,j); M a module, j an int
- Return:
- intvec
- Assume:
- - M is given via a Groebner basis; j is 1 or 2;
- the weights of all the ring variables are positive
- Note:
- - computes the first (if j=1) or second (j=2) Hilbert series of I as intvec
- the procedure works analogously to the commutative procedure
hilb
- If the returned vector has the form v=(v_0,v_1,...,v_d,0) , then
the Hilbert series is v_0 + v_1*t + ... + v_d*t^d
Example:
| LIB "nchilbert.lib";
def A = makeUsl2(); setring A;
ideal I = e,h-1; I = std(I);
ncHilb(I,1); // first Hilbert series of A/I
==> Warning: the input generators are not a Groebner basis
==> The result might have no meaning
==> 1,-2,1,0
ncHilb(I,2); // second Hilbert series of A/I
==> Warning: the input generators are not a Groebner basis
==> The result might have no meaning
==> 1,0
ideal J = I, f^2; J = std(J);
ncHilb(J,2);
==> Warning: the input generators are not a Groebner basis
==> The result might have no meaning
==> 1,1,0
// now with weights 1,2,3
ring r = 0,(e,f,h),wp(1,2,3);
matrix D[3][3]; D[1,2]=-h; D[1,3]=2*e;D[2,3]=-2*f;
def R = nc_algebra(1,D); setring R;
ideal I = imap(A,I); I = std(I);
ncHilb(I,1); // first weighted Hilbert series of R/I
==> Warning: the input generators are not a Groebner basis
==> The result might have no meaning
==> 1,-1,0,-1,1,0
ncHilb(I,2); // second weighted Hilbert series of R/I
==> Warning: the input generators are not a Groebner basis
==> The result might have no meaning
==> 1,1,1,0
matrix M[2][5] =
e,h-1,f^2, 0,0,
0,0,0, e,h+1;
module G = std(M);
print(G);
==> e,0,h-1,0, f2,
==> 0,e,0, h+1,0
ncHilb(G,1); // first weighted Hilbert series of R^2/G
==> 2,-2,0,-2,1,1,0,1,-1,0
ncHilb(G,2); // second weighted Hilbert series of R^2/G
==> 2,2,2,0,-1,-1,-1,0
| See also:
hilb.
|