The program uses Planar Diagram codes:
For example Trefoil = PD[X[4,2,5,1], X[2,6,3,5], X[6,4,1,3]]
It works for planar diagrams of knots.
A version for links will also be available later.

The X and the extra brackets are optional, the program will look for the PD start
and then read in the integers separated by other char, so 
PD[4,2,5,1,2,6,3,5,6,4,1,3], 
will also work.

You can give it several knots, just include PD in front of each:
PD[4,2,5,1,2,6,3,5,6,4,1,3], 
PD[12,2,13,1,7,3,8,2,3,15,4,14,8,14,9,13,15,11,16,10,4,10,5,9,11,7,12,6,16,6,1,5]

Compile with:
sh compile.sh

or equivalently:
g++ -std=c++11 -O3 Main.cpp Utility.cpp Min.cpp Max.cpp Crossing.cpp Simplify.cpp HomologyRank.cpp Report.cpp Diagrams.cpp KnotFloer.cpp 

It uses C++11,  and will produce an a.out file.
Run it  with ./a.out (depending on your setup a.out may also work).
It will ask for the name of an input file and a prime number p.
The answer will print on the screen, and to inputfile.modp, together
with additional info to inputfile.modp.Morse.
The second file contains a Morse presentation of the knot (that the program found and
used for the planar diagram). 

In the Morse presentation minimums are always added on the left. Max(i) indicates that the maximum was 
added to create the strands i and i+1. Crossing n means right-handed twist between strands n and n+1, and -n
the left handed twist.


For example Torus34.txt and 7 
will result in two output files:
Torus34.txt.mod7
Torus34.txt.mod7.Morse

