source: git/Singular/LIB/gkdim.lib @ 33b509

spielwiese
Last change on this file since 33b509 was 1e1ec4, checked in by Oleksandr Motsak <motsak@…>, 11 years ago
Updated LIBs according to master add: new LIBs from master fix: updated LIBs due to minpoly/(de)numerator changes fix: -> $Id$ fix: Fixing wrong rebase of SW on master (LIBs)
  • Property mode set to 100644
File size: 2.6 KB
Line 
1///////////////////////////////////////////////////////////////////////////////
2version="$Id$";
3category="Noncommutative";
4info="
5LIBRARY: gkdim.lib     Procedures for calculating the Gelfand-Kirillov dimension
6AUTHORS: Lobillo, F.J.,     jlobillo@ugr.es
7@*         Rabelo, C.,        crabelo@ugr.es
8
9Support: 'Metodos algebraicos y efectivos en grupos cuanticos', BFM2001-3141, MCYT, Jose Gomez-Torrecillas (Main researcher).
10
11NOTE: The built-in command @code{dim}, executed for a module in @plural, computes the Gelfand-Kirillov dimension.
12
13PROCEDURES:
14  GKdim(M);        Gelfand-Kirillov dimension computation of the factor-module, whose presentation is given by the matrix M.
15";
16
17///////////////////////////////////////////////////////////////////////////////////
18static proc idGKdim(ideal I)
19"USAGE:   idGKdim(I), I is a left ideal
20RETURN:  int, the Gelfand-Kirillov dimension of the R/I
21NOTE: uses the dim procedure, if the factor-module is zero, -1 is returned
22"
23{
24  if (attrib(I,"isSB")<>1)
25  {
26    I=std(I);
27  }
28
29  int d    = dim(I);
30  //  if (d==-1) {d++;} // The GK-dimension of a finite dimensional module is zero
31  // levandov: but for consistency, GKdim(std(1)) == -1,
32  //           mimicking the behaviour of dim() procedure.
33  return (d);
34}
35
36///////////////////////////////////////////////////////////////////////////////
37proc GKdim(list L)
38"USAGE:   GKdim(L);   L is a left ideal/module/matrix
39RETURN:  int
40PURPOSE: compute the Gelfand-Kirillov dimension of the factor-module, whose presentation is given by L, e.g. R^r/L
41NOTE:  if the factor-module is zero, -1 is returned
42EXAMPLE: example GKdim; shows examples
43"
44{
45  def M = L[1];
46  int d = -1;
47  if (typeof(M)=="ideal")
48  {
49    d=idGKdim(M);
50  }
51  else
52  {
53    if (typeof(M)=="matrix")
54    {
55      module N = module(M);
56      kill M;
57      module M = N;
58    }
59    if (typeof(M)=="module")
60    {
61      if (attrib(M,"isSB")<>1)
62      {
63        M=std(M);
64      }
65      d=dim(M);
66    }
67    else
68    {
69      ERROR("The input must be an ideal, a module or a matrix.");
70    }
71  }
72  return (d);
73}
74example
75{
76  "EXAMPLE:";echo=2;
77  ring R = 0,(x,y,z),Dp;
78  matrix C[3][3]=0,1,1,0,0,-1,0,0,0;
79  matrix D[3][3]=0,0,0,0,0,x;
80  def r = nc_algebra(C,D); setring r;
81  r;
82  ideal I=x;
83  GKdim(I);
84  ideal J=x2,y;
85  GKdim(J);
86  module M=[x2,y,1],[x,y2,0];
87  GKdim(M);
88  ideal A = x,y,z;
89  GKdim(A);
90  ideal B = 1;
91  GKdim(B);
92  GKdim(ideal(0)) == nvars(basering);  // should be true, i.e., evaluated to 1
93}
94///////////////////////////////////////////////////////////////////////////////
95proc gkdim(list L)
96{
97  return(GKdim(L));
98}
99///////////////////////////////////////////////////////////////////////////////
Note: See TracBrowser for help on using the repository browser.