Changeset cc3a04 in git
- Timestamp:
- Dec 21, 2000, 7:05:53 PM (22 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- 8a87a6b98e5b111b6f0b8118be4369ea7ec4089e
- Parents:
- 19df79cae9ee20cd44dcdef39057b9bb94b3dc3c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/gaussman.lib
r19df79 rcc3a04 1 1 /////////////////////////////////////////////////////////////////////////////// 2 2 3 version="$Id: gaussman.lib,v 1.1 6 2000-12-19 15:05:25 anne Exp $";3 version="$Id: gaussman.lib,v 1.17 2000-12-21 18:05:53 mschulze Exp $"; 4 4 category="Singularities"; 5 5 info=" … … 8 8 AUTHOR: Mathias Schulze, email: mschulze@mathematik.uni-kl.de 9 9 10 OVERVIEW: A library to compute invariants related to the Gauss-Manin connection 11 of a an isolated hypersurface singularity. 12 10 13 PROCEDURES: 11 monomat monodromy matrix 12 monospec spectrum of monodromy 13 vfilt V-filtration on H''/H' 14 singspec singularity spectrum 15 vjacob V-filtration on Jacobian algebra 16 gamma Hertling's gamma invariant 17 gamma4 Hertling's gamma4 invariant 14 monodromy(f[,...]); monodromy matrix of f, spectrum of monodromy of f 15 vfiltration(f[,...]); V-filtration of f on H''/H', singularity spectrum of f 16 vfiltjacalg(...); V-filtration on Jacobian algebra 17 gamma(...); Hertling's gamma invariant 18 gamma4(...); Hertling's gamma4 invariant 19 20 SEE ALSO: mondromy.lib, spectrum.lib, jordan.lib 21 KEYWORDS: singularities; Gauss-Manin connection; monodromy; spectrum; 22 Brieskorn lattice; Hodge filtration; V-filtration; 18 23 "; 19 24 … … 136 141 /////////////////////////////////////////////////////////////////////////////// 137 142 138 proc monomat(poly f,list #) 139 "USAGE: <matrix> M=monomat(<poly> f); 140 ASSUME: f isolated singularity 141 RETURN: exp(-2*pi*i*M) is a monodromy matrix 142 EXAMPLE: example monomat; shows an example 143 proc monodromy(poly f,list #) 144 "USAGE: monodromy(f[,mode]); poly f, int mode[=1] 145 ASSUME: local ordering, f isolated singularity at 0 146 RETURN: if mode=0 : 147 matrix M : exp(-2*pi*i*M) monodromy matrix of f 148 if mode=1 : 149 ideal e : exp(-2*pi*i*e) spectrum of monodromy of f 150 SEE ALSO: monodromy.lib, jordan.lib 151 KEYWORDS: singularities; Gauss-Manin connection; monodromy; 152 Brieskorn lattice 153 EXAMPLE: example monodromy; shows an example 143 154 " 144 155 { 145 int m ide=-1;156 int mode=1; 146 157 if(size(#)>0) 147 158 { 148 mide=0; 159 if(typeof(#[1])=="int") 160 { 161 mode=#[1]; 162 } 149 163 } 150 164 … … 155 169 if(var(i)>1) 156 170 { 157 ERROR(" basering not local");171 ERROR("no local ordering"); 158 172 } 159 173 } … … 164 178 if(vdim(sJ)==0) 165 179 { 166 ERROR(" singularity not singular");180 ERROR("no singularity at 0"); 167 181 } 168 182 else 169 183 { 170 ERROR(" singularity not isolated");184 ERROR("no isolated singularity at 0"); 171 185 } 172 186 } … … 182 196 int sdH=1; 183 197 int k=-1; 184 int K,N ;198 int K,N,mide; 185 199 186 200 while(k<K||sdH>0) 187 201 { 188 202 k++; 189 dbprint(printlevel-voice+2,"//gaussman::mono mat: k="+string(k));190 191 dbprint(printlevel-voice+2,"//gaussman::mono mat: compute C");203 dbprint(printlevel-voice+2,"//gaussman::monodromy: k="+string(k)); 204 205 dbprint(printlevel-voice+2,"//gaussman::monodromy: compute C"); 192 206 C=coeffs(redNF(w,sJ,U),m); 193 207 A0=A0+C*var(1)^k; … … 196 210 { 197 211 H0=H; 198 dbprint(printlevel-voice+2,"//gaussman::mono mat: compute dH");212 dbprint(printlevel-voice+2,"//gaussman::monodromy: compute dH"); 199 213 dH=jet(module(A0*dH+var(1)^2*diff(matrix(dH),var(1))),k); 200 214 H=H*var(1)+dH; 201 215 202 dbprint(printlevel-voice+2,"//gaussman::mono mat: test dH==0");216 dbprint(printlevel-voice+2,"//gaussman::monodromy: test dH==0"); 203 217 sdH=size(reduce(H,std(H0*var(1)))); 204 218 if(sdH>0) … … 209 223 { 210 224 dbprint(printlevel-voice+2, 211 "//gaussman::mono mat: compute basis of saturation");225 "//gaussman::monodromy: compute basis of saturation"); 212 226 H=minbase(H0); 213 227 int modH=maxorddif(H); … … 220 234 N=k-modH; 221 235 dbprint(printlevel-voice+2, 222 "//gaussman::mono mat: compute A on saturation");236 "//gaussman::monodromy: compute A on saturation"); 223 237 l=division(H*var(1),A0*H+var(1)^2*diff(matrix(H),var(1))); 224 238 A=expand(l[1],l[2],N-1); 225 if(mide<0)226 {227 dbprint(printlevel-voice+2,228 "//gaussman::monomat: compute eigenvalues e of A");229 ideal e=jordan(A,-1)[1];230 dbprint(printlevel-voice+2,"//gaussman::monomat: e="+string(e));239 dbprint(printlevel-voice+2, 240 "//gaussman::monodromy: compute eigenvalues e of A"); 241 ideal e=jordan(A,-1)[1]; 242 dbprint(printlevel-voice+2,"//gaussman::monodromy: e="+string(e)); 243 if(mode==1) 244 { 231 245 mide=maxintdif(e); 232 246 K=K+mide; … … 236 250 if(k<K||sdH>0) 237 251 { 238 dbprint(printlevel-voice+2,"//gaussman::mono mat: divide by J");252 dbprint(printlevel-voice+2,"//gaussman::monodromy: divide by J"); 239 253 l=division(J,ideal(matrix(w)-matrix(m)*C*U)); 240 254 D=l[1]; 241 255 242 dbprint(printlevel-voice+2,"//gaussman::mono mat: compute w/U");256 dbprint(printlevel-voice+2,"//gaussman::monodromy: compute w/U"); 243 257 for(j=mu;j>=1;j--) 244 258 { … … 246 260 { 247 261 dbprint(printlevel-voice+2, 248 "//gaussman::mono mat: compute U["+string(j)+"]");262 "//gaussman::monodromy: compute U["+string(j)+"]"); 249 263 U[j,j]=U[j,j]*l[2][j,j]; 250 264 } 251 265 dbprint(printlevel-voice+2, 252 "//gaussman::mono mat: compute w["+string(j)+"]");266 "//gaussman::monodromy: compute w["+string(j)+"]"); 253 267 w[j]=0; 254 268 for(i=n+1;i>=1;i--) … … 263 277 while(mide>0) 264 278 { 265 dbprint(printlevel-voice+2,"//gaussman::mono mat: mide="+string(mide));279 dbprint(printlevel-voice+2,"//gaussman::monodromy: mide="+string(mide)); 266 280 267 281 intvec b; … … 334 348 } 335 349 336 return(jet(A,0)); 350 if(mode==1) 351 { 352 return(jet(A,0)); 353 } 354 else 355 { 356 return(e); 357 } 337 358 } 338 359 example … … 340 361 ring R=0,(x,y),ds; 341 362 poly f=x5+x2y2+y5; 342 matrix M=mono mat(f);363 matrix M=monodromy(f); 343 364 print(M); 344 365 } 345 366 /////////////////////////////////////////////////////////////////////////////// 346 367 347 proc monospec(poly f) 348 "USAGE: <matrix> M=monospec(<poly> f); 349 ASSUME: f isolated singularity 350 RETURN: the spectrum of exp(-2*pi*i*M) is the spectrum of monodromy 351 EXAMPLE: example monospec; shows an example 368 proc vfiltration(poly f,list #) 369 "USAGE: vfiltration(f[,mode]); poly f, int mode[=1] 370 ASSUME: local ordering, f isolated singularity at 0 371 RETURN: list l : 372 if mode=0 or mode=1 : 373 ideal l[1] : spectral numbers in increasing order 374 intvec l[2] : 375 int l[2][i] : multiplicity of spectral number l[1][i] 376 if mode=1 : 377 list l[3] : 378 module l[3][i] : vector space basis of l[1][i]-th graded part 379 of the V-filtration on H''/H' in terms of l[4] 380 ideal l[4] : monomial vector space basis of H''/H' 381 ideal l[5] : standard basis of Jacobian ideal 382 NOTE: H' and H'' denote Brieskorn lattices 383 SEE ALSO: spectrum.lib 384 KEYWORDS: singularities; Gauss-Manin connection; spectrum; 385 Brieskorn lattice; Hodge filtration; V-filtration; 386 EXAMPLE: example vfiltration; shows an example 352 387 " 353 388 { 354 return(monomat(f,0)); 355 } 356 example 357 { "EXAMPLE:"; echo=2; 358 ring R=0,(x,y),ds; 359 poly f=x5+x2y2+y5; 360 matrix M=monospec(f); 361 print(M); 362 } 363 /////////////////////////////////////////////////////////////////////////////// 364 365 proc vfilt(poly f,list #) 366 "USAGE: <list> l=vfilt(<poly> f); 367 ASSUME: f isolated singularity 368 RETURN: <ideal> l[1] : spectral numbers in increasing order 369 <intvec> l[2] : 370 <int> l[2][i] : multiplicity of spectral number l[1][i] 371 <list> l[3] : 372 <module> l[3][i] : vector space basis of l[1][i]-th graded part 373 of the V-filtration on H''/H' in terms of l[4] 374 <ideal> l[4] : monomial vector space basis of H''/H' 375 <ideal> l[5] : standard basis of Jacobian ideal 376 EXAMPLE: example vfilt; shows an example 377 " 378 { 389 int mode=1; 390 if(size(#)>0) 391 { 392 if(typeof(#[1])=="int") 393 { 394 mode=#[1]; 395 } 396 } 397 379 398 int i,j; 380 399 int n=nvars(basering)-1; … … 383 402 if(var(i)>1) 384 403 { 385 ERROR(" basering not local");404 ERROR("no local ordering"); 386 405 } 387 406 } … … 392 411 if(vdim(sJ)==0) 393 412 { 394 ERROR(" singularity not singular");413 ERROR("no singularity at 0"); 395 414 } 396 415 else 397 416 { 398 ERROR(" singularity not isolated");417 ERROR("no isolated singularity at 0"); 399 418 } 400 419 } … … 415 434 { 416 435 k++; 417 dbprint(printlevel-voice+2,"//gaussman::vfilt : k="+string(k));418 419 dbprint(printlevel-voice+2,"//gaussman::vfilt : compute C");436 dbprint(printlevel-voice+2,"//gaussman::vfiltration: k="+string(k)); 437 438 dbprint(printlevel-voice+2,"//gaussman::vfiltration: compute C"); 420 439 C=coeffs(redNF(w,sJ,U),m); 421 440 A=A+C*var(1)^k; … … 424 443 { 425 444 H0=H; 426 dbprint(printlevel-voice+2,"//gaussman::vfilt : compute dH");445 dbprint(printlevel-voice+2,"//gaussman::vfiltration: compute dH"); 427 446 dH=jet(module(A*dH+var(1)^2*diff(matrix(dH),var(1))),k); 428 447 H=H*var(1)+dH; 429 448 430 dbprint(printlevel-voice+2,"//gaussman::vfilt : test dH==0");449 dbprint(printlevel-voice+2,"//gaussman::vfiltration: test dH==0"); 431 450 sdH=size(reduce(H,std(H0*var(1)))); 432 451 if(sdH>0) … … 437 456 { 438 457 dbprint(printlevel-voice+2, 439 "//gaussman::vfilt : compute basis of saturation");458 "//gaussman::vfiltration: compute basis of saturation"); 440 459 H=minbase(H0); 441 460 int modH=maxorddif(H); … … 454 473 if(k<K||sdH>0) 455 474 { 456 dbprint(printlevel-voice+2,"//gaussman::vfilt : divide by J");475 dbprint(printlevel-voice+2,"//gaussman::vfiltration: divide by J"); 457 476 l=division(J,ideal(matrix(w)-matrix(m)*C*U)); 458 477 D=l[1]; 459 478 460 dbprint(printlevel-voice+2,"//gaussman:: monomat: compute w/U");479 dbprint(printlevel-voice+2,"//gaussman::vfiltration: compute w/U"); 461 480 for(j=mu;j>=1;j--) 462 481 { … … 464 483 { 465 484 dbprint(printlevel-voice+2, 466 "//gaussman:: monomat: compute U["+string(j)+"]");485 "//gaussman::vfiltration: compute U["+string(j)+"]"); 467 486 U[j,j]=U[j,j]*l[2][j,j]; 468 487 } 469 488 dbprint(printlevel-voice+2, 470 "//gaussman:: monomat: compute w["+string(j)+"]");489 "//gaussman::vfiltration: compute w["+string(j)+"]"); 471 490 w[j]=0; 472 491 for(i=n+1;i>=1;i--) … … 480 499 int N=k-modH; 481 500 482 dbprint(printlevel-voice+2,"//gaussman::vfilt: transform H0 to saturation"); 501 dbprint(printlevel-voice+2, 502 "//gaussman::vfiltration: transform H0 to saturation"); 483 503 l=division(H,H0); 484 504 H0=expand(l[1],l[2],N-1); 485 505 486 506 dbprint(printlevel-voice+2, 487 "//gaussman::vfilt : compute H0 as vector space V0");507 "//gaussman::vfiltration: compute H0 as vector space V0"); 488 508 dbprint(printlevel-voice+2, 489 "//gaussman::vfilt : compute H1 as vector space V1");509 "//gaussman::vfiltration: compute H1 as vector space V1"); 490 510 poly p; 491 511 int i0,j0,i1,j1; … … 514 534 } 515 535 516 dbprint(printlevel-voice+2,"//gaussman::vfilt: compute A on saturation"); 536 dbprint(printlevel-voice+2, 537 "//gaussman::vfiltration: compute A on saturation"); 517 538 l=division(H*var(1),A*H+var(1)^2*diff(matrix(H),var(1))); 518 539 A=expand(l[1],l[2],N-1); 519 540 520 dbprint(printlevel-voice+2,"//gaussman::vfilt : compute matrix M of A");541 dbprint(printlevel-voice+2,"//gaussman::vfiltration: compute matrix M of A"); 521 542 matrix M[mu*N][mu*N]; 522 543 for(i0=mu;i0>=1;i0--) … … 544 565 } 545 566 546 dbprint(printlevel-voice+2,"//gaussman::vfilt: compute eigenvalues eA of A"); 567 dbprint(printlevel-voice+2, 568 "//gaussman::vfiltration: compute eigenvalues eA of A"); 547 569 ideal eA=jordan(A,-1)[1]; 548 dbprint(printlevel-voice+2,"//gaussman::vfilt: eA="+string(eA)); 549 550 dbprint(printlevel-voice+2,"//gaussman::vfilt: compute eigenvalues eM of M"); 570 dbprint(printlevel-voice+2,"//gaussman::vfiltration: eA="+string(eA)); 571 572 dbprint(printlevel-voice+2, 573 "//gaussman::vfiltration: compute eigenvalues eM of M"); 551 574 ideal eM; 552 575 k=0; … … 574 597 } 575 598 } 576 dbprint(printlevel-voice+2,"//gaussman::vfilt : eM="+string(eM));599 dbprint(printlevel-voice+2,"//gaussman::vfiltration: eM="+string(eM)); 577 600 578 601 dbprint(printlevel-voice+2, 579 "//gaussman::vfilt : compute V-filtration on H0/H1");602 "//gaussman::vfiltration: compute V-filtration on H0/H1"); 580 603 ideal s; 581 604 k=0; … … 584 607 V[ncols(eM)+1]=std(V1); 585 608 intvec d; 586 if( size(#)>0)609 if(mode==0) 587 610 { 588 611 for(i=ncols(eM);number(eM[i])-1>number(n-1)/2;i--) … … 595 618 596 619 dbprint(printlevel-voice+2, 597 "//gaussman::vfilt : compute V["+string(i)+"]");620 "//gaussman::vfiltration: compute V["+string(i)+"]"); 598 621 V1=module(V1)+syz(Me); 599 622 V[i]=std(intersect(V1,V0)); … … 607 630 } 608 631 609 dbprint(printlevel-voice+2,"//gaussman::vfilt: symmetry index found"); 632 dbprint(printlevel-voice+2, 633 "//gaussman::vfiltration: symmetry index found"); 610 634 j=k; 611 635 if(number(eM[i])-1==number(n-1)/2) … … 618 642 619 643 dbprint(printlevel-voice+2, 620 "//gaussman::vfilt : compute V["+string(i)+"]");644 "//gaussman::vfiltration: compute V["+string(i)+"]"); 621 645 V1=module(V1)+syz(Me); 622 646 V[i]=std(intersect(V1,V0)); … … 630 654 } 631 655 632 dbprint(printlevel-voice+2,"//gaussman::vfilt : apply symmetry");656 dbprint(printlevel-voice+2,"//gaussman::vfiltration: apply symmetry"); 633 657 while(j>=1) 634 658 { … … 655 679 656 680 dbprint(printlevel-voice+2, 657 "//gaussman::vfilt : compute V["+string(i)+"]");681 "//gaussman::vfiltration: compute V["+string(i)+"]"); 658 682 V1=module(V1)+syz(Me); 659 683 V[i]=std(intersect(V1,V0)); … … 665 689 k++; 666 690 s[k]=eM[i]-1; 667 dbprint(printlevel-voice+2,"//gaussman::vfilt: transform to V0"); 691 dbprint(printlevel-voice+2, 692 "//gaussman::vfiltration: transform to V0"); 668 693 v[k]=matrix(freemodule(ncols(V[i])),mu,mu*N)*division(V0,V[i])[1]; 669 694 } … … 685 710 s[j]=eM[i]-1; 686 711 v[k]=v[j]; 687 dbprint(printlevel-voice+2,"//gaussman::vfilt: transform to V0"); 712 dbprint(printlevel-voice+2, 713 "//gaussman::vfiltration: transform to V0"); 688 714 v[j]=matrix(freemodule(ncols(V[i])),mu,mu*N)*division(V0,V[i])[1]; 689 715 j--; … … 692 718 } 693 719 694 dbprint(printlevel-voice+2,"//gaussman::vfilt: compute graded parts"); 720 dbprint(printlevel-voice+2, 721 "//gaussman::vfiltration: compute graded parts"); 695 722 option(redSB); 696 723 for(k=1;k<size(v);k++) … … 709 736 ring R=0,(x,y),ds; 710 737 poly f=x5+x2y2+y5; 711 list l=vfilt (f);738 list l=vfiltration(f); 712 739 print(l); 713 740 } 714 741 /////////////////////////////////////////////////////////////////////////////// 715 742 716 proc singspec(poly f) 717 "USAGE: <list> l=singspec(<poly> f); 718 ASSUME: f isolated singularity 719 RETURN: <ideal> l[1] : spectral numbers in increasing order 720 <intvec> l[2] : 721 <int> l[2][i] : multiplicity of spectral number l[1][i] 722 EXAMPLE: example singspec; shows an example 723 " 724 { 725 return(vfilt(f,0)); 726 } 727 example 728 { "EXAMPLE:"; echo=2; 729 ring R=0,(x,y),ds; 730 poly f=x5+x2y2+y5; 731 list l=singspec(f); 732 print(l); 733 } 734 /////////////////////////////////////////////////////////////////////////////// 735 736 proc gamma(list l) 737 "USAGE: <number> g=gamma(singspec(<poly> f)); 738 ASSUME: f isolated singularity 739 RETURN: Hertling's gamma invariant 740 EXAMPLE: example gamma; shows an example 741 " 742 { 743 ideal s=l[1]; 744 intvec d=l[2]; 745 int n=nvars(basering)-1; 746 number g=0; 747 int i,j; 748 for(i=1;i<=ncols(s);i++) 749 { 750 for(j=1;j<=d[i];j++) 751 { 752 g=g+(number(s[i])-number(n-1)/2)^2; 753 } 754 } 755 g=-g/4+sum(d)*number(s[ncols(s)]-s[1])/48; 756 return(g); 757 } 758 example 759 { "EXAMPLE:"; echo=2; 760 ring R=0,(x,y),ds; 761 poly f=x5+x2y2+y5; 762 gamma(singspec(f)); 763 } 764 /////////////////////////////////////////////////////////////////////////////// 765 766 proc gamma4(list l) 767 "USAGE: <number> g4=gamma4(singspec(<poly> f)); 768 ASSUME: f isolated singularity 769 RETURN: Hertling's gamma4 invariant 770 EXAMPLE: example gamma4; shows an example 771 " 772 { 773 ideal s=l[1]; 774 intvec d=l[2]; 775 int n=nvars(basering)-1; 776 number g4=0; 777 int i,j; 778 for(i=1;i<=ncols(s);i++) 779 { 780 for(j=1;j<=d[i];j++) 781 { 782 g4=g4+(number(s[i])-number(n-1)/2)^4; 783 } 784 } 785 g4=g4-(number(s[ncols(s)]-s[1])/12-1/30)* 786 (sum(d)*number(s[ncols(s)]-s[1])/4-24*gamma(l)); 787 return(g4); 788 } 789 example 790 { "EXAMPLE:"; echo=2; 791 ring R=0,(x,y),ds; 792 poly f=x5+x2y2+y5; 793 gamma4(singspec(f)); 794 } 795 /////////////////////////////////////////////////////////////////////////////// 796 797 proc vjacob(list l) 798 "USAGE: <list> l=vjacob(vfilt(<poly> f)); 799 ASSUME: f isolated singularity 800 RETURN: <ideal> l[1] : spectral numbers of the V-filtration on the 743 proc vfiltjacalg(list l) 744 "USAGE: vfiltjacalg(vfiltration(f)); 745 ASSUME: local ordering, f isolated singularity at 0 746 RETURN: list l : 747 ideal l[1] : spectral numbers of the V-filtration on the 801 748 Jacobian algebra in increasing order 802 <intvec>l[2] :803 <int>l[2][i] : multiplicity of spectral number l[1][i]804 <list>l[3] :805 <module>l[3][i] : vector space basis of l[1][i]-th graded part806 of the V-filtration on the Jaco nian algebra749 intvec l[2] : 750 int l[2][i] : multiplicity of spectral number l[1][i] 751 list l[3] : 752 module l[3][i] : vector space basis of l[1][i]-th graded part 753 of the V-filtration on the Jacobian algebra 807 754 in terms of l[4] 808 <ideal>l[4] : monomial vector space basis of the Jacobian algebra809 <ideal>l[5] : standard basis of Jacobian ideal810 EXAMPLE: example v jacob; shows an example755 ideal l[4] : monomial vector space basis of the Jacobian algebra 756 ideal l[5] : standard basis of Jacobian ideal 757 EXAMPLE: example vfiltjacalg; shows an example 811 758 " 812 759 { … … 822 769 823 770 dbprint(printlevel-voice+2, 824 "//gaussman::v jacob: compute multiplication in Jacobian algebra");771 "//gaussman::vfiltjacalg: compute multiplication in Jacobian algebra"); 825 772 list M; 826 773 for(i=ncols(m);i>=1;i--) … … 840 787 { 841 788 dbprint(printlevel-voice+2, 842 "//gaussman::v jacob: find next possible index");789 "//gaussman::vfiltjacalg: find next possible index"); 843 790 r1=number(s[ncols(s)]-s[1]); 844 791 for(j=ncols(s);j>=1;j--) … … 869 816 870 817 dbprint(printlevel-voice+2, 871 "//gaussman::v jacob: collect conditions for V["+string(r0)+"]");818 "//gaussman::vfiltjacalg: collect conditions for V["+string(r0)+"]"); 872 819 j=ncols(s); 873 820 j0=mu; … … 898 845 } 899 846 900 dbprint(printlevel-voice+2,"//gaussman::vjacob: compose condition matrix"); 847 dbprint(printlevel-voice+2, 848 "//gaussman::vfiltjacalg: compose condition matrix"); 901 849 L=transpose(module(l[1])); 902 850 for(k=2;k<=ncols(m);k++) … … 906 854 907 855 dbprint(printlevel-voice+2, 908 "//gaussman::v jacob: compute kernel of condition matrix");856 "//gaussman::vfiltjacalg: compute kernel of condition matrix"); 909 857 v0=v0+list(syz(L)); 910 858 s0=s0,r0; 911 859 } 912 860 913 dbprint(printlevel-voice+2,"//gaussman::v jacob: compute graded parts");861 dbprint(printlevel-voice+2,"//gaussman::vfiltjacalg: compute graded parts"); 914 862 option(redSB); 915 863 for(i=1;i<size(v0);i++) … … 920 868 921 869 dbprint(printlevel-voice+2, 922 "//gaussman::v jacob: remove trivial graded parts");870 "//gaussman::vfiltjacalg: remove trivial graded parts"); 923 871 i=1; 924 872 while(size(v0[i])==0) … … 946 894 ring R=0,(x,y),ds; 947 895 poly f=x5+x2y2+y5; 948 vjacob(vfilt(f)); 896 vfiltjacalg(vfiltration(f)); 897 } 898 /////////////////////////////////////////////////////////////////////////////// 899 900 proc gamma(list l) 901 "USAGE: gamma(vfiltration(f,0)); poly f 902 ASSUME: local ordering, f isolated singularity at 0 903 RETURN: number g : Hertling's gamma invariant 904 EXAMPLE: example gamma; shows an example 905 " 906 { 907 ideal s=l[1]; 908 intvec d=l[2]; 909 int n=nvars(basering)-1; 910 number g=0; 911 int i,j; 912 for(i=1;i<=ncols(s);i++) 913 { 914 for(j=1;j<=d[i];j++) 915 { 916 g=g+(number(s[i])-number(n-1)/2)^2; 917 } 918 } 919 g=-g/4+sum(d)*number(s[ncols(s)]-s[1])/48; 920 return(g); 921 } 922 example 923 { "EXAMPLE:"; echo=2; 924 ring R=0,(x,y),ds; 925 poly f=x5+x2y2+y5; 926 gamma(vfiltration(f,0)); 927 } 928 /////////////////////////////////////////////////////////////////////////////// 929 930 proc gamma4(list l) 931 "USAGE: gamma4(vfiltration(f,0)); poly f 932 ASSUME: local ordering, f isolated singularity at 0 933 RETURN: number g4 : Hertling's gamma4 invariant 934 EXAMPLE: example gamma4; shows an example 935 " 936 { 937 ideal s=l[1]; 938 intvec d=l[2]; 939 int n=nvars(basering)-1; 940 number g4=0; 941 int i,j; 942 for(i=1;i<=ncols(s);i++) 943 { 944 for(j=1;j<=d[i];j++) 945 { 946 g4=g4+(number(s[i])-number(n-1)/2)^4; 947 } 948 } 949 g4=g4-(number(s[ncols(s)]-s[1])/12-1/30)* 950 (sum(d)*number(s[ncols(s)]-s[1])/4-24*gamma(l)); 951 return(g4); 952 } 953 example 954 { "EXAMPLE:"; echo=2; 955 ring R=0,(x,y),ds; 956 poly f=x5+x2y2+y5; 957 gamma4(vfiltration(f,0)); 949 958 } 950 959 /////////////////////////////////////////////////////////////////////////////// … … 955 964 basering; 956 965 f; 957 print(monomat(f)); 958 print(monospec(f)); 959 list l=vfilt(f); 966 print(monodromy(f)); 967 list l=vfiltration(f); 960 968 l; 961 vjacob(l); 962 l=singspec(f); 963 l; 969 vfiltjacalg(l); 964 970 gamma(l); 965 971 gamma4(l);
Note: See TracChangeset
for help on using the changeset viewer.