#####################################################################
## ##
## 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).
=====================================================================