////////////////////////////////////////////////////////////////////////// version="version schubert.lib 4.0.0.0 Jun_2013 "; // $Id$ category="Algebraic Geometry"; info=" LIBRARY: Schubert.lib Proceduces for Intersection Theory AUTHOR: Hiep Dang, email: hiep@mathematik.uni-kl.de OVERVIEW: We implement two new classes (variety and sheaf) and methods for computing with them. Here a variety is represented by the dimension and the Chow ring. A sheaf on a variety is represented by the Chern character. In particular, we implement the concrete varieties such as projective spaces , Grassmannians, and projective bundles. Finally, the most important thing is a method for computing the intersection numbers (degrees of 0-cycles). PROCEDURES: makeVariety(int,ideal) create a variety productVariety(variety,variety) product of two varieties ChowRing(variety) create the Chow ring of a variety dimension(variety) dimension of a variety relations(variety) relations of a variety Grassmannian(int,int) create a Grassmannian as a variety projectiveSpace(int) create a projective space as a variety projectiveBundle(sheaf) create a projective bundle as a variety integral(variety,poly) degree of a 0-cycle on a variety makeSheaf(variety,poly) create a sheaf ChernCharacter(sheaf) the Chern character of a sheaf totalChernClass(sheaf) the total Chern class of a sheaf ChernClass(sheaf,int) the k-th Chern class of a sheaf topChernClass(sheaf) the top Chern class of a sheaf totalSegreClass(sheaf) the total Segre class of a sheaf dualSheaf(sheaf) the dual of a sheaf tensorSheaf(sheaf,sheaf) the tensor of two sheaves symmetricPowerSheaf(sheaf,int) the k-th symmetric power of a sheaf minusSheaf(sheaf,sheaf) the quotient of two sheaves plusSheaf(sheaf,sheaf) the direct sum of two sheaves REFERENCES: Hiep Dang, Intersection theory with applications to the computation of Gromov-Witten invariants, Ph.D thesis, TU Kaiserslautern, 2013. Sheldon Katz and Stein A. Stromme, Schubert-A Maple package for intersection theory and enumerative geometry, 1992. Daniel R. Grayson, Michael E. Stillman, Stein A. Stromme, David Eisenbud and Charley Crissman, Schubert2-A Macaulay2 package for computation in intersection theory, 2010. KEYWORDS: Intersection Theory, Enumerative Geometry, Schubert Calculus "; //////////////////////////////////////////////////////////////////////////////// LIB "general.lib"; LIB "homolog.lib"; //////////////////////////////////////////////////////////////////////////////// /// create new classes: varieties and sheaves ////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// proc mod_init() { newstruct("variety","int dimension, ring baseRing, ideal relations"); newstruct("sheaf","variety currentVariety, poly ChernCharacter"); system("install","variety","print",variety_print,1); system("install","variety","*",productVariety,2); system("install","sheaf","print",sheaf_print,1); system("install","sheaf","*",tensorSheaf,2); system("install","sheaf","+",plusSheaf,2); system("install","sheaf","-",minusSheaf,2); } //////////////////////////////////////////////////////////////////////////////// /// Auxilary Static Procedures in this Library ///////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////// - part //////////////////////////////////////////////////////////// //////// - parts //////////////////////////////////////////////////////////// //////// - logg //////////////////////////////////////////////////////////// //////// - expp //////////////////////////////////////////////////////////// //////// - adams //////////////////////////////////////////////////////////// //////// - wedges //////////////////////////////////////////////////////////// //////// - schur //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// proc part(poly f, int n) "USAGE: part(f,n); f poly, n int RETURN: poly PURPOSE: return the homogeneous component of degree n of the polynomial f. EXAMPLE: example part; shows examples " { int i; poly p; for (i=1;i<=size(f);i++) { if (deg(f[i])==n) {p=p+f[i];} } return (p); } example { "EXAMPLE:"; echo=2; ring r = 0,(x,y,z),wp(1,2,3); poly f = 1+x+x2+x3+x4+y+y2+y3+z+z2+xy+xz+yz+xyz; part(f,0); part(f,1); part(f,2); part(f,3); part(f,4); part(f,5); part(f,6); } proc parts(poly f, int i, int j) "USAGE: parts(f,i,j); f poly, i int, j int RETURN: poly PURPOSE: return a polynomial which is the sum of the homogeneous components of degree from i to j of the polynomial f. EXAMPLE: example parts; shows examples " { int k; poly p; for (k=i;k<=j;k++) { p=p+part(f,k); } return (p); } example { "EXAMPLE:"; echo=2; ring r = 0,(x,y,z),wp(1,2,3); poly f = 1+x+x2+x3+x4+y+y2+y3+z+z2+xy+xz+yz+xyz; parts(f,2,4); } proc logg(poly f, int n) "USAGE: logg(f,n); f poly, n int RETURN: poly PURPOSE: computing the Chern character from the total Chern class. EXAMPLE: example logg; shows examples " { poly p; int i,j,k,m; if (n==0) {p=0;} if (n==1) {p=part(f,1);} else { list l=-part(f,1); for (j=2;j<=n;j++) { poly q; for (k=1;k