/////////////////////////////////////////////////////////////////////////////// version="$Id$"; 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). 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)); } ///////////////////////////////////////////////////////////////////////////////