QuantumCohomology - Macaulay2/Workshop-2015-Boise GitHub Wiki
Introduction
At least in type A, Belkale, Korff, Stroppel, and others have established a connection between the structure constants of quantum cohomology and fusion rules (which have applications to the rank of conformal blocks). Recent work of Gibney and Kazanova suggests that in some instances, algorithms in quantum cohomology might perform substantially better than the Kac-Walton algorithm currently used in Swinarski's LieTypes package.
Some concrete tasks for our group at the workshop include:
-
create an interface between Macaulay2 and Anders Buchs's Maple program for quantum cohomology. Buch has two programs, one in Maple called qcalc.txt (about 1000 lines), and one in C called lrcalc. We think lrcalc only computes a quantum product of two classes, so we have not pursued this vigorously. Dave and Corey have qcalc working on their laptops.
-
Implement quantum cohomology rings for type A in Macaulay2. The SchurRings package could be a model for us. Maybe not the fastest way is to use quantum Giambelli and quantum Pieri.
Here is some "fake code" of what we would like our package to do:
Example: compute s_{2}^4 in the quantum cohomology ring $QH^{*}Gr(2,5)$
i1 : loadPackage("QuantumCohomology");
i2 : R=quantumCohomologyRing(QQ,s,q,2,5);
i3 : s_{2}^4
o3 : 2*q*s_{3} + 3*q*s_{2,1}
Example: Giambelli for s_{3,2} in $QH^{*}Gr(4,9)$
i4 : R=quantumCohomologyRing(QQ,s,q,4,9);
i5 : s_{1}*s_{4} - s_{2}*s_{3} + s_{3,2}
o5 : 0
References
Some references on quantum cohomology and its applications to conformal blocks are
The original paper of Bertram might have all the info that we need: http://arxiv.org/pdf/alg-geom/9410024v2.pdf
This paper of Anders Buch contains simpler proofs of the original formulas of Bertram, http://home.math.au.dk/abuch/papers/qschub.pdf
The numbers that we would want to compute is given in section 3.2 of the paper by Belkale, Gibney and Mukhopadhyay: http://arxiv.org/pdf/1308.4906v4.pdf
Tasks accomplished
- Fix coefficient() in SchurRings. It worked in SchurRings version 0.2 but doesn't work in SchurRings version 1.1.
SchurRings 0.2 Example SchurRings 1.1 Example
Solution: Mike Stillman wrote the following function for us
getCoefficient = (s, f) -> (
tms := select(listForm f, x -> x#0 == s);
if #tms == 0 then 0_(coefficientRing ring f)
else tms#0#1
)
Thanks Mike! :)
-
We implemented a ring-free quantum Pieri (both sums) in PieriSums.m2 and checked a few complicated examples against Anders Buch's Maple program. They worked!
-
We implemented a ring-free quantum Giambelli in RingfreeGiambelli.m2. We put everything together to get a quantumMonomialMultiplication. After further testing we will put it into QCAlgebras.m2 (which is modeled on NCAlgebras.m2)
Daily progess reports
Progress at end of May 27:
We spent a long time talking to Mike Stillman. We discussed several options for implementing quantum cohomology rings. Our favorite option is to implement a new kind of ring at top level, somewhat like what was done in the NCAlgebra package. At the end of the afternoon we began modifying a copy of NCAlgebra.m2.
We also worked on interfacing with Anders Buch's Maple program. At present we can send a string of Maple code from Macaulay2 to Maple and get the Maple output as a string. Up next: parse this string.
Progress at end of May 28:
We implemented the quantum Pieri rule, both sums. First we tried using the Polyhedra package to enumerate the diagrams we needed in the first sum. Enumerating them was fast but creating the polytope was slow. Thus we wrote our own recursive functions instead.
At the end of the day we started writing a "ring-free" Giambelli function (not complete yet) and studied how QCAlgebra implements multiplication. We're now trying to set it up so that we can easily construct the small quantum cohomology.
Progress at end of May 29:
We have the quantum Giambelli function working, and a putative quantumMonomialMultiplication function. We want to test lots of examples against Anders Buch's Maple program. We are working on streamlining the interface to compare answers quickly and easily. At the moment, there are still some bugs in the interface. Meanwhile, Corey and Robert have been working with QCAlgebras.m2 to get it ready for quantumMonomialMultiplication to be installed.
Progress at end of May 30:
We wrote a package called QuantumCohomology that implements the small quantum cohomology rings of ordinary Grassmannians as top-level rings in Macaulay2. Our algorithm for multiplication in these rings uses the quantum Pieri and quantum Giambelli formulas. We also created an interface to Anders Buch's Maple code.
To do before we leave Boise:
-
change s to a symbol, change q to a user input ring
-
make getCoefficient exactly what we want
To do later:
-
In ConformalBlocks package check that the total weight is in the root lattice before doing any computations (Assigned to Dave. Use the Verify key as an option.)
-
Link QuantumCohomology and ConformalBlocks (Assigned to Dave). --Include functions to switch from Dynkin labels (omegas) to partition notation
-
Explore rearranging the orders of elements in a product to make it faster (Robert)
-
Quantum Pieri and Quantum Giambelli are completely combinatorial. Implement in C in the engine for speed?? Or use Anders Buch's C code for this? (Assigned to ???)
-
Write documentation and add tests
- Overview page in package documentation (Assigned to Anna)
- Tutorial in lieu of lots of documented function?
- Write tests for all the main functions (Assigned to all four of us)
-
Further testing of QuantumCohomology against Anders Buch's Maple package. In Boise Dave checked everything for r=2 and l=2 or 4. (Assigned to Dave, Robert, Corey)
-
Write JSAG paper.
-
Analyse algorithmic performance of factorization (Dave) versus quantum cohomology (Anna) versus enumerating lattice points in polytopes (look up). Include in JSAG paper?