# Singular

#### D.15.18.1 nchilb

Procedure from library `ncHilb.lib` (see ncHilb_lib).

Usage:
nchilb(list of relations, an integer, optional);
L is a list of modules (each module represents a free-polynomial), d is an integer for the degree bound,
# != NULL for non-finitely generated ideals;

Note :
The input ideal needs to be given in special form. It is a list of modules, where each generator of every module represents a monomial times a coefficient in the free associative algebra. The first entry, in each generator, represents a coefficient and every next entry is a variable.
Ex. module p1=[1,y,z],[-1,z,y] represents the poly y*z-z*y; module p2=[1,x,z,x],[-1,z,x,z] represents the poly x*z*x-z*x*z for more details about the input, see examples.

Example:
 ```LIB "ncHilb.lib"; ring r=0,(x,y,z),dp; module p1=[1,y,z],[-1,z,y]; //represents the poly y*z-z*y module p2=[1,x,z,x],[-1,z,x,z]; //represents the poly x*z*x-z*x*z list l1=list(p1,p2); nchilb(l1,6,1); //third argument is for non-finitely generated case ==> ==> 1/(t3+t2-3t+1) ==> ==> Orbit size = 6 ring r=0,(x,y,z,w),dp; ==> // ** redefining r (ring r=0,(x,y,z,w),dp;) module p1=[1,y,x],[-1,x,y]; //represents the poly y*x-x*y module p2=[1,z,x],[-1,x,z]; module p3=[1,w,x],[-1,x,w]; module p4=[1,z,y],[-1,y,z]; module p5=[1,w,y],[-1,y,w]; module p6=[1,w,z],[-1,z,w]; list l2=list(p1,p2,p3,p4,p5,p6); nchilb(l2,5); ==> ==> 1/(t4-4t3+6t2-4t+1) ==> ==> Orbit size = 5 ring r=0,(X,Y,Z),dp; ==> // ** redefining r (ring r=0,(X,Y,Z),dp;) module p1 =[1,Y,Z]; //represents the poly Y*Z module p2 =[1,Y,Z,X]; module p3 =[1,Y,Z,Z,X,Z]; module p4 =[1,Y,Z,Z,Z,X,Z]; module p5 =[1,Y,Z,Z,Z,Z,X,Z]; module p6 =[1,Y,Z,Z,Z,Z,Z,X,Z]; module p7 =[1,Y,Z,Z,Z,Z,Z,Z,X,Z]; module p8 =[1,Y,Z,Z,Z,Z,Z,Z,Z,X,Z]; list l3=list(p1,p2,p3,p4,p5,p6,p7,p8); nchilb(l3,10); ==> ==> 1/(t2-3t+1) ==> ==> Orbit size = 3 ring r=0,U(1..3),dp; ==> // ** redefining r (ring r=0,U(1..3),dp;) module p1=[1,U(2),U(3),U(3)]; module p2=[1,U(2),U(2),U(3)]; module p3=[1,U(1),U(3),U(3)]; module p4=[1,U(1),U(3),U(2)]; module p5=[1,U(1),U(2),U(3)]; module p6=[1,U(1),U(2),U(2)]; module p7=[1,U(1),U(1),U(3)]; module p8=[1,U(1),U(1),U(2)]; module p9=[1,U(2),U(3),U(2),U(3)]; module p10=[1,U(2),U(3),U(1),U(3)]; module p11=[1,U(2),U(3),U(1),U(2)]; module p12=[1,U(1),U(3),U(1),U(3)]; module p13=[1,U(1),U(3),U(1),U(2)]; module p14=[1,U(1),U(2),U(1),U(3)]; module p15=[1,U(1),U(2),U(1),U(2)]; module p16=[1,U(2),U(3),U(2),U(1),U(3)]; module p17=[1,U(2),U(3),U(2),U(1),U(2)]; module p18=[1,U(2),U(3),U(2),U(2),U(1),U(3)]; module p19=[1,U(2),U(3),U(2),U(2),U(1),U(2)]; module p20=[1,U(2),U(3),U(2),U(2),U(2),U(1),U(3)]; module p21=[1,U(2),U(3),U(2),U(2),U(2),U(1),U(2)]; list ll=list(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13, p14,p15,p16,p17,p18,p19,p20,p21); nchilb(ll,7,1); ==> ==> (-3t2-1)/(t3-3t2+3t-1) ==> ==> Orbit size = 7 ring r=0,(x,y,z),dp; ==> // ** redefining r (ring r=0,(x,y,z),dp;) module p1=[1,x,z,y,z,x,z]; module p2=[1,x,z,x]; module p3=[1,x,z,y,z,z,x,z]; module p4=[1,y,z]; module p5=[1,x,z,z,x,z]; list l1=list(p1,p2,p3,p4,p5); nchilb(l1,7); ==> ==> (t3+t2+1)/(2t5-2t4-t3+2t2-3t+1) ==> ==> Orbit size = 6 ```