/usr/share/singular/LIB/gkdim.lib is in singular-data 1:4.1.0-p3+ds-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | //////////////////////////////////////////////////////////////////////////////
version="version gkdim.lib 4.0.0.0 Jun_2013 "; // $Id: 9bd3587a6b567e4bb5339de91ac3afe94d3aeb31 $
category="Noncommutative";
info="
LIBRARY: gkdim.lib Procedures for calculating the Gelfand-Kirillov dimension
AUTHORS: Lobillo, F.J., jlobillo@ugr.es
@* Rabelo, C., crabelo@ugr.es
Support: 'Metodos algebraicos y efectivos en grupos cuanticos', BFM2001-3141, MCYT, Jose Gomez-Torrecillas (Main researcher).
NOTE: The built-in command @code{dim}, executed for a module in @plural, computes the Gelfand-Kirillov dimension.
PROCEDURES:
GKdim(M); Gelfand-Kirillov dimension computation of the factor-module, whose presentation is given by the matrix M.
";
///////////////////////////////////////////////////////////////////////////////////
static proc idGKdim(ideal I)
"USAGE: idGKdim(I), I is a left ideal
RETURN: int, the Gelfand-Kirillov dimension of the R/I
NOTE: uses the dim procedure, if the factor-module is zero, -1 is returned
"
{
if (attrib(I,"isSB")<>1)
{
I=std(I);
}
int d = dim(I);
// if (d==-1) {d++;} // The GK-dimension of a finite dimensional module is zero
// levandov: but for consistency, GKdim(std(1)) == -1,
// mimicking the behaviour of dim() procedure.
return (d);
}
///////////////////////////////////////////////////////////////////////////////
proc GKdim(list L)
"USAGE: GKdim(L); L is a left ideal/module/matrix
RETURN: int
PURPOSE: compute the Gelfand-Kirillov dimension of the factor-module, whose presentation is given by L, e.g. R^r/L
NOTE: if the factor-module is zero, -1 is returned
EXAMPLE: example GKdim; shows examples
"
{
def M = L[1];
int d = -1;
if (typeof(M)=="ideal")
{
d=idGKdim(M);
}
else
{
if (typeof(M)=="matrix")
{
module N = module(M);
kill M;
module M = N;
}
if (typeof(M)=="module")
{
if (attrib(M,"isSB")<>1)
{
M=std(M);
}
d=dim(M);
}
else
{
ERROR("The input must be an ideal, a module or a matrix.");
}
}
return (d);
}
example
{
"EXAMPLE:";echo=2;
ring R = 0,(x,y,z),Dp;
matrix C[3][3]=0,1,1,0,0,-1,0,0,0;
matrix D[3][3]=0,0,0,0,0,x;
def r = nc_algebra(C,D); setring r;
r;
ideal I=x;
GKdim(I);
ideal J=x2,y;
GKdim(J);
module M=[x2,y,1],[x,y2,0];
GKdim(M);
ideal A = x,y,z;
GKdim(A);
ideal B = 1;
GKdim(B);
GKdim(ideal(0)) == nvars(basering); // should be true, i.e., evaluated to 1
}
///////////////////////////////////////////////////////////////////////////////
proc gkdim(list L)
{
return(GKdim(L));
}
///////////////////////////////////////////////////////////////////////////////
|