##################################################################### ## ## ## Q U A N T U M C A L C U L A T O R ## ## ## ## U S E R M A N U A L ## ## ## ## ## ## Copyright (C) 2008 Anders S. Buch ## ## (asbuch at math dot rutgers dot edu) ## ## ## ##################################################################### INTRODUCTION: The Quantum Calculator is a Maple program that can carry out computations in the small quantum cohomology ring of any Grassmannian of classical type. More precisely, it covers ordinary Grassmannians (type A) and Grassmannians of isotropic subspaces in a symplectic vector space (type C) or in an orthogonal vector space (type B or D). The calculations are based on formulas from the papers [1]-[4] listed below. This software was written as part of a joint project with Andrew Kresch and Harry Tamvakis, aimed at studying the small quantum cohomology rings of submaximal isotropic and orthogonal Grassmannians. USING THE QUANTUM CALCULATOR: To use the Quantum Calculator, download the file "qcalc" and place it in the current directory. Then start maple and issue the commands "read qcalc;" and "with(qcalc);". It might look as follows: % maple |\^/| Maple 10 (IBM INTEL LINUX) ._|\| |/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2005 \ MAPLE / All rights reserved. Maple is a trademark of <____ ____> Waterloo Maple Inc. | Type ? for help. > read qcalc; > with(qcalc); [Gr, IG, OG, act, apply_lc, dualize, generators, get_type, giambelli, index2part, miami_swap, mult, pair2part, part2index, part2pair, pieri, point_class, qact, qgiambelli, qmult, qpieri, qtoS, schub_classes, schub_type, set_type, toS, type_string, type_swap] Now choose a Grassmannian to work on by using one of the commands "Gr" (type A), "IG" (type C), or "OG" (types B and D). For example, the command "Gr(3,8);" will initialize the Quantum Calculator to work with the type A Grassmannian of 3-dimensional subspaces of a complex vector space of dimension 8. > Gr(2,5); "Type A ; (k,n) = (3,5) ; Gr(2,5) ; deg(q) = 5" The Schubert classes for all the supported Grassmannians can be indexed by partitions. For isotropic Grassmannians of type B,C,D the Quantum Calculator use the k-strict partitions introduced in [4]. The commands "schub_classes()", "point_class()", and "generators()" give lists of such classes: > schub_classes(); {S[], S[3, 3], S[3, 2], S[3, 1], S[3], S[2, 2], S[2, 1], S[2], S[1, 1], S[1]} > point_class(); S[3, 3] > generators(); [S[1], S[2], S[3]] The last command returns a list of special Schubert classes that generate the cohomology ring of the chosen Grassmannian. For even orthogonal Grassmannians, the Schubert classes are indexed by "typed k-strict partitions"; a partition can have type 0, 1, or 2. We refer to [4] for the exact meaning. In order to distinguish between the types, a trailing zero is added to partitions of type 2. For example: > OG(1,6); "Type D ; (k,n) = (2,2) ; OG(1,6) ; deg(q) = 4" > schub_classes(); {S[], S[1], S[3], S[2], S[2, 0], S[4]} COMPUTATIONS IN (QUANTUM) COHOMOLOGY: Several commands can be used to perform computations in the ordinary cohomology ring or the quantum ring of the chosen Grassmannian. For the commands listed below, all input values are called "sp", "lc", or "ex", which have the following meanings: sp : An input value called "sp" must be a polynomial expression in the special Schubet classes returned by generators() together with the quantum parameter q. Example: S[1]*S[3]^2-2*q^4*S[2]+3-q lc : An input value called "lc" must be a linear combination of Schubert classes with coefficients in Z[q]. If the unit Schubert class occurs, then it must be explicitly called S[]. Example: 3*q*S[]-8*S[2,2,1]+(5+q)*S[4,1,1,1] ex : An input value called "ex" must be a polynomial expression in arbitrary Schubert classes together with q. Example: q*S[3,1,1]^2*S[5]-4*S[2,1]^7+25 In most cases, the Quantum Calculator will not check if the supplied input values are of the correct type. If not, then the results of computations are undefined. The following commands perform computations in the ordinary cohomology ring of the chosen Grassmannian: pieri(p,lc) : Returns the cohomology product S[p] * lc. Here p is an integer specifying a special Schubert class. For the even orthogonal Grassmannian OG(n+1-k,2n+2), the value -k means the special class S[k,0] of type 2. act(sp,lc) : Computes the product sp * lc. The Pieri rule is used repeatedly to carry out this computation. giambelli(ex) : Returns an expression in the generating classes that represents ex. mult(ex,lc) : Computes the product ex * lc. Same as act(giambelli(ex),lc). toS(ex); Expresses ex as a linear combination of Schubert classes. Same as act(giambelli(ex),S[]). Each of these commands has an analogue that carries out the computation in the small quantum ring. The names of the quantum commands are "qpieri", "qact", "qgiambelli", "qmult", and "qtoS". Examples: > Gr(2,5); "Type A ; (k,n) = (3,5) ; Gr(2,5) ; deg(q) = 5" > qpieri(1, S[2,1]+S[3,2]); S[3, 1] + S[2, 2] + S[3, 3] + q S[1] > qact(S[1]+S[2]*S[3], S[2,1]+S[3,2]); S[3, 1] + S[2, 2] + S[3, 3] + q S[1] + q S[3] + q S[2, 1] + q S[3, 2] 2 + q S[] > qgiambelli(S[2,1]*S[2,1]); 2 2 2 S[2] S[1] - 2 S[3] S[2] S[1] + S[3] > qmult(S[2,1], S[2,1]+S[3,2]); S[3, 3] + q S[1] + q S[3] + q S[2, 1] > qtoS(S[2,1]*S[2,1]*S[2,1]); 2 q S[3, 1] + q S[2, 2] OTHER COMMANDS: The following commands can do conversions of linear combinations of Schubert classes. dualize(lc) : Replace each Schubert class in lc with its dual. part2index(lc): These functions replace partitions with "index sets" index2part(lc): that reveal the Schubert conditions, and vice versa. See [4] for details. Finally, there are commands to get information about the current Grassmannian. get_type() : Returns a numeric vector containing constants associated to the current Grassmannian. type_string() : Returns a human-readable string containing all the numbers from get_type(). MORE EXAMPLES: Example 1: (Dual Schubert class) > Gr(2,5); "Type A ; (k,n) = (3,5) ; Gr(2,5) ; deg(q) = 5" > dualize(S[1]+S[2]); S[3, 2] + S[3, 1] Example 2: (Pieri table) > IG(2,6); "Type C ; (k,n) = (1,3) ; IG(2,6) ; deg(q) = 5" > for h in generators() do for sc in schub_classes() do > lprint(h, sc, qmult(h,sc)); od; od; S[1], S[], S[1] S[1], S[1], S[2]+S[1,1] S[1], S[2], S[3]+S[2,1] S[1], S[3], S[3,1]+2*S[4] S[1], S[4], S[4,1]+q*S[] S[1], S[4,3], q*S[3] S[1], S[4,2], S[4,3]+q*S[2] S[1], S[4,1], S[4,2]+q*S[1] S[1], S[3,2], S[4,2] S[1], S[3,1], S[4,1]+S[3,2] S[1], S[2,1], S[4]+2*S[3,1] . . . Example 3: (Multiplication table) > OG(2,6); "Type D ; (k,n) = (1,2) ; OG(2,6) ; deg(q) = 3" > for s1 in schub_classes() do for s2 in schub_classes() do > lprint(s1, s2, qmult(s1,s2)); od; od; S[], S[], S[] S[], S[1], S[1] S[], S[2], S[2] S[], S[3], S[3] S[], S[3,1,0], S[3,1,0] S[], S[3,2], S[3,2] S[], S[3,1], S[3,1] S[], S[2,1], S[2,1] S[], S[2,1,0], S[2,1,0] S[], S[1,1], S[1,1] S[], S[1,1,0], S[1,1,0] S[], S[1,0], S[1,0] S[1], S[], S[1] S[1], S[1], S[1,1] S[1], S[2], S[3]+S[2,1] . . . Enjoy! Anders Buch References: [1] A. Bertram: Quantum Schubert calculus. Adv. Math. 128 (1997), 289-305. [2] A. Kresch, H. Tamvakis: Quantum cohomology of the Lagrangian Grassmannian. J. Algebraic Geom. 12 (2003), 777-810. [3] A. Kresch, H. Tamvakis: Quantum cohomology of orthogonal Grassmannians. Compos. Math. 140 (2004), 482--500. [4] A. Buch, A. Kresch, H. Tamvakis: Quantum Pieri rules for isotropic Grassmannians. preprint (2008). =====================================================================