Maple Routines

I have made a series of Maple routines. Below is a brief description of each. The routines have been sorted into two directories: Biblio is the library of general routines, whereas Mirror is contains routines for working on problems related to Mirror Symmetry.

How to use

Some of the files require routines which are not part of standard Maple, but that I've made myself. This has been solved in two different ways: loading the routines at start-up or loading the file containing needed routines upon needing them.

Some routines are loaded when starting Maple: this is entered into the initialization file maple.ini (Windows) or .mapleinit (Unix). Instead of making a big init-file, I've made a file Biblio/EAinit.txt (ie. in the Biblio directory) which contains all these routines. The most important routine set up here is fil() (and related filbib() and filmir()) which is used to load files from a standard working directory defined by localdir (and localdir/Biblio and localdir/Mirror respectively). The advantage of fil() is that it knows the directory and the suffix in advance: I've used the suffix .txt on all Maple-files and will not write the suffix when refering to the file.

Some packages, eg. the Mirror/QHgrass for doing quantum cohomology on Grassmannians, requires routines from other packages, eg. from Biblio/Grass. These other needed packages will then be loaded automatically: the Mirror/QHgrass starts with the command filbib(Grass).


On some of the packages, ordinary help is defined. This is done differently for different versions: defining `help/text/name` in older version, whereas newer versions have other methods which are incorporated by running filbib(makehelp). I've tried to incorporate both ways. Help is put into a separate file with the same name but with the suffix .man.

On some routines there is run-time help: when running the routine, it tells you what to do next. To turn this on, type HelpOn(); to turn it off, run HelpOff().


These programs have originally been written and run under a very old Maple version. This has caused some problems when trying to run them on newer Maple versions. The help system has changes somewhat. Now, % is used to recall the last result, whereas " was used before; though I don't think this should present a problem.

More serious problems are commands that may have been redefined. I think, however, that this is a very limited problem that has been dealt with in Biblio/EAinit.txt.

Some problems have identified very recently and may not be corrected in all files. The order of evaluation seems to have changed slightly in sum. I have often quoted the entire expression to be summed and the variable to sum over; now, this produces problems, and the solution seems to be to quote more selectively the parts whose evaluation should be delayed.

Furthermore, the type symbol seems to be appropriate on some occurences where previously the type string was used.


Comments within the programs are sometimes in Norwegians. I appologize about this and will try to change this into English most places.

Some of the programs have been changed (or deleted) since I published the thesis and article on mirror symmetry; here is the original page. I also had an older page with routines which was never updated; however, on a few of the routines, this still has some extra information. The routines linked to from there, however, are outdated.

For faster and easier downloading, you can download zipped (compressed) files containing all files in the Biblio directory or in the Mirror directory.

mapleinit (my example)
This is a nice place to define global system variables and input data to the EAinit file which will set up some frequently needed routines. In particular, define the variable localdir to be the working-direcetory from which fil() shall read its files and with the Biblio and Mirror directories as subdirectories.

Version dependent changes: In EAinit, HelpFile() is defined to load the help-files and DefineHelp() is made to define the variables `help/text/name`:=TEXT(...), but this is done differently in recent versions of Maple; hence, you may want to define HelpFile() to do nothing as I have here. Also, it is worth noting that in older versions of Maple, stack() was used instead of stackmatrix(); EAinit checks if linalg[stackmatrix] is defined and if not defined stackmatrix() to be stack().

Routines in Biblio/

The following routines should be placed in the directory Biblio which should be a subdirectory of that working directory defined in the variable localdir.

The initialization file which defined a number of routines: primarily fil(), filbib(), and filmir() for loading files (and help-files); Keyword and Arguments for treating options (keyword=value) given to routines; HelpOn() and HelpOff() for run-time help.
Package for doing Schubert calculus: cohomology of Grassmannians. [Calls on hilbert.]
Find Poincare and Hilbert polynomials of ring; can also find basis (over C) of ring.
Permutations, subsets (of size k), n*m submatrices.
Calculate pfaffians (square roots of determinants of skew-symmetric matrices).
Set up Ross-Moore matrices and pfaffians of these (used in my PhD-thesis).
Differentials: eliminate differentials of order >N (expressions on form d_??? count as differentials).
Translate to/from Macaulay format.
For studying convergence of series and speed up convergence by some simple transformations.
Two small Grobner basis routines.

Routines in Mirror/

These routines are dealing with mirror symmetry, a relatively new branch of algebraic geometry with its origin in theoretical physics.

The following routines should be placed in the directory Mirror/ which should be a subdirectory of that working directory defined in the variable localdir.

Sets up data for analysing variation of complex structure in a family of Calabi-Yau varieties. This file defines some varieties of interest and includes the files needed in the analyses. Run-time help available. [Calls on Biblio\cymatrix, Mirror, MirRes, Binomial, and Msum.]
Used to generate a generalized hypergeometric series from the canonical form described as a residue; the hypergeometric series is the integral of the canonical form over a 3-cycle. Run-time help available.
Routine for simplifying generalized hypergeometric sums and prepare the sum for doing the actual summation to get the initial terms of the series. Run-time help available.
Routines for doing multi-index sums.
From series (generalized hypergeometric sum typically) which represents the integral of the canonical form over a 3-cycle, finds the Picard-Fuchs differential equation, calculates the mirror map, Yukawa couplling, and the curve count sequence. (This is done in a series of a few steps.) Run-time help available.
Routines for doing quantum cohomology: starts with matrix A representing the QH-product p* for a basis, finds the Picard-Fuchs, finds the special solution f0, and has some further routines for manipulating differential operators. [Calls on QHmat.]
Some examples of quantum cohomologies represented by ther p* matrices for use by QH.
Solutions (series) to differential operators.
Quantum cohomology for Grassmannians. Extends the Biblio/Grass package. Can provide initial data for running the QH package to do complete intersections in Grassmannians. [Calls on Biblio/Grass.]
Routines for calculating integrals on modulispaces of stable pointed curves on Grassmannians using Bott's formula; particularly adjusted for calculating two-point functions of lines on Grassmannians. [Calls on Biblio/perm.]
Last modified June 21, 2007.