Liverpool University Knot Theory Group
Programs and Procedures
Copies of the following programs and procedures can be downloaded for compilation
on your own machine.
Some basic descriptions and instructions are attached.
Queries can be sent by email to morton@liv.ac.uk.
This list can be found at URL http://www.liv.ac.uk/~su14/knotprogs.html
or by following links from http://www.liv.ac.uk/maths/
See also the
list of publications of the
Liverpool Knot Theory group, where PostScript copies of some recent preprints
can be found.
There are at present four programs, each calculating some invariant
from a closed braid presentation. In each case the major constraint is
the number of braid strings; the growth of calculation time with the number
of crossings is roughly quadratic, and so typically it is not difficult
to deal with braids having about 100 crossings.
Three of the programs are in Pascal. In each case the input required
is the braid in terms of standard generators, with no separators, for example
1232231.
The three programs are

br9z.pas
This is
the original Homfly program (written by Short and Morton in 1985) using
the Hecke algebra directly . The output here is the Homfly polynomial,
as a matrix of coefficients, and also calculations of Alexander, Conway
and Jones derived from it. It will deal with up to 9string braids, and
you can alter the number of strings within a session. If you have a more
powerful machine or more storage you could try to make it work with 10
strings by altering a couple of the initial constants before recompiling.
The program itself handles the polynomial coefficients of an element of
the Hecke algebra by means of pointers, so as to avoid committing space
unnecessarily in advance of the calculation.
The program has been updated slightly in 2014.
A C++ version of the basic Homfly program is also available.
This is homfly.cpp
which works for up to 10 strings.

jones12.pas
This program (by Morton, 1994) calculates the Jones polynomial alone
for a braid on up to 12 strings. The last two generators are input as a
and b respectively, but otherwise as for the first program. It is based
on the fundamental quantum group representation of the braid on a vector
space of dimension 2^n, and calculates the contribution of each basis vector
to the weighted trace of the representing endomorphism. As feedback it
tells you how far through the calculation it is by noting which of the
2^n rows it is currently calculating (in groups of 10). Again this program
works on pointers to hold the entries. Its output is the Jones polynomial
multiplied by the factor s+s^(1), and it is written in a form suitable
for copying into Maple if you want to process it further.
The program has been updated slightly in 2014.

br9vas.p
This program was developed by Morton in 1994 from the Hecke algebra
program, and again deals with the Homfly polynomial, but makes use of the
fact that the calculations mainly use the variable z and involve v by means
of u = (1v^2)/z, to write the Homfly polynomial as a power of v multiplied
by a genuine polynomial in z and u. It is easy to identify the contribution
to Vassiliev invariants up to a given degree, and to truncate the calculations
so as to retain only this information. The output of the program is then
a polynomial in u and z of restricted degree in z, depending on the degree
of Vassiliev invariant required. The coefficients of powers of z, which
are functions of u, are Vassiliev invariants of the type wanted, and are
properly normalised once the polynomial is multiplied by the power of v
(=(1uz)^(1/2)) which is specified in the output.
For many purposes it is not necessary to multiply by this power series,
but the polynomial in u and z is written so as to make it easy to read
into Maple. Other natural changes of the output involve the substitutions
v=s^N, z=ss^(1), with s=exp(h/2). This gives a power series in h whose
coefficients are polynomials in N, and tallies with the invariant from
the fundamental representation of quantum sl(N). Putting N=0 gives the
Alexander polynomial, N=1 gives a constant, and N=2 gives the Jones polynomial
(with t=exp(h)).
The program itself deals with up to 9string braids, but it allows the
extra feature of closing off some strings of the braid before putting in
a further 9braid, and it thus allows the composition of two tangles based
on partial closures of 9braids. It was originally developed to help with
calculations of parallels of mutants.
In this program polynomials are stored in arrays rather than in terms
of pointers.
The three Pascal files need to be compiled before use. Via unix this
might simply need the instruction
pc o homfly br9z.pas to compile the first program (assuming
it is in your files as br9z.pas) and to save the compiled version
as an executable file called homfly.
Most recently (2021) I have used the Free Pascal compiler with Lazarus, to compile the first two programs on MacOSX, in both the 32bit and 64bit systems.
In the case of program 3, you may need to include the option casesense
in the compilation instructions, as there are both upper and lower case
variable names used in it.
The last of the programs is a Maple procedure

multiburau.txt.
This program, written by Morton and Hodgson in 1995,
will calculate the multivariable Alexander polynomial of a closed braid.
It also calculates the polynomial
for the closed braid and axis.
It needs to be read in to a Maple session as Maple input,
and used, for example for the figureeight knot, by typing
braid(3,1,2,1,2);
where the first entry is the number of braid strings, followed by the
braid word with commas as separators. There are some comments at the beginning
of the file to advise you of its use.
(The program has been amended slightly in 1999 to distinguish reliably between a knot and a link.)
H.R.Morton
Dept. of Mathematical Sciences
University of Liverpool
Peach Street
LIVERPOOL L69 7ZL