How to guess Heegaard Floer homology

Here you can find a Matlab program that attempts to compute the Heegaard Floer homology of rational homology spheres. When I wrote this program, there was no algorithm for doing this computation in the general case, so the computer did only as much as a computer could do. (In the meantime, algorithms have been found.)

The input is a Heegaard diagram in the form of a file data.m. The one here shows a diagram of the Seifert fibration \Sigma(2,3,4).

The program produces as output:
- the generators for the Heegaard Floer chain complex;
- their decomposition into Spin^c structures;
- their relative Maslov gradings;
- all positive domains of Maslov index one;
- each of these domains could carry holomorphic disks that contribute to a differential. The preimage of a disk in $Sym^{g-1}(\Sigma) \times \Sigma$ has a uniquely determined topological type, which is also shown in the output.

To use the program, save the files data.m, hf.m, loop.m, maslov.m, and setprod.m into the same directory.

Next, you need to modify the file data.m to reflect the Heegaard diagram you want to consider.
To input a Heegaard diagram of genus g, put the alpha curves in standard position, as the cores of g handles. Mark the duals of the alpha curves (the cocores of the handles). We call them gamma curves. Finally, draw the beta curves. This should all look similar to this diagram for \Sigma(2,3,4). Number the vertices on each alpha and gamma curve, starting from their common intersections, and then going left to right on each alpha, counterclockwise on each gamma. The alpha, beta, and gamma curves split our surface of genus g into a CW-complex. Input all this information into data.m following the instructions there.

Now open Matlab in the same directory, type in 'hf ', and the user interface should be self-explanatory.
The computer automatically renumbers all the vertices (0-cells) in the diagram as shown here, then finds the 2-cells and produces the output required. Make sure you answer "yes" to all the "Do you want to ... ?" questions the first time you run the program, in order to mark down the 0-cells and the 2-cells in the diagram.

Here is a log file to see how the interface should work for \Sigma(2,3,4). It shows that there are five generators in the second Spin^c structure. If we are interested in computing \widehat{HF}, we should only look at the positive domains where the second generator doesn't have any power of U in front of it. The program shows that there are four such domains, going between the pairs (4,2), (4, 10), (9,2) and (9,13). Two of them can carry disks (t=0 g=0 b=1) and the other two annuli (t=0 g=0 b=2). Since every rectangle carries exactly one pseudoholomorphic disk, it is not hard to see that \widehat{HF} = Z. (In fact, \Sigma(2,3,4) is an L-space.) If we are interested in HF^+ or HF^-, we can try to guess the respective chain complexes by looking at all positive domains, including those with a positive power of U in front of the second generator.

As an additional example, the file data245.m contains the information for the Heegaard diagram of \Sigma(2,4,5) shown here.
If you want to use it, make sure you rename it data.m, because otherwise the program cannot recognize it.

Mathematical references:
  • P. Ozsvath and Z. Szabo, "Holomorphic disks and topological invariants for closed three-manifolds", Annals of Math. 159 (2004), no. 3, 1027-1158
  • P. Ozsvath and Z. Szabo, "Holomorphic disks and three-manifold invariants: properties and applications", Annals of Math. 159 (2004), no. 3, 1159-1245
  • R. Lipshitz, "A cylindrical reformulation of Heegaard Floer homology", Geom. Topol. 10 (2006), 955-1097

    There are many ways in which one can imagine improving and extending this program: for example, to have it number the Spin^c structures in a smarter fashion, or to make it able to deal with other 3-manifolds and with knot Floer homology. Unfortunately, it is unlikely that I will have time to do these things in the near future. If you are interested in developing the program and have trouble reading my code, contact me.

    Comments? Suggestions? Bugs?
    Email me at:

    Copyright: Ciprian Manolescu, 2005.