Home Online Manual
Top
Back: Qso3Casimir
Forward: ncdecomp_lib
FastBack: gkdim_lib
FastForward: ncdecomp_lib
Up: ncalg_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document
7.7.11.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 @sc{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;
==> //   characteristic : 0
==> //   2 parameter    : b(1) b(2) 
==> //   minpoly        : 0
==> //   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
See also: toric_lib.