Changeset 920a1e in git
- Timestamp:
- Mar 2, 2010, 7:56:03 PM (13 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 92f22582e01a56afdab3e7f9e6f70f47bf4230e5
- Parents:
- e1cb99e6603e14230e36591822670ccc7436520a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/ncdecomp.lib
re1cb99 r920a1e 14 14 PROCEDURES: 15 15 CentralQuot(M,G); central quotient M:G, 16 CentralSaturation(M,T); central saturation ((M:T):...):T) ( = M:T^ {\infty}),16 CentralSaturation(M,T); central saturation ((M:T):...):T) ( = M:T^infinity), 17 17 CenCharDec(I,C); decomposition of I into central characters w.r.t. C 18 18 IntersectWithSub(M,Z); intersection of M with the subalgebra, generated by pairwise commutative elements of Z. … … 35 35 static proc CharKernel(list L, int i) 36 36 { 37 // todo: think on more effective way of doing it... 37 38 // compute \cup L[j], j!=i 38 39 int sL = size(L); … … 57 58 } 58 59 // print("intersecting kernels..."); 59 module Cres = intersect(Li[1..size(Li)]); 60 module Cres = intersect(Li[1..size(Li)]); // uses std, try modulo! 60 61 return(Cres); 61 62 } … … 97 98 if (attrib(A,"isSB")!=1) 98 99 { 99 A = s td(A);100 A = slimgb(A); 100 101 } 101 102 if (attrib(B,"isSB")!=1) 102 103 { 103 B = s td(B);104 B = slimgb(B); 104 105 } 105 106 int ANSWER = 1; … … 152 153 I = std(I); 153 154 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 center155 ideal G = (C-8)*(C-24); // G normal factor in Z(U(sl2)) as an ideal in the center 155 156 ideal R = CentralQuot(I,G); // same as I:G 156 157 R; … … 239 240 ERROR("ideal in the 2nd argument is not in the center of the base ring!"); 240 241 } 241 242 int ppl = printlevel-voice+2; 242 243 // M = A/I 243 244 //1. Find the Zariski closure of Supp_Z M … … 270 271 } 271 272 @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); 273 280 // do not forget parameters of a basering! 281 // hmmm: todo ringlist 274 282 string strZ="ring @@Z=("+charstr(@A)+"),(@z(1.."+string(sZ)+")),dp;"; 275 283 // print(strZ); … … 277 285 setring @@Z; 278 286 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? 280 289 // @JcapZ; 290 dbprint(ppl,"// -1-4- finished the cosmetic Groebner basis in Z"); 291 dbprint(ppl-1, @JcapZ); 281 292 int sJ = vdim(@JcapZ); 293 dbprint(ppl,"// -1-5- the K-dimension of support is "+string(sJ)); 282 294 if (sJ==-1) 283 295 { … … 287 299 // print(@JcapZ); 288 300 // 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"); 289 302 list @L = minAssGTZ(@JcapZ); 290 303 int sL = size(@L); 304 dbprint(ppl,"// -2-2- finished the computation of " + string(sL)+ " minimal primes in Z"); 291 305 // print("etL:"); 292 306 // @L; … … 294 308 if (sL ==1) 295 309 { 310 dbprint(ppl-1,"// -2-3- the whole module is gen. weight module itself"); 296 311 setring @A; 297 312 map @M = @@Z,Center[1..size(Center)]; … … 308 323 @R[2] = ideal(@R[2]); 309 324 } 310 @R[2] = std(@R[2]); 325 dbprint(ppl-1,"// -2-4- final cosmetic Groebner basis"); 326 @R[2] = slimgb(@R[2]); 311 327 @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)"); 314 332 list @CharKer; 315 333 for(i=1; i<=sL; i++) 316 334 { 317 @L[i] = std(@L[i]); 318 } 335 @L[i] = slimgb(@L[i]); 336 } 337 dbprint(ppl,"// -*- finished computing Groebner bases of components"); 319 338 // 3. compute the intersections of characters 339 dbprint(ppl,"// -3- compute the intersections of characters"); 320 340 for(i=1; i<=sL; i++) 321 341 { 322 342 @CharKer[i] = CharKernel(@L,i); 323 343 } 324 // print("Charker:");325 // @CharKer;344 dbprint(ppl,"// -3- the intersections of characters is done"); 345 // dbprint(ppl-1,@CharKer); 326 346 // 4. Go back to the algebra and compute central saturations 327 347 setring @A; … … 329 349 list L = @M(@CharKer); 330 350 list R,@R; 351 dbprint(ppl,"// -4- compute the central saturations"); 352 dbprint(ppl-1,@CharKer); 331 353 for(i=1; i<=sL; i++) 332 354 { … … 341 363 @R[2] = ideal(@R[2]); 342 364 } 343 @R[2] = s td(@R[2]);365 @R[2] = slimgb(@R[2]); 344 366 @R[3] = vdim(@R[2]); 345 367 R[i] = @R; 346 368 } 369 dbprint(ppl,"// -4- central saturations are done"); 347 370 return(R); 348 371 } 349 372 example 350 { "EXAMPLE:"; echo = 2; 373 { "EXAMPLE:"; echo = 2; printlevel=0; 351 374 option(returnSB); 352 375 def a = makeUsl2(); // U(sl_2) in characteristic 0 … … 401 424 if (p!=0) 402 425 { 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)); 405 428 } 406 429 } … … 410 433 setring B; 411 434 string s1,s2; 435 // todo: make ringlist from it! 412 436 s1 = "ring @Z = ("; 413 437 s2 = s1 + charstr(basering) + "),(z(1.." + string(nz)+")),Dp"; … … 417 441 map F = @Z,Z; 418 442 setring @Z; 419 ideal PreM = preimage(B,F,M); 420 PreM = s td(PreM);443 ideal PreM = preimage(B,F,M); // reformulate using gb engine? todo? 444 PreM = slimgb(PreM); 421 445 setring B; 422 446 ideal T = F(PreM); … … 428 452 ring R=(0,a),(e,f,h),Dp; 429 453 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; 433 455 def r = nc_algebra(1,@d); setring r; // parametric U(sl_2) 434 456 ideal I = e,h-a;
Note: See TracChangeset
for help on using the changeset viewer.