Changeset 858cae in git
- Timestamp:
- Apr 8, 2011, 8:51:59 PM (13 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 2272157187c82cb5bd15a8c9b7faff7e3b064132
- Parents:
- 1c4a19588a624228427528fb3b86f2eb66646188
- Location:
- Singular/LIB
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/bfun.lib
r1c4a19 r858cae 319 319 if (remembercoeffs <> 0) 320 320 { 321 322 323 324 325 326 321 j = 0; 322 k = 0; 323 intvec posNonZero; 324 for (i=1; i<=sI; i++) 325 { 326 if (I[i] == 0) 327 327 { 328 328 j++; … … 331 331 M[j] = gen(i); 332 332 } 333 334 335 336 337 338 339 340 341 342 343 344 345 346 333 else 334 { 335 k++; 336 M[k+sZeros] = gen(lJ[2][k]); 337 posNonZero = posNonZero,i; 338 } 339 } 340 posNonZero = posNonZero[2..nrows(posNonZero)]; 341 posNonZero = posNonZero[lJ[2]]; 342 for (i=1; i<=size(lJ[1]); i++) 343 { 344 M[i+sZeros] = gen(posNonZero[i]); 345 } 346 kill posNonZero; 347 347 } 348 348 else … … 403 403 if (lm == lmJ[j]) 404 404 { 405 405 dbprint(ppl-1,"// reducing " + string(redpoly)); 406 406 dbprint(ppl-1,"// with " + string(J[j])); 407 407 c = leadcoef(redpoly)/leadcoef(J[j]); -
Singular/LIB/freegb.lib
r1c4a19 r858cae 2565 2565 PURPOSE: compute the inhomogeneous Serre's relations associated to A in given 2566 2566 @* variable names 2567 ASSUME: three ideals in the input are of the same sizes and contain merely 2567 ASSUME: three ideals in the input are of the same sizes and contain merely 2568 2568 @* variables which are interpreted as follows: N resp. P stand for negative 2569 2569 @* resp. positive roots, C stand for Cartan elements. d is the degree bound for … … 3175 3175 RETURN: poly 3176 3176 PURPOSE: computation of the normalform of p with respect to G 3177 ASSUME: p is a Letterplace polynomial, G is a set Letterplace polynomials, 3177 ASSUME: p is a Letterplace polynomial, G is a set Letterplace polynomials, 3178 3178 being a Letterplace Groebner basis (no check for this will be done) 3179 3179 NOTE: Strategy: take the smallest monomial wrt ordering for reduction … … 3235 3235 } 3236 3236 for (j = 1; j <= d; j++) 3237 {l=(j-1)*n+1; k= j*n; 3237 {l=(j-1)*n+1; k= j*n; 3238 3238 w = I[l..k]; 3239 3239 if (w==intvec(0)){w = I[1..(l-1)]; return(w);}//if a zero block is found there are only zero blocks left, … … 3344 3344 {s = dShiftDiv(V, L[i])[1]; 3345 3345 if (s <> -1) 3346 {p = lpReduce(p,G[i],s); 3346 {p = lpReduce(p,G[i],s); 3347 3347 p = lpNormalForm1(p,G,L); 3348 3348 break; … … 3371 3371 if (bla == 0) {lv = cq[1..i*n]; cq = cq[(i*n+1)..(d*n)]; break;} 3372 3372 } 3373 3373 3374 3374 d = size(cq)/n; 3375 3375 for (i = 1; i<= d; i++) … … 3451 3451 else {l = l[(n+1)..(n*d)]; d = d-1;} 3452 3452 } 3453 3453 3454 3454 while (1 <= d) 3455 3455 {for (j = 1; j <= n; j++) -
Singular/LIB/resjung.lib
r1c4a19 r858cae 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id : jung.lib,v 1.0 2011/27/03 10:32:00 Singular Exp$";2 version="$Id$"; 3 3 category="Commutative Algebra"; 4 4 info=" 5 5 LIBRARY: jung.lib Resolution of surface singularities (Desingularization) 6 6 Algorithm of Jung 7 AUTHOR: Philipp Renner, philipp_renner@web.de 7 AUTHOR: Philipp Renner, philipp_renner@web.de 8 8 9 9 PROCEDURES: 10 jungresolve(J[,is_noeth]) computes a resolution (!not a strong one) of the 10 jungresolve(J[,is_noeth]) computes a resolution (!not a strong one) of the 11 11 surface given by the ideal J using Jungs Method, 12 12 jungnormal(J[,is_noeth]) computes a representation of J such that all it's … … 26 26 //Main procedure 27 27 //----------------------------------------------------------------------------------------- 28 29 proc jungfib(ideal id, list #) 28 29 proc jungfib(ideal id, list #) 30 30 "USAGE: jungfib(J[,is_noeth]); 31 31 @* J = ideal … … 33 33 ASSUME: J = two dimensional ideal 34 34 RETURN: a list l of rings 35 l[i] is a ring containing two Ideals: QIdeal and BMap. 36 BMap defines a birational morphism from V(QIdeal)-->V(J), such that 35 l[i] is a ring containing two Ideals: QIdeal and BMap. 36 BMap defines a birational morphism from V(QIdeal)-->V(J), such that 37 37 V(QIdeal) has only quasi-ordinary singularities. 38 38 If is_noeth=1 the algorithm assumes J is in noether position with respect to 39 the last two variables. As a default or if is_noeth = 0 the algorithm computes 39 the last two variables. As a default or if is_noeth = 0 the algorithm computes 40 40 a coordinate change such that J is in noether position. 41 41 NOTE: since the noether position algorithm is randomized the performance … … 56 56 I = radical(id); 57 57 def A = basering; 58 int n = nvars(A); 58 int n = nvars(A); 59 59 if(deg(NF(1,groebner(slocus(id)))) == -1){ 60 60 list result; … … 68 68 if(char(A) <> 0){ERROR("only works for characterisitc 0");} //dummy check 69 69 if(dim(I)<> 2){ERROR("dimension is unequal 2");} //dummy check 70 //Noether Normalization 70 //Noether Normalization 71 71 if(noeth == 0){ 72 72 if(n==3){ … … 85 85 } 86 86 map phi = A,NoetherPos; 87 kill i,pos,NoetherPos; 88 } 89 } 90 else{ 87 kill i,pos,NoetherPos; 88 } 89 } 90 else{ 91 91 map phi = A,NoetherPosition(I); 92 92 } … … 97 97 map phi = A,maxideal(1); 98 98 } 99 kill I; 100 //Critical Locus 99 kill I; 100 //Critical Locus 101 101 def C2 = branchlocus(NoetherN); 102 102 setring C2; … … 122 122 return(result); 123 123 } 124 125 //dim of critical locus is 1, so compute embedded resolution of the discriminant curve 124 125 //dim of critical locus is 1, so compute embedded resolution of the discriminant curve 126 126 list embresolvee = embresolve(clocus); 127 127 128 128 //build the fibreproduct 129 129 setring A; … … 157 157 ASSUME: J = two dimensional ideal 158 158 RETURN: a list l of rings 159 l[i] is a ring containing two Ideals: QIdeal and BMap. 160 BMap defines a birational morphism from V(QIdeal)-->V(J), such that 159 l[i] is a ring containing two Ideals: QIdeal and BMap. 160 BMap defines a birational morphism from V(QIdeal)-->V(J), such that 161 161 V(QIdeal) has only singularities of Hizebuch-Jung type. 162 162 If is_noeth=1 the algorithm assumes J is in noether position with respect to 163 the last two variables. As a default or if is_noeth = 0 the algorithm computes 163 the last two variables. As a default or if is_noeth = 0 the algorithm computes 164 164 a coordinate change such that J is in noether position. 165 165 NOTE: since the noether position algorithm is randomized the performance … … 225 225 ASSUME: J = two dimensional ideal 226 226 RETURN: a list l of rings 227 l[i] is a ring containing two Ideals: QIdeal and BMap. 228 BMap defines a birational morphism from V(QIdeal)-->V(J), such that 229 V(QIdeal) is smooth. For this the algorithm computes first with 227 l[i] is a ring containing two Ideals: QIdeal and BMap. 228 BMap defines a birational morphism from V(QIdeal)-->V(J), such that 229 V(QIdeal) is smooth. For this the algorithm computes first with 230 230 jungnormal a representation of V(J) with Hirzebruch-Jung singularities 231 231 and then it uses Villamayor's algorithm to resolve these singularities 232 232 If is_noeth=1 the algorithm assumes J is in noether position with respect to 233 the last two variables. As a default or if is_noeth = 0 the algorithm computes 233 the last two variables. As a default or if is_noeth = 0 the algorithm computes 234 234 a coordinate change such that J is in noether position. 235 235 NOTE: since the noether position algorithm is randomized the performance … … 284 284 } 285 285 return(result); 286 } 286 } 287 287 example{ 288 288 "EXAMPLE:";echo = 2; … … 305 305 //Critical locus for the Weierstrass map induced by the noether normalization 306 306 //--------------------------------------------------------------------------------------- 307 static proc branchlocus(ideal id) 307 static proc branchlocus(ideal id) 308 308 { 309 309 //"USAGE: branchlocus(ideal J); 310 310 // J = ideal 311 311 //ASSUME: J = two dimensional ideal in noether position with respect of 312 // the last two variables 312 // the last two variables 313 313 //RETURN: A ring containing the ideal clocus respresenting the criticallocus 314 314 // of the projection V(J)-->C^2 on the last two coordinates … … 324 324 lowdim = intersect(lowdim,radical(l[j])); 325 325 } 326 } 326 } 327 327 kill k; 328 328 lowdim = radical(lowdim); 329 ideal I = radical(l[size(l)]); 329 ideal I = radical(l[size(l)]); 330 330 poly product=1; 331 kill l; 331 kill l; 332 332 for(int i=1; i < n-1; i++){ //elimination of all variables exept var(i),var(n-1),var(n) 333 333 intvec v; … … 349 349 ringl[3]=ll; 350 350 kill l,ll; 351 def R = ring(ringl); //now x_j > x_i > x_n-1 > x_n forall j <> i,n-1,n 351 def R = ring(ringl); //now x_j > x_i > x_n-1 > x_n forall j <> i,n-1,n 352 352 setring R; 353 353 ideal J = groebner(fetch(A,I));//this eliminates the variables 354 354 setring A; 355 ideal J = fetch(R,J); 355 ideal J = fetch(R,J); 356 356 attrib(J,"isPrincipal",0); 357 357 if(size(J)==1){ … … 380 380 setring A; 381 381 } 382 product = product*resultant(J[index],diff(J[index],var(i)),var(i)); 382 product = product*resultant(J[index],diff(J[index],var(i)),var(i)); 383 383 //Product of the discriminants, which lies in C2 384 384 kill index,J,v; … … 405 405 def R = embresolve[i]; 406 406 setring R; 407 list temp = ringlist(A); 408 //data for the new ring which is, if A=K[x_1,..,x_n] and 407 list temp = ringlist(A); 408 //data for the new ring which is, if A=K[x_1,..,x_n] and 409 409 //R=K[y_1,..,y_m], K[x_1,..,x_n-2,y_1,..,y_m] 410 410 for(int j = 1; j<= nvars(R);j++){ … … 418 418 int m = size(J); 419 419 def R2 = ring(temp); 420 kill temp; 420 kill temp; 421 421 setring R2; 422 422 ideal Temp=0; //defines map from R to R2 which is the inclusion … … 432 432 FibPMI= FibPMI+ideal(f(J)); 433 433 map FibMap = A,FibPMI; 434 kill f,FibPMI; 434 kill f,FibPMI; 435 435 ideal TotalT = groebner(FibMap(NoetherN)); 436 436 ideal QIdeal = TotalT; … … 450 450 //------------------------------------------------------------------------------- 451 451 452 static proc embresolve(ideal C) 452 static proc embresolve(ideal C) 453 453 "USAGE: embresolve(ideal C); 454 454 @* C = ideal 455 ASSUME: C = ideal of plane curve 455 ASSUME: C = ideal of plane curve 456 456 RETURN: a list l of rings 457 457 l[i] is a ring containing a basic object BO, the result of the 458 resolution. Whereas the algorithm does not resolve normal 458 resolution. Whereas the algorithm does not resolve normal 459 459 crossings of V(C) 460 460 EXAMPLE: example embresolve shows an example … … 464 464 attrib(J,"iswholeRing",1); 465 465 list primdec = equidim(C); 466 if(size(primdec)==2){ 467 //zero dimensional components of the discrimiant curve are smooth 466 if(size(primdec)==2){ 467 //zero dimensional components of the discrimiant curve are smooth 468 468 //an cross normally so they can be ignored in the resolution process 469 469 ideal Lowdim = radical(primdec[1]); … … 478 478 list result = resolve2(BO); 479 479 if(defined(Lowdim)){ 480 for(int i = 1;i<=size(result);i++){ 480 for(int i = 1;i<=size(result);i++){ 481 481 //had zero dimensional components which I add now to the end result 482 482 def RingforEmbeddedResolution = result[i]; 483 setring RingforEmbeddedResolution; 483 setring RingforEmbeddedResolution; 484 484 map f = R2,BO[5]; 485 485 BO[2]=BO[2]*f(Lowdim); … … 492 492 { 493 493 "EXAMPLE:";echo=2; 494 //The following curve is the critical locus of the projection z2-x3-y3 494 //The following curve is the critical locus of the projection z2-x3-y3 495 495 //onto y,z-coordinates. 496 496 ring R = 0,(y,z),dp; … … 506 506 507 507 static proc resolve2(list BO){ 508 //computes an embedded resolution for the basic object BO and returns 508 //computes an embedded resolution for the basic object BO and returns 509 509 //a list of rings with BO 510 510 def H = basering; … … 515 515 result[1]=H; 516 516 attrib(result[1],"isResolved",0); //has only simple normal crossings 517 attrib(result[1],"smoothC",0); //has smooth components 517 attrib(result[1],"smoothC",0); //has smooth components 518 518 int safety=0; //number of runs restricted to 30 519 519 while(1){ … … 525 525 def R = result[j]; 526 526 setring R; 527 if(attrib(result[j],"smoothC")==0){ 527 if(attrib(result[j],"smoothC")==0){ 528 528 //has possibly singular components so choose a singular point and blow up 529 529 list primdecPC = primdecGTZ(BO[2]); … … 540 540 if(defined(blowup)){kill blowup;} 541 541 list blowup = blowUpBO(BO,primdecSL[index][2],3); 542 //if it has a rational singularity blow it up else choose 542 //if it has a rational singularity blow it up else choose 543 543 //some arbitary singular point 544 if(attrib(primdecSL[1],"isRational")==0){ 545 //if we blow up a non rational singularity the exeptional divisors 544 if(attrib(primdecSL[1],"isRational")==0){ 545 //if we blow up a non rational singularity the exeptional divisors 546 546 //are reduzible so we need to separate them 547 547 for(int k=1;k<=size(blowup);k++){ … … 591 591 kill i,primdecPC; 592 592 j=p; 593 break; 593 break; 594 594 } 595 595 else{ //if it has smooth components determine all the intersection … … 692 692 list L; 693 693 intvec v = 1,1,1; 694 L[1] = "lp"; 694 L[1] = "lp"; 695 695 L[2] = v; 696 696 kill v; … … 716 716 if(defined(k)){kill k;} 717 717 for(int k = 2;k<=3;k++){ //checks whether f is monic in var(i) 718 if(v[k] <> 0 || v[1] == 0){ 718 if(v[k] <> 0 || v[1] == 0){ 719 719 attrib(v,"isMonic",0); 720 720 j++; … … 739 739 740 740 ////copied from resolve.lib///////////////// 741 static proc normalCrossing(ideal J,list E,ideal V) 741 static proc normalCrossing(ideal J,list E,ideal V) 742 742 "Internal procedure - no help and no example available 743 743 " … … 745 745 int i,d,j; 746 746 int n=nvars(basering); 747 list E1,E2; 747 list E1,E2; 748 748 ideal K,M,Estd; 749 749 intvec v,w; 750 750 751 for(i=1;i<=size(E);i++) 751 for(i=1;i<=size(E);i++) 752 752 { 753 753 Estd=std(E[i]+J); … … 758 758 } 759 759 E=E1; 760 for(i=1;i<=size(E);i++) 760 for(i=1;i<=size(E);i++) 761 761 { 762 762 v=i; … … 764 764 } 765 765 list ll; 766 int re=1; 767 768 while((size(E1)>0)&&(re==1)) 766 int re=1; 767 768 while((size(E1)>0)&&(re==1)) 769 769 { 770 K=E1[1][1]; 771 v=E1[1][2]; 770 K=E1[1][1]; 771 v=E1[1][2]; 772 772 attrib(K,"isSB",1); 773 773 E1=delete(E1,1); 774 d=n-dim(K); 775 M=minor(jacob(K),d)+K; 776 if(deg(std(M+V)[1])>0) 774 d=n-dim(K); 775 M=minor(jacob(K),d)+K; 776 if(deg(std(M+V)[1])>0) 777 777 { 778 778 re=0; … … 781 781 for(i=1;i<=size(E);i++) 782 782 { 783 for(j=1;j<=size(v);j++){if(v[j]==i){break;}} 784 if(j<=size(v)){if(v[j]==i){i++;continue;}} 785 Estd=std(K+E[i]); 783 for(j=1;j<=size(v);j++){if(v[j]==i){break;}} 784 if(j<=size(v)){if(v[j]==i){i++;continue;}} 785 Estd=std(K+E[i]); 786 786 w=v; 787 787 if(deg(Estd[1])==0){i++;continue;} 788 if(d==n-dim(Estd)) 788 if(d==n-dim(Estd)) 789 789 { 790 790 if(deg(std(Estd+V)[1])>0) -
Singular/LIB/sagbi.lib
r1c4a19 r858cae 15 15 16 16 REFERENCES: 17 Ana Bravo: Some Facts About Canonical Subalgebra Bases, 17 Ana Bravo: Some Facts About Canonical Subalgebra Bases, 18 18 MSRI Publications 51, p. 247-254 19 19 … … 137 137 */ 138 138 int ppl = printlevel-voice+3; //variable for additional printlevel-dependend information 139 dbprint(ppl,"//Spoly-1- initialisation and precomputation"); 139 dbprint(ppl,"//Spoly-1- initialisation and precomputation"); 140 140 def br=basering; 141 141 ideal varsBasering=maxideal(1); … … 169 169 } 170 170 //--------------- calculate kernel of Phi depending on method choosen --------------- 171 dbprint(ppl,"//Spoly-2- Groebner basis computation"); 171 dbprint(ppl,"//Spoly-2- Groebner basis computation"); 172 172 attrib(kernOld,"isSB",1); 173 173 ideal kern=stdKernPhi(kernNew,kernOld,leadTermsAlgebra,method); 174 dbprint(ppl-2,"//Spoly-2-1- ideal kern",kern); 174 dbprint(ppl-2,"//Spoly-2-1- ideal kern",kern); 175 175 //-------------------------- calulate algebraic relations ----------------------- 176 dbprint(ppl,"//Spoly-3- computing new algebraic relations"); 176 dbprint(ppl,"//Spoly-3- computing new algebraic relations"); 177 177 ideal algebraicRelations=nselect(kern,1..nvars(br)); 178 178 attrib(algebraicRelationsOld,"isSB",1); … … 201 201 */ 202 202 int ppl = printlevel-voice+3; //variable for additional printlevel-dependend information 203 dbprint(ppl,"//Spoly-1- initialisation and precomputation"); 203 dbprint(ppl,"//Spoly-1- initialisation and precomputation"); 204 204 def br=basering; 205 205 int m=ncols(algebra); … … 241 241 ideal algebraicRelations=toric_ideal(A,"ect"); 242 242 //Suitable substitution 243 dbprint(ppl,"//Spoly-3- substitutions"); 243 dbprint(ppl,"//Spoly-3- substitutions"); 244 244 ideal leadCoefficients=fetch(br,leadCoefficients); 245 245 for (i=1; i<=m; i++) … … 250 250 } 251 251 } 252 dbprint(ppl-2,"//Spoly-3-1- algebraic relations",algebraicRelations); 252 dbprint(ppl-2,"//Spoly-3-1- algebraic relations",algebraicRelations); 253 253 export algebraicRelations; 254 254 return(rNew); … … 268 268 * algebraicDependence causes this procedure to be called with parRed<>0. The only difference when parRed<>0 269 269 * is that the reduction algorithms returns the non-zero constants it attains (instead of just returning zero as the 270 270 * correct remainder), as they will be expressions in parameters for an algebraic dependence. 271 271 */ 272 272 int ppl = printlevel-voice+3; //variable for additional printlevel-dependend information 273 dbprint(ppl,"//Red-1- initialisation and precomputation"); 273 dbprint(ppl,"//Red-1- initialisation and precomputation"); 274 274 def br=basering; 275 275 int numVarsBasering=nvars(br); … … 279 279 if (numVarsBasering==nvars(r)) 280 280 { 281 281 dbprint(ppl-1,"//Red-1-1- Groebner basis computation"); 282 282 /* Case that ring r is the same ring as the basering. Using proc extendRing, 283 283 * stdKernPhi … … 315 315 for (i=1; i<=ncols(F);i++) 316 316 { 317 318 317 dbprint(ppl-1,"//Red-2-"+string(i)+"- starting with new polynomial"); 318 dbprint(ppl-2,"//Red-2-"+string(i)+"-1- Polynomial before reduction",F[i]); 319 319 normalform=0; 320 320 while (F[i]!=0) … … 325 325 //K is always contained in the subalgebra, 326 326 //thus the remainder is zero in this case 327 if (parRed) 328 { 329 330 break; 331 332 else 333 { 334 F[i]=0; 335 break; 336 327 if (parRed) 328 { 329 //If parRed<>0 save non-zero constants the reduction algorithms attains. 330 break; 331 } 332 else 333 { 334 F[i]=0; 335 break; 336 } 337 337 } 338 338 //note: as the ordering in br and r might not be compatible … … 423 423 * and iterations specifies the 424 424 * number of iterations. A degree boundary is not used here. 425 * When this method is called via the procedures sagbi and sagbiPart the integer parRed 426 * will always be zero. Only the procedure algebraicDependence calls this procedure with 427 * parRed<>0. The only difference when parRed<>0 is that the reduction algorithms returns 428 * the non-zero constants it attains (instead of just returning zero as the correct 429 * remainder), as they will be expressions in parameters for an algebraic dependence. 425 * When this method is called via the procedures sagbi and sagbiPart the integer parRed 426 * will always be zero. Only the procedure algebraicDependence calls this procedure with 427 * parRed<>0. The only difference when parRed<>0 is that the reduction algorithms returns 428 * the non-zero constants it attains (instead of just returning zero as the correct 429 * remainder), as they will be expressions in parameters for an algebraic dependence. 430 430 * These constants are saved in the ideal reducedParameters. 431 431 */ 432 432 { 433 433 int ppl = printlevel-voice+3; //variable for additional printlevel-dependend information 434 dbprint(ppl,"// -0- initialisation and precomputation"); 434 dbprint(ppl,"// -0- initialisation and precomputation"); 435 435 def br=basering; 436 436 int i=1; … … 874 874 RETURN: ring 875 875 ASSUME: basering is not a qring 876 PURPOSE: Returns a ring containing the ideal @code{algDep}, which contains possibly 877 @* 878 @* iterations of the SAGBI construction algorithms. See the example on how879 @* to access these objects.876 PURPOSE: Returns a ring containing the ideal @code{algDep}, which contains possibly 877 @* some algebraic dependencies of the elements of I obtained through @code{it} 878 @* iterations of the SAGBI construction algorithms. See the example on how 879 @* to access these objects. 880 880 EXAMPLE: example algebraicDependence; shows an example" 881 881 { 882 883 884 dbprint(ppl,"//AlgDep-1- initialisation and precomputation"); 882 assumeQring(); 883 int ppl = printlevel-voice+3; //variable for additional printlevel-dependend information 884 dbprint(ppl,"//AlgDep-1- initialisation and precomputation"); 885 885 def br=basering; 886 886 int i; 887 887 I=simplify(I,2); //avoid that I contains zeros 888 888 889 889 //Create two polynomial rings, which both are extensions of the current basering. 890 890 //The first ring will contain the additional paramteres @c(1),...,@c(m), the second one 891 891 //will contain the additional variables @c(1),...,@c(m), where m=ncols(I). … … 953 953 // } 954 954 955 955 //Compute a partial SAGBI basis of the algebra generated by I[1]-@c(1),...,I[m]-@c(m), 956 956 //where the @c(n) are parameters 957 957 ideal I=fetch(br,I); … … 961 961 algebra[i]=I[i]-par(i); 962 962 } 963 dbprint(ppl,"//AlgDep-2- call of SAGBI construction algorithm"); 963 dbprint(ppl,"//AlgDep-2- call of SAGBI construction algorithm"); 964 964 algebra=sagbiConstruction(algebra, iterations,0,0,1); 965 dbprint(ppl,"//AlgDep-3- postprocessing of results"); 965 dbprint(ppl,"//AlgDep-3- postprocessing of results"); 966 966 int j=1; 967 967 //If K[x_1,...,x_n] was the basering, then algebra is in K(@c(1),...,@c(m))[x_1,...x_n]. We intersect … … 985 985 for (i=1; i<=ncols(algDep); i++) 986 986 { 987 if(leadmonom(algDep[i])==1) 988 989 990 991 992 987 if(leadmonom(algDep[i])==1) 988 { 989 algDep[i]=0; 990 } 991 } 992 algDep=simplify(algDep,2); 993 993 export algDep,algebra; 994 994 setring br; … … 1018 1018 /* performs subalgebra interreduction of a set of subalgebra generators */ 1019 1019 int ppl = printlevel-voice+3; //variable for additional printlevel-dependend information 1020 dbprint(ppl,"//Interred-1- starting interreduction"); 1020 dbprint(ppl,"//Interred-1- starting interreduction"); 1021 1021 ideal J,B; 1022 1022 int i,j,k; … … 1031 1031 } 1032 1032 I=simplify(I,2); 1033 dbprint(ppl,"//Interred-2- interreduction completed"); 1033 dbprint(ppl,"//Interred-2- interreduction completed"); 1034 1034 return(I); 1035 1035 }
Note: See TracChangeset
for help on using the changeset viewer.