Singular Manual: Gauss-Manin connection

| ## C.5 Gauss-Manin connection Let us consider as an example . First, we compute a matrix such that is a monodromy matrix of and the Jordan normal form of :
      LIB "mondromy.lib";
      ring R=0,(x,y),ds;
      poly f=x5+x2y2+y5;
      matrix M=monodromyB(f);
      print(M);
    ==> 11/10,0,    0,    0,    0,   0,-1/4,0,   0,   0,  0,
    ==> 0,    13/10,0,    0,    0,   0,0,   15/8,0,   0,  0,
    ==> 0,    0,    13/10,0,    0,   0,0,   0,   15/8,0,  0,
    ==> 0,    0,    0,    11/10,-1/4,0,0,   0,   0,   0,  0,
    ==> 0,    0,    0,    0,    9/10,0,0,   0,   0,   0,  0,
    ==> 0,    0,    0,    0,    0,   1,0,   0,   0,   0,  3/5,
    ==> 0,    0,    0,    0,    0,   0,9/10,0,   0,   0,  0,
    ==> 0,    0,    0,    0,    0,   0,0,   7/10,0,   0,  0,
    ==> 0,    0,    0,    0,    0,   0,0,   0,   7/10,0,  0,
    ==> 0,    0,    0,    0,    0,   0,0,   0,   0,   1,  -2/5,
    ==> 0,    0,    0,    0,    0,   0,0,   0,   0,   5/8,0
Now, we compute the V-fitration on and the spectrum:
      LIB "gmssing.lib";
      ring R=0,(x,y),ds;
      poly f=x5+x2y2+y5;
      list l=vfilt(f);
      print(l[1]); // spectral numbers
    ==> -1/2,
    ==> -3/10,
    ==> -1/10,
    ==> 0,
    ==> 1/10,
    ==> 3/10,
    ==> 1/2
      print(l[2]); // corresponding multiplicities
    ==> 1,
    ==> 2,
    ==> 2,
    ==> 1,
    ==> 2,
    ==> 2,
    ==> 1
      print(l[3]); // vector space of i-th graded part
    ==> [1]:
    ==>    _[1]=gen(11)
    ==> [2]:
    ==>    _[1]=gen(10)
    ==>    _[2]=gen(6)
    ==> [3]:
    ==>    _[1]=gen(9)
    ==>    _[2]=gen(4)
    ==> [4]:
    ==>    _[1]=gen(5)
    ==> [5]:
    ==>    _[1]=gen(3)
    ==>    _[2]=gen(8)
    ==> [6]:
    ==>    _[1]=gen(2)
    ==>    _[2]=gen(7)
    ==> [7]:
    ==>    _[1]=gen(1)
      print(l[4]); // monomial vector space basis of H''/s*H''
    ==> y5,
    ==> y4,
    ==> y3,
    ==> y2,
    ==> xy,
    ==> y,
    ==> x4,
    ==> x3,
    ==> x2,
    ==> x,
    ==> 1
      print(l[5]); // standard basis of Jacobian ideal
    ==> 2x2y+5y4,
    ==> 5x5-5y5,
    ==> 2xy2+5x4,
    ==> 10y6+25x3y4
Here `l[1]` contains the spectral numbers, `l[2]` the corresponding multiplicities, `l[3]` a -basis of the V-filtration on in terms of the monomial basis of in `l[4]` (separated by degree). Let us calculate one specific example, the maximal number of triple points of type of degree seven. This calculation can be done over the rationals. We choose a local ordering on . Here we take the negative degree lexicographical ordering, in denoted by `ds`:
    ring r=0,(x,y,z),ds;
    LIB "spectrum.lib";
    poly f=x^7+y^7+z^7;
    list s1=spectrumnd( f );
    s1;
    ==> [1]:
    ==>    _[1]=-4/7
    ==>    _[2]=-3/7
    ==>    _[3]=-2/7
    ==>    _[4]=-1/7
    ==>    _[5]=0
    ==>    _[6]=1/7
    ==>    _[7]=2/7
    ==>    _[8]=3/7
    ==>    _[9]=4/7
    ==>    _[10]=5/7
    ==>    _[11]=6/7
    ==>    _[12]=1
    ==>    _[13]=8/7
    ==>    _[14]=9/7
    ==>    _[15]=10/7
    ==>    _[16]=11/7
    ==> [2]:
    ==>    1,3,6,10,15,21,25,27,27,25,21,15,10,6,3,1
The command `spectrumnd(f)` computes the spectrum of and returns a list with six entries: The Milnor number and the number of different spectrum numbers. The other three entries are of type `intvec`. They contain the numerators, denominators and multiplicities of the spectrum numbers. So has Milnor number 216 and geometrical genus 35. Its spectrum consists of the 16 different rationals appearing with multiplicities 1,3,6,10,15,21,25,27,27,25,21,15,10,6,3,1. Therefore they have all the same spectrum, which we compute for
    poly g=x^3+y^3+z^3;
    list s2=spectrumnd(g);
    s2;
    ==> [1]:
    ==>    8
    ==> [2]:
    ==>    1
    ==> [3]:
    ==>    4
    ==> [4]:
    ==>    1,4,5,2
    ==> [5]:
    ==>    1,3,3,1
    ==> [6]:
    ==>    1,3,3,1
Evaluating semicontinuity is very easy:
    semicont(s1,s2);
    ==> 18
This tells us that there are at most 18 singularities of type is semiquasihomogeneous (sqh), so we can also apply the stronger form of semicontinuity:
    semicontsqh(s1,s2);
    ==> 17
So in fact a septic has at most 17 triple points of type Note that `spectrumnd(f)` works only if has a nondegenerate principal part. In fact `spectrumnd` will detect a degenerate principal part in many cases and print out an error message. However if it is known in advance that has nondegenerate principal part, then the spectrum may be computed much faster using `spectrumnd(f,1)`.

User manual for Singular version 4.4.1, 2025, generated by texi2html.