Changeset 67f529 in git


Ignore:
Timestamp:
Mar 18, 2004, 10:34:54 PM (20 years ago)
Author:
Viktor Levandovskyy <levandov@…>
Branches:
(u'spielwiese', 'a719bcf0b8dbc648b128303a49777a094b57592c')
Children:
972862b70bd04676f798402908397895dad57a38
Parents:
971833a66146e6f804f642b0f3cd2cba8c89dd05
Message:
*levandov: new algebras, design, static procs by motsak added


git-svn-id: file:///usr/local/Singular/svn/trunk@7095 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/lieA.lib

    r971833a r67f529  
    11///////////////////////////////////////////////////////////////////////////////
    2 version="$Id: lieA.lib,v 1.5 2003-10-17 16:02:52 levandov Exp $";
     2version="$Id: lieA.lib,v 1.6 2004-03-18 21:34:54 levandov Exp $";
    33category="Plural: Lie Theory";
    44info="
    5 LIBRARY:  lieA.lib      definitions of several enveloping algebras
     5LIBRARY:  lieA.lib      definitions of important G-algebras
    66AUTHORS:  Viktor Levandovskyy,     levandov@mathematik.uni-kl.de,
    77@*        Oleksandr Khomenko,      Oleksandr.Khomenko@math.uni-freiburg.de,
    8 @*        Oleksander Motsak
     8@*        Oleksandr Motsak,        motsak@mathematik.uni-kl.de
     9
    910
    1011PROCEDURES:
    11  A(n);                  returns U(A(n))=U(sl_{n+1})
    12  sl(n);                 returns U(sl_n)
    13  sl2();                 returns U(sl_2) in the {e,f,h} presentation
    14  g2();                  returns U(g_2) in the {x(i),y(i),Ha,Hb} presentation
    15  gl3();                 returns U(gl_3) in the {e_ij (1<i,j<3)} presentation
    16  Weyl(n);               returns n-th Weyl algebra in {x(i),D(i)} presentation
     12 A (n[,p]);               returns U(A(n))=U(sl_{n+1}) in char p, if an integer p is given,
     13 sl(n[,p]);               returns U(sl_n) in char p, if an integer p is given,
     14 sl2([ p]);               returns U(sl_2) in the {e,f,h} presentation; in char p, if an integer p is given,
     15 g2 ([ p]);               returns U(g_2) in the {x(i),y(i),Ha,Hb} presentation; in char p, if an integer p is given,
     16 gl3([ p]);               returns U(gl_3) in the {e_ij (1<i,j<3)} presentation; in char p, if an integer p is given,
    1717";
    1818
    19 ///////////////////////////////////////////////////////////////////////////////
    20 
    21 proc sl2()
    22 "USAGE:   sl2()
     19
     20///////////////////////////////////////////////////////////////////////////////
     21
     22// functions for debug/logging
     23
     24static proc mySetRing (string @baseName, list #)
     25// set @@@_RING to description of current ring
     26{
     27  if (defined( @@@_RING_NAME ))
     28  {
     29    kill @@@_RING_NAME;
     30  };
     31 
     32  if (string(#) != "0")
     33  {
     34    string @@@_RING_NAME = @baseName + "_" + string(#);
     35  } else
     36  {
     37    string @@@_RING_NAME = @baseName;
     38  };
     39  export(@@@_RING_NAME);
     40 
     41  if (defined( @@@_RING ))
     42  {
     43    kill @@@_RING;
     44  };
     45 
     46  string @@@_RING = "" + @baseName +"(" + string(#) + ")";
     47  export(@@@_RING);
     48
     49  if( defined(@@@_CHAR))
     50  {
     51    kill @@@_CHAR;
     52  };
     53 
     54  int @@@_CHAR = char(basering);
     55  export(@@@_CHAR);
     56}
     57
     58static proc myGetRing ()
     59// get desription of current ring
     60{
     61  if (defined( @@@_RING ))
     62  {
     63    return( @@@_RING );
     64  };
     65 
     66  return( "No lieA.lib ring defined" );
     67}
     68
     69static proc myGetRingName ()
     70// get desription of current ring, only family
     71{
     72  if (defined( @@@_RING_NAME ))
     73  {
     74    return( @@@_RING_NAME );
     75  };
     76 
     77  return( "No lieA.lib ring defined" );
     78}
     79
     80static proc myGetRingChar ()
     81// get desription of current ring, only family
     82{
     83  if (defined( @@@_CHAR ))
     84  {
     85    return( @@@_CHAR );
     86  };
     87 
     88  return( char(basering) );
     89}
     90
     91
     92static proc myInt ( list # )
     93// return 0 or int(#)
     94{
     95  int @p = 0;
     96  if ( size(#) > 0 )
     97  {
     98    if ( typeof( #[1] ) == "int" )
     99    {
     100      @p = #[1];
     101    }
     102  }
     103  return (@p);
     104}
     105
     106
     107///////////////////////////////////////////////////////////////////////////////
     108proc sl2(list #)
     109"USAGE:   sl2([p]), p an optional integer (field characteristic)
    23110RETURN:  ring, corresponding to the U(sl_2) in (e,f,h) presentation
    24111NOTE:    you have to activate this ring with the "setring" command
     
    26113EXAMPLE: example sl2; shows examples
    27114"{
    28    ring rrr=0,(e,f,h),dp;
    29    setring rrr;
    30    matrix D[3][3]=0;   
     115   int @p = myInt(#);
     116   ring @@@rrr=@p,(e,f,h),dp;
     117   matrix D[3][3]=0;
    31118   D[1,2]=-h;
    32119   D[1,3]=2*e;
    33120   D[2,3]=-2*f;
    34    system("PLURAL",1,D);
    35    return(rrr);
     121   ncalgebra(1,D);
     122   mySetRing("sl2", #);
     123   return(@@@rrr);
    36124}
    37125example
     
    42130}
    43131
    44 
    45 ///////////////////////////////////////////////////////////////////////////////
    46 proc sl(int n)
    47 "USAGE:   sl(n); n an integer, n>1
     132///////////////////////////////////////////////////////////////////////////////
     133
     134proc sl(int n, list #)
     135"USAGE:   sl(n,[p]); n an integer, n>1; p an optional integer (field characteristic)
    48136RETURN:  a ring, describing U(sl_n)
    49137NOTE:    You have to activate this ring with the "setring" command.
     
    52140         resp. negative roots are denoted by x(i) resp. y(i),
    53141         the Cartan elements are denoted by h(i).
    54 
    55142SEE ALSO: sl2
    56143EXAMPLE: example sl; shows examples
     
    63150  if (n==2)
    64151  {
    65     def a=sl2();
    66     return(a);
    67   }
    68   ring rr=0,(x(1..n*(n-1)/2),y(1..n*(n-1)/2),h(1..n-1)),dp;
     152    def @@@a=sl2(#);
     153    mySetRing("sl", n, #);
     154    return(@@@a);
     155  }
     156 
     157  int @p = myInt(#);
     158  ring @@@rr=@p,(x(1..n*(n-1)/2),y(1..n*(n-1)/2),h(1..n-1)),dp;
    69159  intmat CNT[n][n]=0;
    70160  matrix TMP[n][n]=0;
     
    72162  int buf=0; 
    73163  list X,Y,H;
    74 
    75   for(k=1;k<=n;k++)
    76   {
    77     for(l=k+1;l<=n;l++)
     164  for(k=1; k<=n; k++)
     165  {
     166    for(l=k+1; l<=n; l++)
    78167    {
    79       buf= (l-k-1)*(2*n-l+k)/2 + k;
    80       CNT[k,l]=buf;
    81       TMP[k,l]=1;
    82       X[buf]=TMP;
    83       TMP=0;
    84       CNT[l,k]=buf;
    85       TMP[l,k]=1;
    86       Y[buf]=TMP;
     168      buf = (l-k-1)*(2*n-l+k)/2 + k;
     169      CNT[k,l] = buf;
     170      TMP[k,l] = 1;
     171      X[buf] = TMP;
     172      TMP = 0;
     173      CNT[l,k] = buf;
     174      TMP[l,k] = 1;
     175      Y[buf] = TMP;
    87176      TMP=0;   
    88177    }
    89178  }
    90 
    91   for(k=1;k<=n-1;k++)
    92   {
    93    TMP[k,k]=1;
    94    TMP[k+1,k+1]=-1;
    95    H[k]=TMP;
    96    TMP=0;
     179 
     180  for(k=1; k<=n-1; k++)
     181  {
     182    TMP[k,k]=1;
     183    TMP[k+1,k+1]=-1;
     184    H[k]=TMP;
     185    TMP=0;
    97186  } 
    98187  int i,j=1,1;
     
    101190  int v=size(V);
    102191  matrix D[v][v]=0; 
    103   for(k=1;k<=v;k++)
    104   {
    105     for(l=k+1;l<=v;l++)
     192  for(k=1; k<=v; k++)
     193  {
     194    for(l=k+1; l<=v; l++)
    106195    {
    107196      TMP=V[l]*V[k]-V[k]*V[l];
    108       for(i=1;i<=n;i++)
     197      for(i=1; i<=n; i++)
    109198      {
    110         for(j=i+1;j<=n;j++)
     199        for(j=i+1; j<=n; j++)
    111200        {
    112201          buf=(j-i-1)*(2*n-j+i)/2+i;
    113202          if (TMP[i,j]!=0)
    114203          {
    115              D[k,l]=D[k,l]+leadcoef(TMP[i,j])*x(buf);
     204            D[k,l]=D[k,l]+leadcoef(TMP[i,j])*x(buf);
    116205          }
    117206         
    118207          if (TMP[j,i]!=0)
    119208          {         
    120              D[k,l]=D[k,l]+leadcoef(TMP[j,i])*y(buf);
     209            D[k,l]=D[k,l]+leadcoef(TMP[j,i])*y(buf);
    121210          }
    122211        }
     
    124213      i=1;
    125214      while ((TMP[i,i]==0)&&(i<n)) {i++;}
    126       for(j=i;j<=n-1;j++)
     215      for(j=i; j<=n-1; j++)
    127216      {
    128217        p=leadcoef(TMP[j,j]);
    129218        q=leadcoef(TMP[j+1,j+1]);
    130219        D[k,l]=D[k,l]+p*h(j);
    131 //        if ((j!=n-1)&&((p+q)!=0)) {D[k,l]=D[k,l]+(p+q)*h(j+1);}
     220        //        if ((j!=n-1)&&((p+q)!=0)) {D[k,l]=D[k,l]+(p+q)*h(j+1);}
    132221        TMP[j+1,j+1]=TMP[j+1,j+1]+p;
    133222      }
    134        
     223     
    135224    }
    136225  }
    137   system("PLURAL",1,D);
    138   return(rr);
     226  ncalgebra(1,D);
     227  mySetRing("sl", n, #); 
     228  return(@@@rr);
    139229}
    140230example
     
    144234   a;
    145235}
    146 ///////////////////////////////////////////////////////////////////////////////
    147 
    148 proc A(int n)
    149 "USAGE:   A(n); n an integer, n>1
     236
     237///////////////////////////////////////////////////////////////////////////////
     238
     239proc A(int n, list #)
     240"USAGE:   A(n,[p]); n an integer, n>1; , p an optional integer (field characteristic)
    150241RETURN:  a ring, describing U(A(n))
    151 NOTE:    You have to activate this ring with the "setring" command.
     242NOTE:    You have to activate this ring with the setring command.
    152243         The presentation of U(A(n)) is derived from the
    153244         standard representation of sl(n+1), positive
    154245         resp. negative roots are denoted by x(i) resp. y(i),
    155246         the Cartan elements are denoted by h(i).
    156 
    157247SEE ALSO: sl2, g2, gl3
    158248EXAMPLE: example A; shows examples
    159 {
     249"{
    160250  if (n<1)
    161251  {
    162     "Incorrect input";
     252    Print("Incorrect input");
    163253    return(0);
    164254  }
    165   def a=sl(n+1);
    166   return(a);
     255  def @@@a=sl(n+1, #);
     256  mySetRing("A", n, #);
     257  return(@@@a);
    167258}
    168259example
    169260{ "EXAMPLE:"; echo = 2;
    170    def a2=A(2);
     261 def a2=A(2);
    171262   setring a2;
    172263   a2;
    173264}
    174 ///////////////////////////////////////////////////////////////////////////////
    175 
    176 
    177 proc g2()
    178 "USAGE:   g2()
     265
     266///////////////////////////////////////////////////////////////////////////////
     267
     268proc g2(list #)
     269
     270"USAGE:   g2([p]), p an optional integer (field characteristic)
    179271RETURN:  ring, corresponding to the U(g_2) in (x(i),y(i),Ha,Hb) presentation
    180272NOTE:    you have to activate this ring with the "setring" command
     
    182274EXAMPLE: example g2; shows examples
    183275"{
    184 ring rrr=0,(x(1..6),y(1..6),Ha,Hb),dp;
    185 setring rrr;
    186 matrix D[14][14];
    187 D[1,2]=-x(3);
    188 D[1,3]=-2*x(4);
    189 D[1,4]=3*x(5);
    190 D[1,7]=-Ha;
    191 D[1,9]=3*y(2);
    192 D[1,10]=2*y(3);
    193 D[1,11]=-y(4);
    194 D[1,13]=2*x(1);
    195 D[1,14]=-x(1);
    196 D[2,5]=x(6);
    197 D[2,8]=-Hb;
    198 D[2,9]=-y(1);
    199 D[2,12]=-y(5);
    200 D[2,13]=-3*x(2);
    201 D[2,14]=2*x(2);
    202 D[3,4]=3*x(6);
    203 D[3,7]=3*x(2);
    204 D[3,8]=-x(1);
    205 D[3,9]=-Ha-3*Hb;
    206 D[3,10]=-2*y(1);
    207 D[3,12]=-y(4);
    208 D[3,13]=-x(3);
    209 D[3,14]=x(3);
    210 D[4,7]=2*x(3);
    211 D[4,9]=-2*x(1);
    212 D[4,10]=-2*Ha-3*Hb;
    213 D[4,11]=y(1);
    214 D[4,12]=y(3);
    215 D[4,13]=x(4);
    216 D[5,7]=-x(4);
    217 D[5,10]=x(1);
    218 D[5,11]=-Ha-Hb;
    219 D[5,12]=y(2);
    220 D[5,13]=3*x(5);
    221 D[5,14]=-x(5);
    222 D[6,8]=-x(5);
    223 D[6,9]=-x(4);
    224 D[6,10]=x(3);
    225 D[6,11]=x(2);
    226 D[6,12]=-Ha-2*Hb;
    227 D[6,14]=x(6);
    228 D[7,8]=y(3);
    229 D[7,9]=2*y(4);
    230 D[7,10]=-3*y(5);
    231 D[7,13]=-2*y(1);
    232 D[7,14]=y(1);
    233 D[8,11]=-y(6);
    234 D[8,13]=3*y(2);
    235 D[8,14]=-2*y(2);
    236 D[9,10]=-3*y(6);
    237 D[9,13]=y(3);
    238 D[9,14]=-y(3);
    239 D[10,13]=-y(4);
    240 D[11,13]=-3*y(5);
    241 D[11,14]=y(5);
    242 D[12,14]=-y(6);
    243 system("PLURAL",1,D);
    244 return(rrr);
     276  int @p = myInt(#);
     277  ring @@@rrr=@p,(x(1..6),y(1..6),Ha,Hb),dp;
     278  setring @@@rrr;
     279  matrix D[14][14];
     280  D[1,2]=-x(3);
     281  D[1,3]=-2*x(4);
     282  D[1,4]=3*x(5);
     283  D[1,7]=-Ha;
     284  D[1,9]=3*y(2);
     285  D[1,10]=2*y(3);
     286  D[1,11]=-y(4);
     287  D[1,13]=2*x(1);
     288  D[1,14]=-x(1);
     289  D[2,5]=x(6);
     290  D[2,8]=-Hb;
     291  D[2,9]=-y(1);
     292  D[2,12]=-y(5);
     293  D[2,13]=-3*x(2);
     294  D[2,14]=2*x(2);
     295  D[3,4]=3*x(6);
     296  D[3,7]=3*x(2);
     297  D[3,8]=-x(1);
     298  D[3,9]=-Ha-3*Hb;
     299  D[3,10]=-2*y(1);
     300  D[3,12]=-y(4);
     301  D[3,13]=-x(3);
     302  D[3,14]=x(3);
     303  D[4,7]=2*x(3);
     304  D[4,9]=-2*x(1);
     305  D[4,10]=-2*Ha-3*Hb;
     306  D[4,11]=y(1);
     307  D[4,12]=y(3);
     308  D[4,13]=x(4);
     309  D[5,7]=-x(4);
     310  D[5,10]=x(1);
     311  D[5,11]=-Ha-Hb;
     312  D[5,12]=y(2);
     313  D[5,13]=3*x(5);
     314  D[5,14]=-x(5);
     315  D[6,8]=-x(5);
     316  D[6,9]=-x(4);
     317  D[6,10]=x(3);
     318  D[6,11]=x(2);
     319  D[6,12]=-Ha-2*Hb;
     320  D[6,14]=x(6);
     321  D[7,8]=y(3);
     322  D[7,9]=2*y(4);
     323  D[7,10]=-3*y(5);
     324  D[7,13]=-2*y(1);
     325  D[7,14]=y(1);
     326  D[8,11]=-y(6);
     327  D[8,13]=3*y(2);
     328  D[8,14]=-2*y(2);
     329  D[9,10]=-3*y(6);
     330  D[9,13]=y(3);
     331  D[9,14]=-y(3);
     332  D[10,13]=-y(4);
     333  D[11,13]=-3*y(5);
     334  D[11,14]=y(5);
     335  D[12,14]=-y(6);
     336  ncalgebra(1,D);
     337  mySetRing("g2", #);
     338  return(@@@rrr);
    245339}
    246340example
     
    253347///////////////////////////////////////////////////////////////////////////////
    254348
    255 proc gl3()
    256 "USAGE:   gl3()
     349proc gl3(list #)
     350"USAGE:   gl3([p]), p an optional integer (field characteristic)
    257351RETURN:  ring, corresponding to the U(gl_3) in the (e_ij (1<i,j<3)) presentation
    258352NOTE:    you have to activate this ring with the "setring" command
     
    260354EXAMPLE: example gl3; shows examples
    261355"{
    262 ring rrr=0,(e11, e12, e13, e21, e22, e23, e31, e32, e33),dp;
    263 setring rrr;
    264 matrix D[9][9]=0;   
    265 D[1, 2]=-e12;
    266 D[1, 3]=-e13;
    267 D[1, 4]=e21;
    268 D[1, 7]=e31;
    269 D[2, 4]=e22-e11;
    270 D[2, 5]=-e12;
    271 D[2, 6]=-e13;
    272 D[2, 7]=e32;
    273 D[3, 4]=e23;
    274 D[3, 7]=e33-e11;
    275 D[3, 8]=-e12;
    276 D[3, 9]=-e13;
    277 D[4, 5]=e21;
    278 D[4, 8]=e31;
    279 D[5, 6]=-e23;
    280 D[5, 8]=e32;
    281 D[6, 7]=-e21;
    282 D[6, 8]=e33-e22;
    283 D[6, 9]=-e23;
    284 D[7, 9]=e31;
    285 D[8, 9]=e32;
    286 system("PLURAL",1,D);
    287 return(rrr);
     356  int @p = myInt(#);
     357  ring @@@rrr=@p,(e11, e12, e13, e21, e22, e23, e31, e32, e33),dp;
     358  setring @@@rrr;
     359  matrix D[9][9]=0;   
     360  D[1, 2]=-e12;
     361  D[1, 3]=-e13;
     362  D[1, 4]=e21;
     363  D[1, 7]=e31;
     364  D[2, 4]=e22-e11;
     365  D[2, 5]=-e12;
     366  D[2, 6]=-e13;
     367  D[2, 7]=e32;
     368  D[3, 4]=e23;
     369  D[3, 7]=e33-e11;
     370  D[3, 8]=-e12;
     371  D[3, 9]=-e13;
     372  D[4, 5]=e21;
     373  D[4, 8]=e31;
     374  D[5, 6]=-e23;
     375  D[5, 8]=e32;
     376  D[6, 7]=-e21;
     377  D[6, 8]=e33-e22;
     378  D[6, 9]=-e23;
     379  D[7, 9]=e31;
     380  D[8, 9]=e32;
     381  ncalgebra(1,D);
     382  mySetRing("gl3", #);
     383  return(@@@rrr);
    288384}
    289385example
     
    293389   g;
    294390}
    295 ///////////////////////////////////////////////////////////////////////////////
    296 
    297 proc Weyl(int n)
    298 "USAGE:   Weyl(n); n an integer, n>0
    299 RETURN:  a ring, describing n-th Weyl algebra over Q
    300 NOTE:    You have to activate this ring with the "setring" command.
    301          The presentation of n-th Weyl algebra is classical:
    302          D(i)x(i)=x(i)D(i)+1
    303 SEE ALSO: sl2
    304 EXAMPLE: example Weyl; shows examples
    305 "{
    306   if (n<1)
    307   {
    308     Print("Incorrect input");
    309     return(0);
    310   }
    311   ring @rr=0,(x(1..n),D(1..n)),dp;
    312   matrix @D[2*n][2*n];
    313   int i=1;
    314   for (i=1;i<=n;i++)
    315   {
    316     @D[i,n+i]=1;
    317   }
    318   system("PLURAL",1,@D);
    319   return(@rr);
    320 }
    321 example
    322 { "EXAMPLE:"; echo = 2;
    323    def a=Weyl(3);
    324    setring a;
    325    a;
    326 }
    327 ///////////////////////////////////////////////////////////////////////////////
     391
     392///////////////////////////////////////////////////////////////////////////////
     393
     394proc Qso3(list #)
     395"USAGE:   Qso3([n]), n an optional integer
     396RETURN:  ring, corresponding to the U'_q(so_3) in the presentation of Klimyk;
     397if n is specified, the quantum parameter Q will be specialized at the (2*n)-th root of unity
     398NOTE:    you have to activate this ring with the "setring" command
     399SEE ALSO: sl, Qsl3, g2, gl3
     400EXAMPLE: example Qso3; shows examples
     401"
     402{
     403  int @p = myInt(#);   
     404  ring @@@r=(0,Q),(x,y,z),dp;
     405  minpoly = RootOfUnity(2*p);
     406  matrix C[3][3];
     407  matrix D[3][3];
     408 
     409  C[1,2]=Q2;
     410  C[1,3]=1/Q2;
     411  C[2,3]=Q2;
     412 
     413  D[1,2]=-Q*z;
     414  D[1,3]=1/Q*y;
     415  D[2,3]=-Q*x;
     416 
     417  ncalgebra(C,D);
     418  mySetRing("Qso3", #);
     419  return(@@@r);
     420}
     421       
     422///////////////////////////////////////////////////////////////////////////////
     423
     424proc Qsl3(list #)
     425"USAGE:   Qsl3([n]), n an optional integer
     426RETURN:  ring, corresponding to the U_q(sl_3) as the factor algebra of
     427V_q(sl3); if n is specified, the quantum parameter q will be specialized at the n-th root of unity
     428NOTE:    you have to activate this ring with the "setring" command
     429SEE ALSO: sl, Qso3, g2, gl3
     430EXAMPLE: example Qso3; shows examples
     431"
     432{
     433  int @p = myInt(#);
     434  //   ring @@@rrr=(@p, q), (f12, f13, f23, k1, k2, l1, l2, e12, e13, e23), wp(7, 10, 11, 1, 1, 1, 1, 7, 10, 11);
     435 
     436  ring @@@rrr=(0, q), (f12, f13, f23, k1, k2, l1, l2, e12, e13, e23), wp(3, 5, 3, 1, 1, 1, 1, 1, 1, 1);
     437  if (@p >1)
     438  {
     439    minpoly = RootOfUnity(@p);
     440  }
     441  int @n = nvars(@@@rrr);
     442  matrix C[@n][@n];
     443  matrix D[@n][@n];
     444 
     445  int u,j;
     446  for(u=1; u<=@n; u++)
     447  {
     448    for(j=u; j<=@n; j++)
     449    {
     450      C[u,j]=1;
     451      D[u,j]=0;
     452    }
     453  }
     454 
     455  // some constants
     456  number q1 =    1/q;
     457  number Q  = (q )^2;
     458  number Q1 = (q1)^2;
     459  //   number QQ = Q - Q1; // q2 - 1/(q2)
     460  number QQ1= 1 / (Q - Q1);
     461 
     462  // relations:
     463  C[1,2] = Q1;
     464  C[2,3] = C[1,2];
     465  C[8,9] = C[1,2];
     466  C[9,10]= C[1,2];
     467  C[1,3] = Q;
     468  C[8,10]= C[1,3];
     469 
     470  D[1,3] = -q*(f13);
     471  D[8,10]= -q*(e13);
     472  // V_q(sl_3)
     473  D[1,8] = QQ1 * ( (k1) ^ 2 - (l1) ^ 2 );
     474  D[3,10]= QQ1 * ( (k2) ^ 2 - (l2) ^ 2 );
     475  D[2,9] = -QQ1 * ( ((k1)^2)*((k2)^2) - ((l1)^2)*((l2)^2) );
     476  D[2, 8] =   q * (f23) * ((k1)^2);
     477  D[3, 9] =   q * ((k2)^2) * (e12);
     478  D[1, 9] = -q1 * ((l1)^2) * (e23);
     479  D[2, 10]= -q1 * (f12) * ((l2)^2);
     480  // k1
     481  C[ 4, 8 ]= Q1;
     482  C[ 4, 9 ]= q1;
     483  C[ 4, 10]= q;
     484  // l1
     485  C[ 6, 8 ]= Q;
     486  C[ 6, 9 ]= q;
     487  C[ 6, 10]= q1;
     488  // k2
     489  C[ 5, 8 ]= q;
     490  C[ 5, 9 ]= q1;
     491  C[ 5, 10]= Q1;
     492  // l2
     493  C[ 7, 8 ]= q1;
     494  C[ 7, 9 ]= q;
     495  C[ 7, 10]= Q;
     496  // k1
     497  C[ 1, 4 ]= Q1;
     498  C[ 2, 4 ]= q1;
     499  C[ 3, 4 ]= q;
     500  // l1
     501  C[ 1, 6 ]= Q;
     502  C[ 2, 6 ]= q;
     503  C[ 3, 6 ]= q1;
     504  // k2
     505  C[ 1, 5 ]= q;
     506  C[ 2, 5 ]= q1;
     507  C[ 3, 5 ]= Q1;
     508  // l2
     509  C[ 1, 7 ]= q1;
     510  C[ 2, 7 ]= q;
     511  C[ 3, 7 ]= Q;
     512  ncalgebra(C,D); // the V_q(sl3) is done
     513  ideal I = k1*l1-1,  k2*l2-1;
     514  I = system("twostd",I);
     515  qring @@qr = I;
     516  mySetRing("Qsl3", #);
     517  return(@@qr);
     518}
     519
     520///////////////////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.