Changeset 920a1e in git


Ignore:
Timestamp:
Mar 2, 2010, 7:56:03 PM (13 years ago)
Author:
Viktor Levandovskyy <levandov@…>
Branches:
(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
Children:
92f22582e01a56afdab3e7f9e6f70f47bf4230e5
Parents:
e1cb99e6603e14230e36591822670ccc7436520a
Message:
*levandov: protocol added, slimgb set as default choice, minor fixes 

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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/ncdecomp.lib

    re1cb99 r920a1e  
    1414PROCEDURES:
    1515CentralQuot(M,G);       central quotient M:G,
    16 CentralSaturation(M,T); central saturation ((M:T):...):T) ( = M:T^{\infty}),
     16CentralSaturation(M,T); central saturation ((M:T):...):T) ( = M:T^infinity),
    1717CenCharDec(I,C);        decomposition of I into central characters w.r.t. C
    1818IntersectWithSub(M,Z);  intersection of M with the subalgebra, generated by pairwise commutative elements of Z.
     
    3535static proc CharKernel(list L, int i)
    3636{
     37 // todo: think on more effective way of doing it...
    3738// compute \cup L[j], j!=i
    3839  int sL = size(L);
     
    5758  }
    5859//  print("intersecting kernels...");
    59   module Cres = intersect(Li[1..size(Li)]);
     60  module Cres = intersect(Li[1..size(Li)]); // uses std, try modulo!
    6061  return(Cres);
    6162}
     
    9798  if (attrib(A,"isSB")!=1)
    9899  {
    99     A = std(A);
     100    A = slimgb(A);
    100101  }
    101102  if (attrib(B,"isSB")!=1)
    102103  {
    103     B = std(B);
     104    B = slimgb(B);
    104105  }
    105106  int ANSWER = 1;
     
    152153   I = std(I);
    153154   poly C=4*e*f+h^2-2*h;  // C in Z(U(sl2)), the central element
    154    ideal G = (C-8)*(C-24);  // G normal factor in Z(U(sl2)), subideal in the center
     155   ideal G = (C-8)*(C-24);  // G normal factor in Z(U(sl2)) as an ideal in the center
    155156   ideal R = CentralQuot(I,G);  // same as I:G
    156157   R;
     
    239240    ERROR("ideal in the 2nd argument is not in the center of the base ring!");
    240241  }
    241 
     242  int ppl = printlevel-voice+2;
    242243// M = A/I
    243244//1. Find the Zariski closure of Supp_Z M
     
    270271  }
    271272  @Ker = @Ker,I;
    272   ideal @JcapZ = eliminate(@Ker,t);
     273  //  ideal @JcapZ = eliminate(@Ker,t);
     274  dbprint(ppl,"// -1-1- starting the computation of preimage in Z");
     275  dbprint(ppl-1, @Ker);
     276  ideal @JcapZ = slimgb(@Ker);
     277  @JcapZ = nselect(@JcapZ,intvec(1..nvars(@A)));
     278  dbprint(ppl,"// -1-2- finished the computation of preimage in Z");
     279  dbprint(ppl-1, @JcapZ);
    273280// do not forget parameters of a basering!
     281// hmmm: todo ringlist
    274282  string strZ="ring @@Z=("+charstr(@A)+"),(@z(1.."+string(sZ)+")),dp;";
    275283//  print(strZ);
     
    277285  setring @@Z;
    278286  ideal @JcapZ = imap(@ZplusA,@JcapZ);
    279   @JcapZ = std(@JcapZ);
     287  dbprint(ppl,"// -1-3- starting the cosmetic Groebner basis in Z");
     288  @JcapZ = slimgb(@JcapZ); // evtl. groebner?
    280289//  @JcapZ;
     290  dbprint(ppl,"// -1-4- finished the cosmetic Groebner basis in Z");
     291  dbprint(ppl-1, @JcapZ);
    281292  int sJ = vdim(@JcapZ);
     293  dbprint(ppl,"// -1-5- the K-dimension of support is "+string(sJ));
    282294  if (sJ==-1)
    283295  {
     
    287299//  print(@JcapZ);
    288300// 2. compute the min.ass.primes of the ideal in the center
     301  dbprint(ppl,"// -2-1- starting the computation of minimal primes in Z");
    289302  list @L = minAssGTZ(@JcapZ);
    290303  int sL = size(@L);
     304  dbprint(ppl,"// -2-2- finished the computation of " + string(sL)+ " minimal primes in Z");
    291305//  print("etL:");
    292306//  @L;
     
    294308  if (sL ==1)
    295309  {
     310    dbprint(ppl-1,"// -2-3- the whole module is gen. weight module itself");
    296311    setring @A;
    297312    map @M = @@Z,Center[1..size(Center)];
     
    308323      @R[2] = ideal(@R[2]);
    309324    }
    310     @R[2] = std(@R[2]);
     325    dbprint(ppl-1,"// -2-4- final cosmetic Groebner basis");
     326    @R[2] = slimgb(@R[2]);
    311327    @R[3] = vdim(@R[2]);
    312     return(@R);
    313   }
     328    return(list(@R)); // for compliance with output a list
     329  }
     330  dbprint(ppl-1,"// -2-3- there are several characters");
     331  dbprint(ppl,"// -*- computing Groebner bases of components (commutative)");
    314332  list @CharKer;
    315333  for(i=1; i<=sL; i++)
    316334  {
    317     @L[i] = std(@L[i]);
    318   }
     335    @L[i] = slimgb(@L[i]);
     336  }
     337  dbprint(ppl,"// -*- finished computing Groebner bases of components");
    319338// 3. compute the intersections of characters
     339  dbprint(ppl,"// -3- compute the intersections of characters");
    320340  for(i=1; i<=sL; i++)
    321341  {
    322342    @CharKer[i] = CharKernel(@L,i);
    323343  }
    324 //  print("Charker:");
    325 //  @CharKer;
     344  dbprint(ppl,"// -3- the intersections of characters is done");
     345  //  dbprint(ppl-1,@CharKer);
    326346// 4. Go back to the algebra and compute central saturations
    327347  setring @A;
     
    329349  list L = @M(@CharKer);
    330350  list R,@R;
     351  dbprint(ppl,"// -4- compute the central saturations");
     352  dbprint(ppl-1,@CharKer);
    331353  for(i=1; i<=sL; i++)
    332354  {
     
    341363      @R[2] = ideal(@R[2]);
    342364    }
    343     @R[2] = std(@R[2]);
     365    @R[2] = slimgb(@R[2]);
    344366    @R[3] = vdim(@R[2]);
    345367     R[i] = @R;
    346368  }
     369  dbprint(ppl,"// -4- central saturations are done");
    347370  return(R);
    348371}
    349372example
    350 { "EXAMPLE:"; echo = 2;
     373{ "EXAMPLE:"; echo = 2; printlevel=0;
    351374   option(returnSB);
    352375   def a = makeUsl2(); // U(sl_2) in characteristic 0
     
    401424      if (p!=0)
    402425      {
    403         "Error: generators of the subalgebra do not commute.";
    404         return(ideal(0));
     426        ERROR("generators of the subalgebra do not commute.");
     427        //        return(ideal(0));
    405428      }
    406429    }
     
    410433  setring B;
    411434  string s1,s2;
     435  // todo: make ringlist from it!
    412436  s1 = "ring @Z = (";
    413437  s2 = s1 + charstr(basering) + "),(z(1.." + string(nz)+")),Dp";
     
    417441  map F = @Z,Z;
    418442  setring @Z;
    419   ideal PreM = preimage(B,F,M);
    420   PreM = std(PreM);
     443  ideal PreM = preimage(B,F,M); // reformulate using gb engine? todo?
     444  PreM = slimgb(PreM);
    421445  setring B;
    422446  ideal T = F(PreM);
     
    428452  ring R=(0,a),(e,f,h),Dp;
    429453  matrix @d[3][3];
    430   @d[1,2]=-h;
    431   @d[1,3]=2e;
    432   @d[2,3]=-2f;
     454  @d[1,2]=-h;   @d[1,3]=2e;   @d[2,3]=-2f;
    433455  def r = nc_algebra(1,@d); setring r; // parametric U(sl_2)
    434456  ideal I = e,h-a;
Note: See TracChangeset for help on using the changeset viewer.