# Singular

##### 7.7.12.0. GKZsystem
Procedure from library `ncalg.lib` (see ncalg_lib).

Usage:
GKZsystem(A, sord, alg, [,v]); A intmat, sord, alg string, v intvec

Return:
ring

Purpose:
define a ring (Weyl algebra) and create a Gelfand-Kapranov-Zelevinsky (GKZ) system of equations in a ring from the following data:
`A` is an intmat, defining the system,
`sord` is a string with desired term ordering,
`alg` is a string, saying which algorithm to use (exactly like in toric_lib),
`v` is an optional intvec.
In addition, the ideal called `GKZid` containing actual equations is calculated and exported to the ring.

Note:
activate the output ring with the `setring` command. This procedure is elaborated by Oleksandr Iena

Assume:
This procedure uses toric_lib and therefore inherits its input requirements:
possible values for input variable `alg` are: "ect","pt","blr", "hs", "du".
As for the term ordering, it should be a string `sord` in Singular format like "lp","dp", etc.
Please consult the toric_lib for allowed orderings and more details.

Example:
 ```LIB "ncalg.lib"; // example 3.1.4 from the [SST] without the vector w intmat A[2][4]=3,2,1,0,0,1,2,3; print(A); ==> 3 2 1 0 ==> 0 1 2 3 def D1 = GKZsystem(A,"lp","ect"); setring D1; D1; ==> // coefficients: QQ(b(1), b(2)) ==> // number of vars : 8 ==> // block 1 : ordering a ==> // : names x(1) x(2) x(3) x(4) ==> // : weights 0 0 0 0 ==> // block 2 : ordering lp ==> // : names x(1) x(2) x(3) x(4) d(1) d(2) d(3) d(4) ==> // block 3 : ordering C ==> // noncommutative relations: ==> // d(1)x(1)=x(1)*d(1)+1 ==> // d(2)x(2)=x(2)*d(2)+1 ==> // d(3)x(3)=x(3)*d(3)+1 ==> // d(4)x(4)=x(4)*d(4)+1 print(GKZid); ==> 3*x(1)*d(1)+2*x(2)*d(2)+x(3)*d(3)+(-b(1)), ==> x(2)*d(2)+2*x(3)*d(3)+3*x(4)*d(4)+(-b(2)), ==> d(2)*d(4)-d(3)^2, ==> d(1)*d(4)-d(2)*d(3), ==> d(1)*d(3)-d(2)^2 // now, consider A with the vector w=1,1,1,1 intvec v=1,1,1,1; def D2 = GKZsystem(A,"lp","blr",v); setring D2; print(GKZid); ==> 3*x(1)*d(1)+2*x(2)*d(2)+x(3)*d(3)+(-b(1)), ==> x(2)*d(2)+2*x(3)*d(3)+3*x(4)*d(4)+(-b(2)), ==> d(2)*d(4)-d(3)^2, ==> d(1)*d(4)-d(2)*d(3), ==> d(1)*d(3)-d(2)^2 ```