Changeset 9a03c2d in git for Singular/LIB/goettsche.lib


Ignore:
Timestamp:
Mar 9, 2018, 1:35:32 PM (6 years ago)
Author:
Karim Abou Zeid <karim23697@…>
Branches:
(u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
Children:
7b12a30e21c5626e320d213a12828d1a2dbc6084
Parents:
1af34f3a9d6f48f7bc59d937c310ee496a6c725859b9fdb6e4914ed681cc7907561abf9361bae474
Message:
Merge branch 'spielwiese' into stable
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/goettsche.lib

    r1af34f r9a03c2d  
    11////////////////////////////////////////////////////////////////
    2 version = "version goettsche.lib 4.1.1.0 Sep_2017 ";  // $Id$
    3 category = "Betti numbers";
     2version = "version goettsche.lib 0.931 Feb_2018 ";      //$Id$
    43info="
    54LIBRARY:  goettsche.lib     Drezet's formula for the Betti numbers of the moduli space
    6                             of Kronecker modules,
     5                            of Kronecker modules;
    76                            Goettsche's formula for the Betti numbers of the Hilbert scheme
    8                             of points on a surface,
     7                            of points on a surface;
     8                            Nakajima's and Yoshioka's formula for the Betti numbers
     9                            of the punctual Quot-schemes on a plane or, equivalently,
     10                            of the moduli spaces of the framed torsion-free planar sheaves;
    911                            Macdonald's formula for the symmetric product
    1012
     
    2123  [3] Macdonald, I. G.,     The Poincare polynomial of a symmetric product,
    2224                            Mathematical proceedings of the Cambridge Philosophical Society:
    23                             58, 563 - 568, (1962).
     25                            58, 563-568, (1962).
     26
     27  [4] Nakajima, Hiraku;     Lectures on instanton counting, CRM Proceedings and Lecture Notes,
     28      Yoshioka, Kota        Volume 88, 31-101, (2004).
    2429
    2530PROCEDURES:
     
    2732  PPolyH(z, n, b);          Poincare Polynomial of the Hilbert scheme of n points on a surface
    2833  BettiNumsH(n, b);         Betti numbers of the Hilbert scheme of n points on a surface
     34  NakYoshF(z, t, r, n);     The Nakajima-Yoshioka formula up to n-th degree
     35  PPolyQp(z, n, b);         Poincare Polynomial of the punctual Quot-scheme
     36                            of rank r on n planar points
     37  BettiNumsQp(n, b);        Betti numbers of the punctual Quot-scheme
     38                            of rank r on n planar points
    2939  MacdonaldF(z, t, n, b);   The Macdonald's formula up to n-th degree
    3040  PPolyS(z, n, b);          Poincare Polynomial of the n-th symmetric power of a variety
     
    3545                            of Kronecker modules N (q; m, n)
    3646
    37 KEYWORDS: betti number; Goettsche's formula; Macdonald's formula;Kronecker modules
     47KEYWORDS:  Betty number; Goettsche's formula; Macdonald's formula; Kronecker module; Hilbert scheme; Quot-scheme; framed sheaves; symmetric product
    3848";
    3949//----------------------------------------------------------
     
    6171    return( poly(0) );
    6272  }
    63   // now is non-negative and b is a list of non-negative integers
     73  // now n is non-negative and b is a list of non-negative integers
    6474  if(size(b) < 5) // if there are not enough Betti numbers
    6575  {
     
    124134    return( poly(0) );
    125135  }
    126   // now is non-negative and b is a list of non-negative integers
     136  // now n is non-negative and b is a list of non-negative integers
    127137  if(size(b) < 5) // if there are not enough Betti numbers
    128138  {
     
    188198    return(list());
    189199  }
    190   // now is non-negative and b is a list of non-negative integers
     200  // now n is non-negative and b is a list of non-negative integers
    191201  if(size(b) < 5) // if there are not enough Betti numbers
    192202  {
     
    229239  // get the Betti numbers of the Hilbert scheme of 3 points on P_2
    230240  print( BettiNumsH(3, b) );
     241}
     242//----------------------------------------------------------
     243
     244proc NakYoshF(poly z, poly t, int r, int n)
     245"USAGE:   NakYoshF(z, t, r, n);  z, t polynomials, r, n integers
     246RETURN:   polynomial in z and t
     247PURPOSE:  computes the formula of Nakajima and Yoshioka
     248          up to degree n in t
     249EXAMPLE:  example NakYoshF; shows an example
     250NOTE:     zero is returned if n<0 or r<=0
     251"
     252{
     253  // check the input data
     254  if(n<0)
     255  {
     256    print("the number of points must be non-negative");
     257    print("zero polynomial is returned");
     258    return( poly(0) );
     259  }
     260  if(r<=0)
     261  {
     262    print("r must be positive");
     263    print("zero polynomial is returned");
     264    return( poly(0) );
     265  }
     266  // now n is non-negative and r is positive
     267  def br@=basering; // remember the base ring
     268  // add additional variables z@, t@ to the base ring
     269  execute("ring r@= (" + charstr(basering) + "),("+varstr(basering)+", z@, t@), dp;" );
     270  execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
     271  // compute the generating function by the Nakajima-Yoshioka formula up to degree n in t@
     272  poly rez=1;
     273  int k,i;
     274  ideal I=std(t@^(n+1));
     275  for(k=1;k<=n;k++)
     276  {
     277    for(i=1;i<=r;i++)
     278    {
     279      rez=NF( rez*generFactor( z@^(2*(r*k-i))*t@^k, k, 0, 1, n), I);
     280    }
     281  }
     282  setring br@; // come back to the initial base ring
     283  // define the specialization homomorphism z@=z, t@=t
     284  execute( "map FF= r@,"+varstr(br@)+", z, t;" );
     285  poly rez=FF(rez); // bring the result to the base ring
     286  return(rez);
     287}
     288example
     289{
     290  "EXAMPLE:"; echo=2;
     291  ring r=0, (t, z), ls;
     292  // get the Nakajima-Yoshioka formula for r=1 up to degree 3, i.e.,
     293  // the generating function for the Poincare polynomials of the
     294  // punctual Hilbert schemes of n planar points
     295  print( NakYoshF(z, t, 1, 3) );
     296}
     297//----------------------------------------------------------
     298
     299proc PPolyQp(poly z, int r, int n)
     300"USAGE:   PPolyQp(z, r, n);  z polynomial, r, n integers
     301RETURN:   polynomial in z
     302PURPOSE:  computes the Poincare polynomial of the punctual Quot-scheme
     303          of rank r on n planar points
     304EXAMPLE:  example PPolyQp; shows an example
     305NOTE:     zero is returned if n<0 or r<=0
     306"
     307{
     308  // check the input data
     309  if(n<0)
     310  {
     311    print("the number of points must be non-negative");
     312    print("zero polynomial is returned");
     313    return( poly(0) );
     314  }
     315  if(r<=0)
     316  {
     317    print("r must be positive");
     318    print("zero polynomial is returned");
     319    return( poly(0) );
     320  }
     321  // now n is non-negative and r is positive
     322  def br@=basering; // remember the base ring
     323  // add additional variables z@, t@ to the base ring
     324  execute("ring r@= (" + charstr(basering) + "),("+varstr(basering)+", z@, t@), dp;" );
     325  execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
     326  // compute the generating function by the Nakajima-Yoshioka formula up to degree n in t@
     327  poly rez=1;
     328  int k,i;
     329  ideal I=std(t@^(n+1));
     330  for(k=1;k<=n;k++)
     331  {
     332    for(i=1;i<=r;i++)
     333    {
     334      rez=NF(rez*generFactor( z@^(2*(r*k-i))*t@^k, k, 0, 1, n), I);
     335    }
     336  }
     337  rez= coeffs(rez, t@)[n+1, 1]; // take the coefficient of the n-th power of t@
     338  setring br@; // come back to the initial base ring
     339  // define the specialization homomorphism z@=z, t@=0
     340  execute( "map FF= r@,"+varstr(br@)+",z, 0;" );
     341  poly rez=FF(rez); // bring the result to the base ring
     342  return(rez);
     343}
     344example
     345{
     346  "EXAMPLE:"; echo=2;
     347  ring r=0, (z), ls;
     348  // get the Poincare polynomial of the punctual Hilbert scheme (r=1)
     349  // of 3 planar points
     350  print( PPolyQp(z, 1, 3) );
     351}
     352//----------------------------------------------------------
     353
     354proc BettiNumsQp(int r, int n)
     355"USAGE:   BettiNumsQp(r, n);  n, r integers
     356RETURN:   list of non-negative integers
     357PURPOSE:  computes the Betti numbers of the punctual Quot-scheme
     358          of rank r on n points on a plane
     359EXAMPLE:  example BettiNumsQp; shows an example
     360NOTE:     an empty list is returned if n<0 or r<=0
     361"
     362{
     363  // check the input data
     364  if(n<0)
     365  {
     366    print("the number of points must be non-negative");
     367    print("zero polynomial is returned");
     368    return( poly(0) );
     369  }
     370  if(r<=0)
     371  {
     372    print("r must be positive");
     373    print("zero polynomial is returned");
     374    return( poly(0) );
     375  }
     376  // now n is non-negative and r is positive
     377  def br@=basering; // remember the base ring
     378  // add additional variables z@, t@ to the base ring
     379  execute("ring r@= (" + charstr(basering) + "),("+varstr(basering)+", z@, t@), dp;" );
     380  execute( "map F= br@,"+varstr(br@)+";" ); // define the corresponding inclusion of rings
     381  poly rez=1;
     382  int k,i;
     383  ideal I=std(t@^(n+1));
     384  for(k=1;k<=n;k++)
     385  {
     386    for(i=1;i<=r;i++)
     387    {
     388      rez=NF(rez*generFactor( z@^(2*(r*k-i))*t@^k, k, 0, 1, n), I);
     389    }
     390  }
     391  rez= coeffs(rez, t@)[n+1, 1]; // take the coefficient of the n-th power of t@
     392  matrix CF=coeffs(rez, z@); // take the matrix of the coefficients
     393  list res; // and transform it to a list
     394  int d=size(CF);
     395  for(i=1; i<=d; i++)
     396  {
     397    res=res+ list(int(CF[i, 1])) ;
     398  }
     399  setring br@; // come back to the initial base ring
     400  return(res);
     401}
     402example
     403{
     404  "EXAMPLE:"; echo=2;
     405  ring r=0, (z), ls;
     406  // get the Betti numbers of the punctual Hilbert scheme (r=1)
     407  // of 3 points on a plane
     408  print( BettiNumsQp(1, 3) );
    231409}
    232410//----------------------------------------------------------
     
    728906}
    729907//----------------------------------------------------------
    730 
Note: See TracChangeset for help on using the changeset viewer.