Singular

7.7.7.0. ivKDim
Procedure from library `fpadim.lib` (see fpadim_lib).

Usage:
ivKDim(L,n[,degbound]); L a list of intmats,
n an integer, degbound an optional integer

Return:
int, the K-dimension of A/<L>

Purpose:
Computing the K-dimension of A/<L>

Assume:
- basering is a Letterplace ring.
- all rows of each intmat correspond to a Letterplace monomial
for the encoding of the variables see the overview
- if you specify a different degree bound degbound,
degbound <= attrib(basering,uptodeg) should hold.

Note:
- If degbound is set, a degree bound will be added. By default there
is no degree bound.
- n is the number of variables.
- If the K-dimension is known to be infinite, a degree bound is needed

Example:
 ```LIB "fpadim.lib"; ring r = 0,(x,y),dp; def R = makeLetterplaceRing(5); // constructs a Letterplace ring R; ==> // characteristic : 0 ==> // number of vars : 10 ==> // block 1 : ordering a ==> // : names x(1) y(1) x(2) y(2) x(3) y(3) x(4) y(4) x(\ 5) y(5) ==> // : weights 1 1 1 1 1 1 1 1 \ 1 1 ==> // block 2 : ordering dp ==> // : names x(1) y(1) ==> // block 3 : ordering dp ==> // : names x(2) y(2) ==> // block 4 : ordering dp ==> // : names x(3) y(3) ==> // block 5 : ordering dp ==> // : names x(4) y(4) ==> // block 6 : ordering dp ==> // : names x(5) y(5) ==> // block 7 : ordering C setring R; // sets basering to Letterplace ring //some intmats, which contain monomials in intvec representation as rows intmat I1 [2][2] = 1,1,2,2; intmat I2 [1][3] = 1,2,1; intmat J1 [1][2] = 1,1; intmat J2 [2][3] = 2,1,2,1,2,1; print(I1); ==> 1 1 ==> 2 2 print(I2); ==> 1 2 1 print(J1); ==> 1 1 print(J2); ==> 2 1 2 ==> 1 2 1 list G = I1,I2; // ideal, which is already a Groebner basis list I = J1,J2; // ideal, which is already a Groebner basis ivKDim(G,2); // invokes the procedure without any degree bound ==> 6 ivKDim(I,2,5); // invokes the procedure with degree bound 5 ==> 17 ```