Changeset 60544d in git


Ignore:
Timestamp:
Feb 9, 2008, 12:28:01 AM (15 years ago)
Author:
Viktor Levandovskyy <levandov@…>
Branches:
(u'spielwiese', '91fdef05f09f54b8d58d92a472e9c4a43aa4656f')
Children:
b0db25abf3084c7d7d01f25d0aba758412326e95
Parents:
093f30ed98c16ff1ec739d588efdfea696a6f4b6
Message:
*levandov: fixes and updates


git-svn-id: file:///usr/local/Singular/svn/trunk@10574 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
Singular/LIB
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/dmodapp.lib

    r093f30e r60544d  
    11//////////////////////////////////////////////////////////////////////////////
    2 version="$Id: dmodapp.lib,v 1.2 2008-02-05 22:44:29 levandov Exp $";
     2version="$Id: dmodapp.lib,v 1.3 2008-02-08 23:28:01 levandov Exp $";
    33category="Noncommutative";
    44info="
     
    2525AUXILIARY PROCEDURES:
    2626
    27 Appell(a,b,c,d);      create an ideal annihilating Appel F4 function
     27AppelF1();      create an ideal annihilating Appel F1 function
     28AppelF2();      create an ideal annihilating Appel F2 function
     29AppelF4();      create an ideal annihilating Appel F4 function
    2830
    2931SEE ALSO: dmod_lib, gmssing_lib
     
    143145
    144146
    145 proc Appel(number a,b,c,d)
    146 {
     147proc AppelF1()
     148//(number a,b,c,d)
     149{
     150  // Appel F1, d = b', SST p.48
     151  ring @r = (0,a,b,c),(x,y,Dx,Dy),(a(0,0,1,1),dp);
     152  matrix @D[4][4];
     153  @D[1,3]=1; @D[2,4]=1;
     154  def @S = nc_algebra(1,@D);
     155  setring @S;
     156  ideal IAppel1 =
     157    (x*Dx)*(x*Dx+y*Dy+c-1) - x*(x*Dx+y*Dy+a)*(x*Dx+b),
     158    (y*Dy)*(x*Dx+y*Dy+c-1) - y*(x*Dx+y*Dy+a)*(x*Dx+d),
     159    (x-y)*Dx*Dy - d*Dx + b*Dy;
     160  export IAppel1;
     161  kill @r;
     162  return(@S);
     163}
     164example
     165{
     166  "EXAMPLE:"; echo = 2;
     167  ring r = 0,x,dp;
     168  def A = AppelF1(); //(1,2,3,4);
     169  setring A;
     170  IAppel1;
     171}
     172
     173proc AppelF2()
     174//(number a,b,c)
     175{
     176  // Appel F2, c = b', SST p.85
     177  ring @r = (0,a,b,c),(x,y,Dx,Dy),(a(0,0,1,1),dp);
     178  matrix @D[4][4];
     179  @D[1,3]=1; @D[2,4]=1;
     180  def @S = nc_algebra(1,@D);
     181  setring @S;
     182  ideal IAppel2 =
     183    (x*Dx)^2 - x*(x*Dx+y*Dy+a)*(x*Dx+b),
     184    (y*Dy)^2 - y*(x*Dx+y*Dy+a)*(y*Dy+c);
     185  export IAppel2;
     186  kill @r;
     187  return(@S);
     188}
     189example
     190{
     191  "EXAMPLE:"; echo = 2;
     192  ring r = 0,x,dp;
     193  def A = AppelF2(); //(1,2,3,4);
     194  setring A;
     195  IAppel2;
     196}
     197
     198proc AppelF4()
     199//number a,b,c,d - ?
     200{
     201  // Appel F4, d = c', SST, p. 39
    147202  ring @r = (0,a,b,c,d),(x,y,Dx,Dy),(a(0,0,1,1),dp);
    148203  matrix @D[4][4];
     
    150205  def @S = nc_algebra(1,@D);
    151206  setring @S;
    152   ideal IAppel =
     207  ideal IAppel4 =
    153208    Dx*(x*Dx+c-1) - x*(x*Dx+y*Dy+a)*(x*Dx+y*Dy+b),
    154209    Dy*(y*Dy+d-1) - y*(x*Dx+y*Dy+a)*(x*Dx+y*Dy+b);
    155   export IAppel;
     210  export IAppel4;
    156211  kill @r;
    157212  return(@S);
     
    161216  "EXAMPLE:"; echo = 2;
    162217  ring r = 0,x,dp;
    163   def Ap = Appel(1,2,3,4);
    164   setring Ap;
    165   IAppel;
     218  def A = AppelF4(); //(1,2,3,4);
     219  setring A;
     220  IAppel4;
    166221}
    167222
     
    172227  /*  for simplicity : later check attrib */
    173228  /* returns -1 if true */
    174   I = groebner(I);
     229  if (attrib(I,"isSB")!=1)
     230  {
     231    I = groebner(I);
     232  }
    175233  matrix @M = matrix(I);
    176234  matrix @F[1][1] = F;
     
    196254"USAGE:  DLoc(I, F);  I an ideal, F a poly
    197255RETURN: nothing (exports objects instead)
    198 ASSUME: the basering is a Weyl algebra
     256ASSUME: the basering is a Weyl algebra and I is F-saturated
    199257PURPOSE: compute the presentation of the localization of D/I w.r.t. f^s
    200258NOTE:    In the basering, the following objects are exported:
  • Singular/LIB/nchomolog.lib

    r093f30e r60544d  
    1 version="$Id: nchomolog.lib,v 1.6 2007-12-11 12:00:01 levandov Exp $";
     1version="$Id: nchomolog.lib,v 1.7 2008-02-08 23:28:01 levandov Exp $";
    22category="Noncommutative";
    33info="
     
    258258{ "EXAMPLE:"; echo = 2;
    259259  ring R     = 0,(x,y),dp;
    260   poly F    = x2-y3;
     260  poly F    = x2-y2;
    261261  def A = annfs(F);
    262262  setring A;
    263263  matrix M[1][size(LD)] = LD;
    264   int i = 1;
    265   matrix Ps = M;
    266   module E1  = ncExt_R(1,M);
    267   E1;
     264  print(ncExt_R(1,M)); // hence the Ext^1 is zero
     265  module E  = ncExt_R(2,M); // right module
     266  print(E);
    268267  def Aop = opposite(A);
    269268  setring Aop;
    270   module Psop = oppose(A,Ps);
    271   module T1  = ncExt_R(1,Psop);
    272   T1;
     269  module Eop = oppose(A,E);
     270  module T1  = ncExt_R(2,Eop);
     271  setring A;
     272  module T1 = oppose(Aop,T1);
     273  print(T1); // this is a left module Ext^2(Ext^2(M,A),A)
    273274}
    274275
     
    541542
    542543proc dmodoublext(module M, list #)
    543 {
    544   // if a list is nonempty and contains an integer N, n = N; otherwise n = nvars/2
    545   // assume: basering is a Weyl algebra
    546   // returns Ext^n_D(Ext^n_D(M,D),D), that is
    547   // computes the "dual" of the "dual" of a d-mod M (for n = nvars/2)
     544"USAGE:   dmodoublext(M [,i]);  M module, i optional int
     545COMPUTE:  a presentation of Ext^i(Ext^i(M,D),D); for basering D
     546RETURN:   left module
     547NOTE: by default, i is set to the integer part of the half of number of variables of D
     548@* for holonomic modules over Weyl algebra, the double ext is known to be holonomic
     549EXAMPLE: example dmodoublext; shows an example
     550"
     551{
     552  // assume: basering is a Weyl algebra?
    548553  def save = basering;
    549554  setring save;
    550   int n = nvars(save); n = n div 2;
     555  // if a list is nonempty and contains an integer N, n = N; otherwise n = nvars/2
     556  int n;
     557  if (size(#) > 0)
     558  {
     559    //    if (typeof(#) == "int")
     560    //    {
     561      n = int(#[1]);
     562      //    }
     563//     else
     564//     {
     565//       ERROR("the optional argument expected to have type int");
     566//     }
     567  }
     568  else
     569  {
     570    n = nvars(save); n = n div 2;
     571  }
     572  // returns Ext^i_D(Ext^i_D(M,D),D), that is
     573  // computes the "dual" of the "dual" of a d-mod M (for n = nvars/2)
    551574  module Md = ncExt_R(n,M); // right module
    552575  // no prune yet!
     
    581604  ideal I = Dx*(x2-y3),Dy*(x2-y3);
    582605  I = groebner(I);
    583   print(dmodoublext(I));
     606  print(dmodoublext(I,1));
     607  print(dmodoublext(I,2));
    584608}
    585609
  • Singular/LIB/ratgb.lib

    r093f30e r60544d  
    11//////////////////////////////////////////////////////////////////////////////
    2 version="$Id: ratgb.lib,v 1.10 2008-02-05 22:44:30 levandov Exp $";
     2version="$Id: ratgb.lib,v 1.11 2008-02-08 23:28:01 levandov Exp $";
    33category="Noncommutative";
    44info="
     
    1515
    1616//static
    17 proc rm_content_id(ideal J)
    18 "USAGE:  rm_content_id(I);  I an ideal
    19 RETURN:  ideal
     17proc rm_content_id(def J)
     18"USAGE:  rm_content_id(I);  I an ideal/module
     19RETURN:  the same type as input
    2020PURPOSE: remove the content of every generator of I
    2121EXAMPLE: example rm_content_id; shows examples
    2222"
    2323{
    24   ideal I = J;
     24  def I = J;
    2525  int i;
    26   int s = size(I);
     26  int s = ncols(I);
    2727  for (i=1; i<=s; i++)
    2828  {
     
    4141  I;
    4242  rm_content_id(I);
    43 }
    44 
    45 proc ratstd(ideal I, int is)
    46 "USAGE:  ratstd(I, n);  I an ideal, n an integer
     43  module M = I[1]*gen(1), I[2]*gen(2);
     44  print(rm_content_id(M));
     45}
     46
     47proc ratstd(def I, int is)
     48"USAGE:  ratstd(I, n);  I an ideal/module, n an integer
    4749RETURN:  ring
    4850PURPOSE: compute the Groebner basis of I in the Ore localization of
     
    154156  // 2. preprocess input with rm_content_id
    155157  setring @RAT;
    156   ideal CI = imap(save,I);
     158  dbprint(ppl-1, @RAT);
     159  //  ideal CI = imap(save,I);
     160  def CI = imap(save,I);
    157161  CI = rm_content_id(CI);
     162  dbprint(ppl-1, CI);
    158163
    159164  dbprint(ppl,"// -3- running groebner");
    160165  // 3. compute G = GB(I) wrt. the elim. ord. for D
    161166  setring save;
    162   ideal CI = imap(@RAT,CI);
     167  //  ideal CI = imap(@RAT,CI);
     168  def CI = imap(@RAT,CI);
    163169  option(redSB);
    164170  option(redTail);
    165   ideal G = groebner(CI); // although slimgb looks better
     171  //  ideal G = groebner(CI); // although slimgb looks better
     172  def G = groebner(CI);
    166173  G = simplify(G,2); // to be sure there are no 0's
     174  dbprint(ppl-1, G);
    167175
    168176  dbprint(ppl,"// -4- postprocessing with content");
    169177  // 4. postprocess the output with 1) rm_content_id,  2) lm-minimization;
    170178  setring @RAT;
    171   ideal CG = imap(save,G);
     179  // ideal CG = imap(save,G);
     180  def CG = imap(save,G);
    172181  CG = rm_content_id(CG);
    173182  CG = simplify(CG,2);
     183  dbprint(ppl-1, CG);
    174184
    175185  // warning: a bugfarm! in this ring, the ordering might change!!! (see appelF4)
     
    181191  G = imap(@RAT,CG);
    182192  int sG  = ncols(G);
    183   ideal LG;
    184   for (i=1; i<= sG; i++)
    185   {
    186     LG[i] = lead(G[i]);
    187   }
     193  //  ideal LG;
     194  def LG = G;
     195   for (i=1; i<= sG; i++)
     196   {
     197     LG[i] = lead(G[i]);
     198   }
    188199  // compute the D-dimension of the ideal in the ring @RAT
    189200  setring @RAT;
    190   ideal LG = imap(save,LG);
    191   ideal LGG = groebner(LG); // cosmetics
     201  //  ideal LG = imap(save,LG);
     202  def LG = imap(save,LG);
     203  //  ideal LGG = groebner(LG); // cosmetics
     204  def LGG = groebner(LG); // cosmetics
    192205  int d = dim(LGG);
    193206  int Ddim = d;
     
    199212    printf("the K-dimension is %s",d);
    200213  }
    201   ideal SLG = simplify(LG,8+32); //contains zeros
    202   setring save;
    203   ideal SLG = imap(@RAT,SLG);
     214  //  ideal SLG = simplify(LG,8+32); //contains zeros
     215  def SLG = simplify(LG,8+32); //contains zeros
     216  setring save;
     217  //  ideal SLG = imap(@RAT,SLG);
     218  def SLG = imap(@RAT,SLG);
    204219  // simplify(LG,8+32); //contains zeros
    205220  intvec islg;
     
    229244  //  G = imap(@RAT,CG);
    230245  // return the result
    231   ideal pGBid = G;
     246  //  ideal pGBid = G;
     247  def pGBid = G;
    232248  export pGBid;
    233249  //  export Ddim;
    234250  //  export Dvdim;
    235251  setring @RAT;
    236   ideal rGBid = imap(save,G);
     252  //  ideal rGBid = imap(save,G);
     253  def rGBid = imap(save,G);
    237254  // CG;
    238255  export rGBid;
     
    245262{
    246263  "EXAMPLE:"; echo = 2;
    247   ring r = 0,(k,n,K,N),(a(0,0,1,1),dp);
     264  ring r = 0,(k,n,K,N),(a(0,1),dp);
    248265  matrix D[4][4];
    249266  D[1,3] = K;
     
    252269  setring S;
    253270  ideal I = (k+1)*K - (n-k), (n-k+1)*N - (n+1);
    254   int is = 2;
     271  int is = 1;
    255272  def A  = ratstd(I,is);
    256273  pGBid; // polynomial form
Note: See TracChangeset for help on using the changeset viewer.