Changeset f4031a in git
- Timestamp:
- Sep 8, 2010, 7:49:45 PM (13 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 03135cb6afca63d221d52f7d8eb1b0bc0a147f52
- Parents:
- 3b614ecf39de68c3a807a600dd27a5329966b5cd
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/resjung.lib
r3b614e rf4031a 44 44 int n = nvars(A); 45 45 list l = equidim(id); 46 int i,j; 46 47 int k = size(l); 47 48 ideal LastTwo = var(n-1),var(n); 48 49 ideal lowdim = 1; //the components of id with dimension smaller 2 49 50 if(k>1){ 50 for( intj=1;j<k;j++){51 for(j=1;j<k;j++){ 51 52 lowdim = intersect(lowdim,l[j]); 52 53 } 53 kill j;54 54 } 55 kill k;56 55 //lowdim = radical(lowdim); // affects performance 57 56 ideal I = l[size(l)]; 58 57 poly product=1; 59 58 kill l; 60 for(i nt i=1; i < n-1; i++){59 for(i=1; i < n-1; i++){ 61 60 //elimination of all variables exept var(i),var(n-1),var(n) 62 61 intvec v; 63 for( intj=1; j < n-1; j++){62 for(j=1; j < n-1; j++){ 64 63 if(j<>i){ 65 64 v[j]=1; … … 71 70 v[size(v)+1]=0; 72 71 v[size(v)+1]=0; 72 if(defined(ringl)) {kill ringl;} 73 73 list ringl = ringlist(A); 74 74 list l; … … 90 90 if(attrib(J,"isPrincipal")==0){ 91 91 setring R; 92 for(int j = 1;j<=size(J);j++){ //determines the monic polynomial in var(i) with coefficents in C2 92 for(j = 1;j<=size(J);j++){ //determines the monic polynomial in var(i) with coefficents in C2 93 if(defined(w)) {kill w;} 93 94 intvec w = leadexp(J[j]); 94 95 attrib(w,"isMonic",1); 95 for( intk = 1;k<=size(w);k++){96 for(k = 1;k<=size(w);k++){ 96 97 if(w[k] <> 0 && k <> i){ 97 98 attrib(w,"isMonic",0); … … 99 100 } 100 101 } 101 kill k;102 102 if(attrib(w,"isMonic")==1){ 103 103 index = j; … … 106 106 kill w; 107 107 } 108 kill j;109 108 setring A; 110 109 } … … 138 137 proc buildFP(list embR,ideal NoetherN, map phi){ 139 138 def A = basering; 139 int i,j,k; 140 140 list fibreP; 141 141 int n = nvars(A); 142 for(int i=1;i<=size(embR);i++){ 142 for(i=1;i<=size(embR);i++){ 143 if(defined(R)) {kill R;} 143 144 def R = embR[i]; 144 145 setring R; … … 146 147 // create data for the new ring 147 148 // e.g. if A=K[x_1,..,x_n] and R=K[y_1,..,y_m], K[x_1,..,x_n-2,y_1,..,y_m] 148 for( intj = 1; j<= nvars(R);j++){149 for(j = 1; j<= nvars(R);j++){ 149 150 string st = string(var(j)); 150 151 temp[2][n-2+j] = st; … … 159 160 setring R2; 160 161 ideal Temp=0; //defines map from R to R2 which is the inclusion 161 for( intk=n-1;k<n-1+nvars(R);k++){162 for(k=n-1;k<n-1+nvars(R);k++){ 162 163 Temp = Temp + ideal(var(k)); 163 164 } 164 165 map f = R,Temp; 165 kill Temp ,k;166 kill Temp; 166 167 ideal FibPMI = ideal(0); //defines the map from A to R2 167 for( intk=1;k<=nvars(A)-m;k++){168 for(k=1;k<=nvars(A)-m;k++){ 168 169 FibPMI=FibPMI+var(k); 169 170 } … … 179 180 fibreP[i] = R2; 180 181 setring R; 181 kill J,R,R2, k,j,m;182 kill J,R,R2,m; 182 183 } 183 184 return(fibreP); … … 219 220 for(int i = 1;i<=size(result);i++){ 220 221 // had zero dimensional components which are now added to the end result 222 if(defined(R)) {kill R;} 221 223 def R = result[i]; 222 224 setring R; … … 245 247 // to our situation 246 248 def H = basering; 249 int i,j,k; 247 250 setring H; attrib(BO[2],"smoothC",0); 248 251 export(BO); … … 255 258 int count2 = 0; // counts the number of smooth charts 256 259 int p = size(result); 257 for( intj = 1;j<=p;j++){260 for(j = 1;j<=p;j++){ 258 261 if(attrib(result[j],"isResolved")==0){ 259 262 if(defined(R)){kill R;} … … 264 267 list primdecPC = primdecGTZ(BO[2]); 265 268 attrib(result[j],"smoothC",1); 266 for(i nt i= 1;i<=size(primdecPC);i++){269 for(i = 1;i<=size(primdecPC);i++){ 267 270 ideal Sl = groebner(slocus(primdecPC[i][2])); 268 271 if(deg(NF(1,Sl))!=-1){ … … 280 283 // if we blew up a non rational singularity, the exeptional divisors 281 284 // are reduzible, so we need to separate them 282 for( intk=1;k<=size(blowup);k++){285 for(k=1;k<=size(blowup);k++){ 283 286 def R2=blowup[k]; 284 287 setring R2; … … 294 297 kill L,R2; 295 298 } 296 kill k;297 299 } 298 300 kill primdecSL; 299 301 list hlp; 300 for( intk = 1;k<j;k++){302 for(k = 1;k<j;k++){ 301 303 hlp[k]=result[k]; 302 304 attrib(hlp[k],"isResolved",attrib(result[k],"isResolved")); 303 305 attrib(hlp[k],"smoothC",attrib(result[k],"smoothC")); 304 306 } 305 kill k; 306 for(int k =1;k<=size(blowup);k++){ 307 for(k =1;k<=size(blowup);k++){ 307 308 hlp[size(hlp)+1]=blowup[k]; 308 309 attrib(hlp[size(hlp)],"isResolved",0); 309 310 attrib(hlp[size(hlp)],"smoothC",0); 310 311 } 311 kill k; 312 for(int k = j+1;k<=size(result);k++){ 312 for(k = j+1;k<=size(result);k++){ 313 313 hlp[size(hlp)+1]=result[k]; 314 314 attrib(hlp[size(hlp)],"isResolved",attrib(result[k],"isResolved")); … … 316 316 } 317 317 result = hlp; 318 kill hlp ,k;318 kill hlp; 319 319 i=size(primdecPC); 320 320 } … … 324 324 kill Sl; 325 325 } 326 kill i,primdecPC;326 kill primdecPC; 327 327 j=p; 328 328 break; … … 333 333 int count = 0; 334 334 ideal Collect = BO[2]; 335 for(i nt i= 1;i<=size(BO[4]);i++){335 for(i = 1;i<=size(BO[4]);i++){ 336 336 Collect = Collect*BO[4][i]; 337 337 } 338 338 list primdecSL = primdecGTZ(slocus(Collect)); 339 for( intk = 1;k<=size(primdecSL);k++){339 for(k = 1;k<=size(primdecSL);k++){ 340 340 attrib(primdecSL[k],"isRational",1); 341 341 } 342 kill k;343 342 if(defined(blowup)){kill blowup;} 344 343 list blowup = blowUpBO(BO,primdecSL[1][2],3); 345 344 if(attrib(primdecSL[1],"isRational")==0){ 346 for( intk=1;k<=size(blowup);k++){345 for(k=1;k<=size(blowup);k++){ 347 346 def R2=blowup[k]; 348 347 setring R2; … … 358 357 kill L,R2; 359 358 } 360 kill k;361 359 } 362 kill Collect ,i;363 for(i nt i=1;i<=size(primdecSL);i++){360 kill Collect; 361 for(i=1;i<=size(primdecSL);i++){ 364 362 list L = BO[4]; 365 363 L[size(L)+1]=BO[2]; … … 372 370 list blowup = blowUpBO(BO,primdecSL[i][2],3); 373 371 list hlp; 374 for( intk = 1;k<j;k++){372 for(k = 1;k<j;k++){ 375 373 hlp[k]=result[k]; 376 374 attrib(hlp[k],"isResolved",attrib(result[k],"isResolved")); 377 375 attrib(hlp[k],"smoothC",attrib(result[k],"smoothC")); 378 376 } 379 kill k; 380 for(int k =1;k<=size(blowup);k++){ 377 for(k =1;k<=size(blowup);k++){ 381 378 hlp[size(hlp)+1]=blowup[k]; 382 379 attrib(hlp[size(hlp)],"isResolved",0); 383 380 attrib(hlp[size(hlp)],"smoothC",1); 384 381 } 385 kill k; 386 for(int k = j+1;k<=size(result);k++){ 382 for(k = j+1;k<=size(result);k++){ 387 383 hlp[size(hlp)+1]=result[k]; 388 384 attrib(hlp[size(hlp)],"isResolved",attrib(result[k],"isResolved")); … … 390 386 } 391 387 result = hlp; 392 kill hlp ,k;388 kill hlp; 393 389 j = p; 394 390 break; … … 399 395 kill L; 400 396 } 401 kill i;402 397 if(count == size(primdecSL)){ 403 398 attrib(result[j],"isResolved",1); … … 414 409 break; 415 410 } 416 kill count2, j,p;411 kill count2,p; 417 412 safety++; 418 413 } … … 437 432 " 438 433 { 434 int i; 439 435 if(!defined(noeth)){ 440 436 int noeth = 0; … … 472 468 else{ 473 469 ideal NoetherPos = var(pos); 474 for(i nt i= 1;i<=3;i++){470 for(i = 1;i<=3;i++){ 475 471 if(i<>pos){ 476 472 NoetherPos = NoetherPos + var(i); … … 501 497 list nor = normal(NoetherN); 502 498 list result; 503 for(i nt i = 1;i<=size(nor);i++){504 def R = nor[ i];499 for(i = 1;i<=size(nor[1]);i++){ 500 def R = nor[1][i]; 505 501 setring R; 506 502 ideal QIdeal = norid; … … 547 543 list fibreP = jungfib(id,noeth); 548 544 list result; 549 for(int i =1;i<=size(fibreP);i++){ 545 int i,j; 546 for(i =1;i<=size(fibreP);i++){ 550 547 def R1 = fibreP[i]; 551 548 setring R1; 552 549 map f1 = A,BMap; 553 listnor = normal(QIdeal);554 for( int j = 1;j<=size(nor);j++){555 def R2 = nor[ j];550 def nor = normal(QIdeal); 551 for(j = 1;j<=size(nor[1]);j++){ 552 def R2 = nor[1][j]; 556 553 setring R2; 557 554 map f2 = R1,normap; … … 561 558 export(QIdeal); 562 559 result[size(result)+1] = R2; 563 kill R2,f2; 564 } 565 kill j,nor,R1; 560 setring R1; 561 kill R2; 562 } 563 kill R1; 566 564 } 567 565 return(result); … … 602 600 def A = basering; 603 601 list result; 602 int i,j; 604 603 list nor = jungnormal(id,noeth); 605 for(i nt i= 1;i<=size(nor);i++){604 for(i = 1;i<=size(nor);i++){ 606 605 if(defined(R)){kill R;} 607 606 def R3 = nor[i]; … … 614 613 if(QIdeal <> 0){ 615 614 list res = resolve(QIdeal); 616 for( intj =1;j<=size(res[1]);j++){615 for(j =1;j<=size(res[1]);j++){ 617 616 def R2 = res[1][j]; 618 617 setring R2; … … 628 627 kill R2; 629 628 } 630 kill j,res;629 kill res; 631 630 } 632 631 else{ … … 654 653 def A = basering; 655 654 list ringA=ringlist(A); 655 int i,j,k; 656 656 int index = 0; 657 657 if(size(id)==1 && nvars(A)){ // test if V(id) = C[x,y,z]/<f> … … 662 662 kill v; 663 663 poly f = id[1]; 664 int j = 0; 665 for(int i = 1;i<=3;i++){ 664 for(i = 1;i<=3;i++){ 666 665 setring A; 667 666 list l = ringA; //change ordering to lp and var(i)>var(j) j!=i … … 680 679 intvec v = leadexp(I[1]); 681 680 attrib(v,"isMonic",1); 682 if(defined(k)){kill k;} 683 for(int k = 2;k<=3;k++){ 681 for(k = 2;k<=3;k++){ 684 682 // checks whether f is monic in var(i) 685 683 if(v[k] <> 0 || v[1] == 0){ … … 689 687 } 690 688 } 691 kill k;692 689 if(attrib(v,"isMonic")==1){ 693 690 index = i; … … 791 788 ideal BMap= maxideal(1); 792 789 export(BMap); 790 int i,j; 793 791 export(QIdeal); 794 792 if(dim(QIdeal)<>2){ … … 803 801 if(defined(count)){kill count;} 804 802 int count =0; 805 for(i nt i= 1;i<= size(result);i++){803 for(i = 1;i<= size(result);i++){ 806 804 attrib(result[i],"isSmooth",1); 807 805 def R = result[i]; … … 823 821 kill R; 824 822 } 825 kill i;826 823 if(count == size(result)){return(result);} 827 824 count = 0; 828 825 list hlp; 829 for(i nt i= 1;i<=size(result);i++){826 for(i = 1;i<=size(result);i++){ 830 827 if(attrib(result[i],"isSmooth")==1){ 831 828 hlp[size(hlp)+1] = result[i]; … … 840 837 list nor = normal(QIdeal); 841 838 //print(N2); 842 for( int j = 1;j<= size(nor);j++){843 def R3 = nor[ j];839 for(j = 1;j<= size(nor[1]);j++){ 840 def R3 = nor[1][j]; 844 841 setring R3; 845 842 def R2 = changeord("dp");
Note: See TracChangeset
for help on using the changeset viewer.