# Singular

#### D.4.27.2 hilbert4ti2

Procedure from library sing4ti2.lib (see sing4ti2_lib).

Usage:
hilbert4ti2(A[,i]);
A=intmat
i=int

Assume:
- A is a matrix with integer entries which describes the lattice
as ker(A), if second argument is not present,
as the left image Im(A) = {zA : z \in ZZ^k}, if second argument is a positive integer
- number of variables of basering equals number of columns of A
(for ker(A)) resp. of rows of A (for Im(A))

Create:
temporary files sing4ti2.mat, sing4ti2.lat, sing4ti2.mar
in the current directory (I/O files for communication with 4ti2)

Note:
input rules for 4ti2 also apply to input to this procedure
hence ker(A)={x|Ax=0} and Im(A)={xA}

Return:
toric ideal specified by Hilbert basis thereof

Example:
 LIB "sing4ti2.lib"; ring r=0,(x1,x2,x3,x4,x5,x6,x7,x8,x9),dp; matrix M[7][9]=1,1,1,-1,-1,-1,0,0,0,1,1,1,0,0,0,-1,-1,-1,0,1,1,-1,0,0,-1,0,0,1,0,1,0,-1,0,0,-1,0,1,1,0,0,0,-1,0,0,-1,0,1,1,0,-1,0,0,0,-1,1,1,0,0,-1,0,-1,0,0; hilbert4ti2(M); ==> _[1]=x1^2*x3*x5*x6^2*x7*x8^2-1 ==> _[2]=x1*x3^2*x4^2*x5*x8^2*x9-1 ==> _[3]=x2^2*x3*x4^2*x5*x7*x9^2-1 ==> _[4]=x1*x2^2*x5*x6^2*x7^2*x9-1 ==> _[5]=x1*x2*x3*x4*x5*x6*x7*x8*x9-1