Worksheet for quandle 2-cocycle and 3-cocycle invariants 

by Masahico Saito & Chad Smudde  

 

       The general theory for which this worksheet and package are based is presented in, for example,  

the paper,  ``Quandle Homology Theory and Cocycle Knot Invariants,'' by Carter and Saito,  

Proc. in Symposia in Pure Math., vol. 71, Topology and Geometry of Manifolds, eds. Matic and McCrory, AMS (2003), 249-268, and the book ``Surfaces in 4-space,'' by Carter, Kamada, and Saito, Springer-Verlag, 2004.  

       These programs compute quandle cocycle invariants of classical knots for the ``untwisted case" using 2-cocycles, and ``shadow colored case" using 3-cocycles, see the above reference for more details.  

       Acknowledgement: Some part of the programs written by Dan Jelsovski earlier was used. Prof. Edwin Clark helped us with solving equations over finite cyclic abelian groups. Conversations with collaborators in this project on quandle cocycle invariants were helpful. The collaborators include J.S. Carter, M. Elhamdadi, M. Grana, A. Harris, D. Jelsovski, S. Kamada, L. Langford, M.A. Nikiforou, S. Satoh. This project is partially supported by NSF DMS-0301089.   

> restart;
 

Step 1: Read the file "Knotpkg.m" into the worksheet.  

          Determine where the file "Knotpkg.m" is saved and make a note of the path. If you have not yet downloaded the file "Knotpkg", do it now. 

          Next use the read command followed by double quotes and the path where the file was saved. e.g. [> read "path to Knotpkg.m"; .
          Here are some examples that are platform specific.
          Windows:            [>. read "C:\\maple.local\\Project\\Top.txt".
          UNIX:                 [> read "/usr/local/maple.local/Project/Top.txt".
          Macintosh:           [> read "Main HD:Local Maple Files:Project:Top.txt"  
          If the files are saved in the same directory (folder) and that directory is currently the active directory, then you may only need to type the file name,
          such as [> read ``filename'' .
          For more information on reading the file into the worksheet  type ?read or ?file at the prompt to see Maples online help.
          If all else fails download the file "Knotpkg.mws" and use this as a template for these and future calculations.
          The procedures included in the "Knotpkg.m" file are:
                       co2Solution:=proc(Quandle,m::posint)
                       calc2cocInvar:=proc(Quandle,Knot,m::posint, (optional)solutions)                       
                       co3Solution:=proc(Quandle,m::posint)
                       calc3cocInvar:=proc(Quandle,Knot,m::posint,(optional) solutions)
                       connSumKnots:=proc(Knots_list)
                       mirrorKnot:=proc(List)
                       barKnot:=proc(List)
                       quandlesize:=proc(Quandle)
                       makeinv:=proc(Quandle).
            The procedures makinv() and quandlesize() are procedures that are used in the others and are of little importance to the user.
            The other procedures will be described below.
 

> read "Knotpkg.m":
 

Step 2: Read the braid words into the worksheet.
           The file "knot_table" contains the braid words for the knots in the table up to eight crossings.
           There is also a file "extKnotTable" which contains the braid words up to nine crossing knots in the table.
 

           The braid words are labeled by bw[i] where bw is the array name and i is what braid word you want.  

           For example, the closure of bw[2] represents the figure-eight knot 4_1, the second knot in the table with four crossings. 

> read "knot_table";
 

(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
(Typesetting:-mprintslash)([bw := TABLE([1 = [1, 1, 1], 2 = [1, -2, 1, -2], 3 = [1, 1, 1, 1, 1], 5 = [-1, 2, -1, 3, -2, 3, 2], 4 = [1, 1, 2, 2, -1, 2], 7 = [-1, 2, 2, -1, -1, 2], 6 = [-1, 2, -1, 2, 2,...
 

Step 3: Read the quandles into the worksheet.
           The file "Quandle" contains all quandles from three to six elements that are pairwise non-isomorphic,
           with non-trivial torsion part in its second or third homology groups.
 

           The list is from the book ``Surfaces in 4-space,'' by Carter, Kamada, Saito, Springer-Verlag, 2004.
           They are labeled Qi_j where i is the size and j is which quandle. Currently there are 25 six element,
           6 five element, 3 four element, and 1 three element quandle in the file "Quandle.m" .
           These are two dimensional zero indexed arrays representing the multiplication table a*b for a,b in X, the quandle.
           Note: This step could be skipped if you don't want to work with any quandle in this list.
 

> read "Quandle":
 

> print(Q4_3);
 

(Typesetting:-mprintslash)([ARRAY([0 .. 3, 0 .. 3], [(0, 0) = 0, (0, 1) = 3, (0, 2) = 1, (0, 3) = 2, (1, 0) = 2, (1, 1) = 1, (1, 2) = 3, (1, 3) = 0, (2, 0) = 3, (2, 1) = 0, (2, 2) = 2, (2, 3) = 1, (3,...
(Typesetting:-mprintslash)([ARRAY([0 .. 3, 0 .. 3], [(0, 0) = 0, (0, 1) = 3, (0, 2) = 1, (0, 3) = 2, (1, 0) = 2, (1, 1) = 1, (1, 2) = 3, (1, 3) = 0, (2, 0) = 3, (2, 1) = 0, (2, 2) = 2, (2, 3) = 1, (3,...
(Typesetting:-mprintslash)([ARRAY([0 .. 3, 0 .. 3], [(0, 0) = 0, (0, 1) = 3, (0, 2) = 1, (0, 3) = 2, (1, 0) = 2, (1, 1) = 1, (1, 2) = 3, (1, 3) = 0, (2, 0) = 3, (2, 1) = 0, (2, 2) = 2, (2, 3) = 1, (3,...
 

Use the maple command convert to see the quandle in a more attractive form showing a*b for a,b in X. 

> print(convert(Q4_3,matrix));
 

(Typesetting:-mprintslash)([matrix([[0, 3, 1, 2], [2, 1, 3, 0], [3, 0, 2, 1], [1, 2, 0, 3]])], [table( [( 3, 1 ) = 3, ( 2, 4 ) = 0, ( 1, 3 ) = 1, ( 3, 3 ) = 2, ( 1, 1 ) = 0, ( 4, 2 ) = 2, ( 1, 4 ) = 2... 

Now some examples of procedures that manipulate braid words.
First access a specific braid word by using the label for the array, bw, and which knot is desired.
 

> bw[4];
 

[1, 1, 2, 2, -1, 2] 

The braid word is merely a list of integer values (excluding zero) representing crossings, negative numbers for negative crossings and positive numbers for positive crossings. For example, the first entry 1 in this list represents that this braid word starts with the standard generator \sigma_1 of the three-string braid group B_3.
The procedure mirrorKnot() takes as input a list, described above, and it returns the braid word of the mirror image of that knot.
 

> mirrorKnot(bw[4]);
 

[-2, -2, -1, -1, 2, -1] 

The procedure barKnot() takes as input a braid word, and its output is a braid word with the orientation reversed. 

> barKnot(bw[4]);
 

[2, -1, 2, 2, 1, 1] 

The procedure connSumKnots() takes as input a list of lists. Each element of the list is a list representing a braid word of a knot, and the procedure gives back a braid word of the connected sum of the two knots. 

> bw[2];
 

[1, -2, 1, -2] 

> connSumKnots([bw[4],bw[2]]);
 

[1, 1, 2, 2, -1, 2, 3, 4, -5, 4, -5] 

The following examples show how braid words, quandles, and lists can be used to compute quandle cocycle invariants.  

First an example of the quandle 2-cocycle invariants for a given knot and a given quandle. 

> calc2cocInvar(Q4_3,bw[1],2);
 

co2solproccall 

4+12*u^(t[10]+t[15]+t[14]) 

The first entry is the quandle specified, the second is a knot in braid word form, and the last is the modulus of the coefficient group used (Z_2 in this example).  

The general solutions of 2-cocycles are computed with free variables represented by t with subscripts, and used to compute the state-sum form of the cocycle invariant.  

> calc2cocInvar(Q4_3,bw[4],2);
 

4 

Notice: co2solproccall is not printed in the second example. This is printed only if the procedure co2Solution() is called in executing calc2cocInvar().
The solutions in this case are retrieved from memory rather than calculating the solutions for each function call.
 

This is due to the line "option remember" in the code for co2Solution. 

The next example shows how the optional fourth argument in calc2cocInvar() and calc3cocInvar() can be used. 

> f:=co3Solution(Q3,2);
 

co3solproccall 

(Typesetting:-mprintslash)([f := h], [h]) 

> print(f);
 

(Typesetting:-mprintslash)([ARRAY([0 .. 2, 0 .. 2, 0 .. 2], [(0, 0, 0) = 0, (0, 0, 1) = t[26], (0, 0, 2) = t[25]+t[26], (0, 1, 0) = t[17]+t[24]+t[25]+t[16], (0, 1, 1) = 0, (0, 1, 2) = t[26]+t[17]+t[24...
(Typesetting:-mprintslash)([ARRAY([0 .. 2, 0 .. 2, 0 .. 2], [(0, 0, 0) = 0, (0, 0, 1) = t[26], (0, 0, 2) = t[25]+t[26], (0, 1, 0) = t[17]+t[24]+t[25]+t[16], (0, 1, 1) = 0, (0, 1, 2) = t[26]+t[17]+t[24...
(Typesetting:-mprintslash)([ARRAY([0 .. 2, 0 .. 2, 0 .. 2], [(0, 0, 0) = 0, (0, 0, 1) = t[26], (0, 0, 2) = t[25]+t[26], (0, 1, 0) = t[17]+t[24]+t[25]+t[16], (0, 1, 1) = 0, (0, 1, 2) = t[26]+t[17]+t[24...
(Typesetting:-mprintslash)([ARRAY([0 .. 2, 0 .. 2, 0 .. 2], [(0, 0, 0) = 0, (0, 0, 1) = t[26], (0, 0, 2) = t[25]+t[26], (0, 1, 0) = t[17]+t[24]+t[25]+t[16], (0, 1, 1) = 0, (0, 1, 2) = t[26]+t[17]+t[24...
(Typesetting:-mprintslash)([ARRAY([0 .. 2, 0 .. 2, 0 .. 2], [(0, 0, 0) = 0, (0, 0, 1) = t[26], (0, 0, 2) = t[25]+t[26], (0, 1, 0) = t[17]+t[24]+t[25]+t[16], (0, 1, 1) = 0, (0, 1, 2) = t[26]+t[17]+t[24...
(Typesetting:-mprintslash)([ARRAY([0 .. 2, 0 .. 2, 0 .. 2], [(0, 0, 0) = 0, (0, 0, 1) = t[26], (0, 0, 2) = t[25]+t[26], (0, 1, 0) = t[17]+t[24]+t[25]+t[16], (0, 1, 1) = 0, (0, 1, 2) = t[26]+t[17]+t[24...
(Typesetting:-mprintslash)([ARRAY([0 .. 2, 0 .. 2, 0 .. 2], [(0, 0, 0) = 0, (0, 0, 1) = t[26], (0, 0, 2) = t[25]+t[26], (0, 1, 0) = t[17]+t[24]+t[25]+t[16], (0, 1, 1) = 0, (0, 1, 2) = t[26]+t[17]+t[24...
 

This printed the general solution of 3-cocycles. The following computes the shadow (face colored) 3-cocycle invariants.  

> calc3cocInvar(Q3,bw[4],2);
 

9 

> calc3cocInvar(Q3,bw[5],2, f);
 

27 

> calc3cocInvar(Q3,bw[1],3);
 

co3solproccall 

9+18*u^(t[26]+t[21]+t[22]) 

The invariants can be calculated for all knots in the table and a given quandle in the following way.
This example may take a few minutes. It took about 2 minutes on a  AMD 1.4 GHz processor.
 

> for i from 1 to 35 do
 print(Knot,i ,bw[i]);
 print(calc2cocInvar(Q4_3,bw[i],2));
od;
 

Knot, 1, [1, 1, 1] 

4+12*u^(t[10]+t[15]+t[14]) 

Knot, 2, [1, -2, 1, -2] 

4+12*u^(t[10]+t[15]+t[14]) 

Knot, 3, [1, 1, 1, 1, 1] 

4 

Knot, 4, [1, 1, 2, 2, -1, 2] 

4 

Knot, 5, [-1, 2, -1, 3, -2, 3, 2] 

4 

Knot, 6, [-1, 2, -1, 2, 2, 2] 

4 

Knot, 7, [-1, 2, 2, -1, -1, 2] 

4 

Knot, 8, [1, 1, 1, 1, 1, 1, 1] 

4 

Knot, 9, [-1, 3, 3, 3, 2, 1, 1, -3, 2] 

4+12*u^(t[10]+t[15]+t[14]) 

Knot, 10, [1, 1, 2, -1, 2, 2, 2, 2] 

4+12*u^(t[10]+t[15]+t[14]) 

Knot, 11, [1, 1, 2, 3, 3, -1, 2, -3, 2] 

4 

Knot, 12, [1, 1, 1, 1, 2, -1, 2, 2] 

4 

Knot, 13, [1, -2, -1, -1, 3, 2, 2, 2, 3] 

4 

Knot, 14, [1, -3, 2, -3, 2, -1, 2, -3, 2] 

4 

Knot, 15, [-1, 2, 3, -2, -1, 4, 4, 3, 2, -4] 

4+12*u^(t[10]+t[15]+t[14]) 

Knot, 16, [-1, 2, 2, 2, 2, 2, -1, 2] 

4 

Knot, 17, [-1, -1, -2, 1, 4, 4, 3, -4, -2, 3] 

4 

Knot, 18, [1, 1, 1, 3, -2, -3, -3, 1, -2] 

4+12*u^(t[10]+t[15]+t[14]) 

Knot, 19, [1, 1, 1, -2, 1, 1, 1, -2] 

16 

Knot, 20, [-1, 2, -1, -3, 2, 2, 2, 3, 3] 

4 

Knot, 21, [1, 1, 1, 1, -2, -2, 1, -2] 

4 

Knot, 22, [-1, 2, 1, 1, -3, 2, 2, -3, -3] 

4 

Knot, 23, [-1, 2, -1, -1, -1, 2, 2, 2] 

4 

Knot, 24, [-1, 2, 2, -1, -1, 2, 2, 2] 

16 

Knot, 25, [-1, 2, 2, -3, 2, 3, 3, -1, 2] 

4+12*u^(t[10]+t[15]+t[14]) 

Knot, 26, [1, -2, 3, -4, 3, -4, 2, 1, -3, -2] 

4 

Knot, 27, [1, 1, 2, -3, 2, -1, -3, -3, 2] 

4+12*u^(t[10]+t[15]+t[14]) 

Knot, 28, [1, 1, 2, 2, -1, -3, 2, -3, 2] 

4 

Knot, 29, [1, 1, -2, 1, 3, 3, 2, 2, 3] 

16 

Knot, 30, [1, 1, -2, 1, 1, -2, 1, -2] 

4 

Knot, 31, [-1, 2, -1, 2, 2, -1, -1, 2] 

4 

Knot, 32, [1, -2, 1, -2, 1, -2, 1, -2] 

16+48*u^(t[10]+t[15]+t[14]) 

Knot, 33, [1, 2, 1, 2, 1, 2, 2, 1] 

16 

Knot, 34, [1, 1, 1, 2, -1, -1, -1, 2] 

16 

Knot, 35, [1, -2, -2, 1, 1, 2, 2, 2] 

16 

Different quandles can be placed into a list to allow multiple quandles to color the same or different knots.
The following example tries to determine if any of the three or four element quandles can distinguish the left and right trefoil knots by the 3-cocycle invariants.
This example could be run over every quandle by replacing L by
L:=[Q3,Q4_1,Q4_2,Q4_3,Q5_1,Q5_5,Q5_2,Q5_3,Q5_4,Q5_6,Q6_1,Q6_2,Q6_3,Q6_4,Q6_5,Q6_6,Q6_7,Q6_8,Q6_9,Q6_10,Q6_11,Q6_12,Q6_13,Q6_14,Q6_15,Q6_16,Q6_17,Q6_18,Q6_19,Q6_20,Q6_21,Q6_22,Q6_23,Q6_24,Q6_25];
The example with all the quandles took about an hour to run on a AMD 1.4 GHz processor.
 

> L:=[Q3,Q4_1,Q4_2,Q4_3];
 

(Typesetting:-mprintslash)([L := [Q3, Q4_1, Q4_2, Q4_3]], [[Q3, Q4_1, Q4_2, Q4_3]]) 

> for j in L do
print(convert(j,matrix));
print(knot,bw[1]);
calc3cocInvar(j,bw[1],3);
print("mirror Knot",mirrorKnot(bw[1]));
calc3cocInvar(j,mirrorKnot(bw[1]),3);
od;
 

(Typesetting:-mprintslash)([matrix([[0, 2, 1], [2, 1, 0], [1, 0, 2]])], [table( [( 3, 1 ) = 1, ( 1, 3 ) = 1, ( 3, 3 ) = 2, ( 1, 1 ) = 0, ( 2, 1 ) = 2, ( 2, 3 ) = 0, ( 3, 2 ) = 0, ( 2, 2 ) = 1, ( 1, 2 ... 

knot, [1, 1, 1] 

9+18*u^(t[26]+t[21]+t[22]) 

mirror Knot 

9+18*u^(2*t[21]+2*t[22]+2*t[26]) 

(Typesetting:-mprintslash)([matrix([[0, 2, 1, 0], [2, 1, 0, 1], [1, 0, 2, 2], [3, 3, 3, 3]])], [table( [( 3, 1 ) = 1, ( 2, 4 ) = 1, ( 1, 3 ) = 1, ( 3, 3 ) = 2, ( 1, 1 ) = 0, ( 4, 2 ) = 3, ( 1, 4 ) = 0... 

knot, [1, 1, 1] 

co3solproccall 

22+18*u^(t[42]+t[35]+t[37]) 

mirror Knot 

22+18*u^(2*t[35]+2*t[37]+2*t[42]) 

(Typesetting:-mprintslash)([matrix([[0, 0, 1, 1], [1, 1, 0, 0], [3, 3, 2, 2], [2, 2, 3, 3]])], [table( [( 3, 1 ) = 3, ( 2, 4 ) = 0, ( 1, 3 ) = 1, ( 3, 3 ) = 2, ( 1, 1 ) = 0, ( 4, 2 ) = 2, ( 1, 4 ) = 1... 

knot, [1, 1, 1] 

co3solproccall 

16 

mirror Knot 

16 

(Typesetting:-mprintslash)([matrix([[0, 3, 1, 2], [2, 1, 3, 0], [3, 0, 2, 1], [1, 2, 0, 3]])], [table( [( 3, 1 ) = 3, ( 2, 4 ) = 0, ( 1, 3 ) = 1, ( 3, 3 ) = 2, ( 1, 1 ) = 0, ( 4, 2 ) = 2, ( 1, 4 ) = 2... 

knot, [1, 1, 1] 

co3solproccall 

64 

mirror Knot 

64 

This example will calculate all of the invariants for every 5 element quandle and the 35 knots.
Note: This is time consuming.
 

> S:=[Q5_1,Q5_2,Q5_3,Q5_4,Q5_5,Q5_6];
 

(Typesetting:-mprintslash)([S := [Q5_1, Q5_2, Q5_3, Q5_4, Q5_5, Q5_6]], [[Q5_1, Q5_2, Q5_3, Q5_4, Q5_5, Q5_6]]) 

> for j in S do
 print(convert(j,matrix));
 for i from 1 to 35 do
     print(Knot,i, bw[i]);
     print(calc2cocInvar(j,bw[i],2));
 od;
od;
 

(Typesetting:-mprintslash)([matrix([[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [2, 2, 2, 4, 3], [3, 3, 4, 3, 2], [4, 4, 3, 2, 4]])], [table( [( 3, 1 ) = 2, ( 2, 4 ) = 1, ( 1, 3 ) = 0, ( 3, 3 ) = 2, ( 1, 1 ) = ... 

Knot, 1, [1, 1, 1] 

co2solproccall 

11 

Knot, 2, [1, -2, 1, -2] 

5 

Knot, 3, [1, 1, 1, 1, 1] 

5 

Knot, 4, [1, 1, 2, 2, -1, 2] 

5 

Knot, 5, [-1, 2, -1, 3, -2, 3, 2] 

11 

Knot, 6, [-1, 2, -1, 2, 2, 2] 

5 

Knot, 7, [-1, 2, 2, -1, -1, 2] 

5 

Knot, 8, [1, 1, 1, 1, 1, 1, 1] 

5 

Knot, 9, [-1, 3, 3, 3, 2, 1, 1, -3, 2] 

5 

Knot, 10, [1, 1, 2, -1, 2, 2, 2, 2] 

5 

Knot, 11, [1, 1, 2, 3, 3, -1, 2, -3, 2] 

11 

Knot, 12, [1, 1, 1, 1, 2, -1, 2, 2] 

5 

Knot, 13, [1, -2, -1, -1, 3, 2, 2, 2, 3] 

5 

Knot, 14, [1, -3, 2, -3, 2, -1, 2, -3, 2] 

11 

Knot, 15, [-1, 2, 3, -2, -1, 4, 4, 3, 2, -4] 

5 

Knot, 16, [-1, 2, 2, 2, 2, 2, -1, 2] 

5 

Knot, 17, [-1, -1, -2, 1, 4, 4, 3, -4, -2, 3] 

5 

Knot, 18, [1, 1, 1, 3, -2, -3, -3, 1, -2] 

5 

Knot, 19, [1, 1, 1, -2, 1, 1, 1, -2] 

11 

Knot, 20, [-1, 2, -1, -3, 2, 2, 2, 3, 3] 

5 

Knot, 21, [1, 1, 1, 1, -2, -2, 1, -2] 

5 

Knot, 22, [-1, 2, 1, 1, -3, 2, 2, -3, -3] 

5 

Knot, 23, [-1, 2, -1, -1, -1, 2, 2, 2] 

5 

Knot, 24, [-1, 2, 2, -1, -1, 2, 2, 2] 

11 

Knot, 25, [-1, 2, 2, -3, 2, 3, 3, -1, 2] 

11 

Knot, 26, [1, -2, 3, -4, 3, -4, 2, 1, -3, -2] 

5 

Knot, 27, [1, 1, 2, -3, 2, -1, -3, -3, 2] 

5 

Knot, 28, [1, 1, 2, 2, -1, -3, 2, -3, 2] 

5 

Knot, 29, [1, 1, -2, 1, 3, 3, 2, 2, 3] 

11 

Knot, 30, [1, 1, -2, 1, 1, -2, 1, -2] 

5 

Knot, 31, [-1, 2, -1, 2, 2, -1, -1, 2] 

5 

Knot, 32, [1, -2, 1, -2, 1, -2, 1, -2] 

29 

Knot, 33, [1, 2, 1, 2, 1, 2, 2, 1] 

11 

Knot, 34, [1, 1, 1, 2, -1, -1, -1, 2] 

11 

Knot, 35, [1, -2, -2, 1, 1, 2, 2, 2] 

11 

(Typesetting:-mprintslash)([matrix([[0, 0, 1, 1, 1], [1, 1, 0, 0, 0], [2, 2, 2, 4, 3], [3, 3, 4, 3, 2], [4, 4, 3, 2, 4]])], [table( [( 3, 1 ) = 2, ( 2, 4 ) = 0, ( 1, 3 ) = 1, ( 3, 3 ) = 2, ( 1, 1 ) = ... 

Knot, 1, [1, 1, 1] 

co2solproccall 

11 

Knot, 2, [1, -2, 1, -2] 

5 

Knot, 3, [1, 1, 1, 1, 1] 

5 

Knot, 4, [1, 1, 2, 2, -1, 2] 

5 

Knot, 5, [-1, 2, -1, 3, -2, 3, 2] 

11 

Knot, 6, [-1, 2, -1, 2, 2, 2] 

5 

Knot, 7, [-1, 2, 2, -1, -1, 2] 

5 

Knot, 8, [1, 1, 1, 1, 1, 1, 1] 

5 

Knot, 9, [-1, 3, 3, 3, 2, 1, 1, -3, 2] 

5 

Knot, 10, [1, 1, 2, -1, 2, 2, 2, 2] 

5 

Knot, 11, [1, 1, 2, 3, 3, -1, 2, -3, 2] 

11 

Knot, 12, [1, 1, 1, 1, 2, -1, 2, 2] 

5 

Knot, 13, [1, -2, -1, -1, 3, 2, 2, 2, 3] 

5 

Knot, 14, [1, -3, 2, -3, 2, -1, 2, -3, 2] 

11 

Knot, 15, [-1, 2, 3, -2, -1, 4, 4, 3, 2, -4] 

5 

Knot, 16, [-1, 2, 2, 2, 2, 2, -1, 2] 

5 

Knot, 17, [-1, -1, -2, 1, 4, 4, 3, -4, -2, 3] 

5 

Knot, 18, [1, 1, 1, 3, -2, -3, -3, 1, -2] 

5 

Knot, 19, [1, 1, 1, -2, 1, 1, 1, -2] 

11 

Knot, 20, [-1, 2, -1, -3, 2, 2, 2, 3, 3] 

5 

Knot, 21, [1, 1, 1, 1, -2, -2, 1, -2] 

5 

Knot, 22, [-1, 2, 1, 1, -3, 2, 2, -3, -3] 

5 

Knot, 23, [-1, 2, -1, -1, -1, 2, 2, 2] 

5 

Knot, 24, [-1, 2, 2, -1, -1, 2, 2, 2] 

11 

Knot, 25, [-1, 2, 2, -3, 2, 3, 3, -1, 2] 

11 

Knot, 26, [1, -2, 3, -4, 3, -4, 2, 1, -3, -2] 

5 

Knot, 27, [1, 1, 2, -3, 2, -1, -3, -3, 2] 

5 

Knot, 28, [1, 1, 2, 2, -1, -3, 2, -3, 2] 

5 

Knot, 29, [1, 1, -2, 1, 3, 3, 2, 2, 3] 

11 

Knot, 30, [1, 1, -2, 1, 1, -2, 1, -2] 

5 

Knot, 31, [-1, 2, -1, 2, 2, -1, -1, 2] 

5 

Knot, 32, [1, -2, 1, -2, 1, -2, 1, -2] 

29 

Knot, 33, [1, 2, 1, 2, 1, 2, 2, 1] 

11 

Knot, 34, [1, 1, 1, 2, -1, -1, -1, 2] 

11 

Knot, 35, [1, -2, -2, 1, 1, 2, 2, 2] 

11 

(Typesetting:-mprintslash)([matrix([[0, 0, 0, 0, 0], [1, 1, 1, 2, 2], [2, 2, 2, 1, 1], [3, 4, 4, 3, 3], [4, 3, 3, 4, 4]])], [table( [( 3, 1 ) = 2, ( 2, 4 ) = 2, ( 1, 3 ) = 0, ( 3, 3 ) = 2, ( 1, 1 ) = ... 

Knot, 1, [1, 1, 1] 

co2solproccall 

5 

Knot, 2, [1, -2, 1, -2] 

5 

Knot, 3, [1, 1, 1, 1, 1] 

5 

Knot, 4, [1, 1, 2, 2, -1, 2] 

5 

Knot, 5, [-1, 2, -1, 3, -2, 3, 2] 

5 

Knot, 6, [-1, 2, -1, 2, 2, 2] 

5 

Knot, 7, [-1, 2, 2, -1, -1, 2] 

5 

Knot, 8, [1, 1, 1, 1, 1, 1, 1] 

5 

Knot, 9, [-1, 3, 3, 3, 2, 1, 1, -3, 2] 

5 

Knot, 10, [1, 1, 2, -1, 2, 2, 2, 2] 

5 

Knot, 11, [1, 1, 2, 3, 3, -1, 2, -3, 2] 

5 

Knot, 12, [1, 1, 1, 1, 2, -1, 2, 2] 

5 

Knot, 13, [1, -2, -1, -1, 3, 2, 2, 2, 3] 

5 

Knot, 14, [1, -3, 2, -3, 2, -1, 2, -3, 2] 

5 

Knot, 15, [-1, 2, 3, -2, -1, 4, 4, 3, 2, -4] 

5 

Knot, 16, [-1, 2, 2, 2, 2, 2, -1, 2] 

5 

Knot, 17, [-1, -1, -2, 1, 4, 4, 3, -4, -2, 3] 

5 

Knot, 18, [1, 1, 1, 3, -2, -3, -3, 1, -2] 

5 

Knot, 19, [1, 1, 1, -2, 1, 1, 1, -2] 

5 

Knot, 20, [-1, 2, -1, -3, 2, 2, 2, 3, 3] 

5 

Knot, 21, [1, 1, 1, 1, -2, -2, 1, -2] 

5 

Knot, 22, [-1, 2, 1, 1, -3, 2, 2, -3, -3] 

5 

Knot, 23, [-1, 2, -1, -1, -1, 2, 2, 2] 

5 

Knot, 24, [-1, 2, 2, -1, -1, 2, 2, 2] 

5 

Knot, 25, [-1, 2, 2, -3, 2, 3, 3, -1, 2] 

5 

Knot, 26, [1, -2, 3, -4, 3, -4, 2, 1, -3, -2] 

5 

Knot, 27, [1, 1, 2, -3, 2, -1, -3, -3, 2] 

5 

Knot, 28, [1, 1, 2, 2, -1, -3, 2, -3, 2] 

5 

Knot, 29, [1, 1, -2, 1, 3, 3, 2, 2, 3] 

5 

Knot, 30, [1, 1, -2, 1, 1, -2, 1, -2] 

5 

Knot, 31, [-1, 2, -1, 2, 2, -1, -1, 2] 

5 

Knot, 32, [1, -2, 1, -2, 1, -2, 1, -2] 

5 

Knot, 33, [1, 2, 1, 2, 1, 2, 2, 1] 

5 

Knot, 34, [1, 1, 1, 2, -1, -1, -1, 2] 

5 

Knot, 35, [1, -2, -2, 1, 1, 2, 2, 2] 

5 

(Typesetting:-mprintslash)([matrix([[0, 0, 0, 0, 0], [1, 1, 4, 2, 3], [2, 3, 2, 4, 1], [3, 4, 1, 3, 2], [4, 2, 3, 1, 4]])], [table( [( 3, 1 ) = 2, ( 2, 4 ) = 2, ( 1, 3 ) = 0, ( 3, 3 ) = 2, ( 1, 1 ) = ... 

Knot, 1, [1, 1, 1] 

co2solproccall 

5+12*u^(t[18]+t[24]+t[23]) 

Knot, 2, [1, -2, 1, -2] 

5+12*u^(t[18]+t[24]+t[23]) 

Knot, 3, [1, 1, 1, 1, 1] 

5 

Knot, 4, [1, 1, 2, 2, -1, 2] 

5 

Knot, 5, [-1, 2, -1, 3, -2, 3, 2] 

5 

Knot, 6, [-1, 2, -1, 2, 2, 2] 

5 

Knot, 7, [-1, 2, 2, -1, -1, 2] 

5 

Knot, 8, [1, 1, 1, 1, 1, 1, 1] 

5 

Knot, 9, [-1, 3, 3, 3, 2, 1, 1, -3, 2] 

5+12*u^(t[18]+t[24]+t[23]) 

Knot, 10, [1, 1, 2, -1, 2, 2, 2, 2] 

5+12*u^(t[18]+t[24]+t[23]) 

Knot, 11, [1, 1, 2, 3, 3, -1, 2, -3, 2] 

5 

Knot, 12, [1, 1, 1, 1, 2, -1, 2, 2] 

5 

Knot, 13, [1, -2, -1, -1, 3, 2, 2, 2, 3] 

5 

Knot, 14, [1, -3, 2, -3, 2, -1, 2, -3, 2] 

5 

Knot, 15, [-1, 2, 3, -2, -1, 4, 4, 3, 2, -4] 

5+12*u^(t[18]+t[24]+t[23]) 

Knot, 16, [-1, 2, 2, 2, 2, 2, -1, 2] 

5 

Knot, 17, [-1, -1, -2, 1, 4, 4, 3, -4, -2, 3] 

5 

Knot, 18, [1, 1, 1, 3, -2, -3, -3, 1, -2] 

5+12*u^(t[18]+t[24]+t[23]) 

Knot, 19, [1, 1, 1, -2, 1, 1, 1, -2] 

17 

Knot, 20, [-1, 2, -1, -3, 2, 2, 2, 3, 3] 

5 

Knot, 21, [1, 1, 1, 1, -2, -2, 1, -2] 

5 

Knot, 22, [-1, 2, 1, 1, -3, 2, 2, -3, -3] 

5 

Knot, 23, [-1, 2, -1, -1, -1, 2, 2, 2] 

5 

Knot, 24, [-1, 2, 2, -1, -1, 2, 2, 2] 

17 

Knot, 25, [-1, 2, 2, -3, 2, 3, 3, -1, 2] 

5+12*u^(t[18]+t[24]+t[23]) 

Knot, 26, [1, -2, 3, -4, 3, -4, 2, 1, -3, -2] 

5 

Knot, 27, [1, 1, 2, -3, 2, -1, -3, -3, 2] 

5+12*u^(t[18]+t[24]+t[23]) 

Knot, 28, [1, 1, 2, 2, -1, -3, 2, -3, 2] 

5 

Knot, 29, [1, 1, -2, 1, 3, 3, 2, 2, 3] 

17 

Knot, 30, [1, 1, -2, 1, 1, -2, 1, -2] 

5 

Knot, 31, [-1, 2, -1, 2, 2, -1, -1, 2] 

5 

Knot, 32, [1, -2, 1, -2, 1, -2, 1, -2] 

17+48*u^(t[18]+t[24]+t[23]) 

Knot, 33, [1, 2, 1, 2, 1, 2, 2, 1] 

17 

Knot, 34, [1, 1, 1, 2, -1, -1, -1, 2] 

17 

Knot, 35, [1, -2, -2, 1, 1, 2, 2, 2] 

17 

(Typesetting:-mprintslash)([matrix([[0, 0, 1, 1, 1], [1, 1, 0, 0, 0], [3, 4, 2, 4, 3], [4, 2, 4, 3, 2], [2, 3, 3, 2, 4]])], [table( [( 3, 1 ) = 3, ( 2, 4 ) = 0, ( 1, 3 ) = 1, ( 3, 3 ) = 2, ( 1, 1 ) = ... 

Knot, 1, [1, 1, 1] 

co2solproccall 

11 

Knot, 2, [1, -2, 1, -2] 

5 

Knot, 3, [1, 1, 1, 1, 1] 

5 

Knot, 4, [1, 1, 2, 2, -1, 2] 

5 

Knot, 5, [-1, 2, -1, 3, -2, 3, 2] 

11 

Knot, 6, [-1, 2, -1, 2, 2, 2] 

5 

Knot, 7, [-1, 2, 2, -1, -1, 2] 

5 

Knot, 8, [1, 1, 1, 1, 1, 1, 1] 

5 

Knot, 9, [-1, 3, 3, 3, 2, 1, 1, -3, 2] 

5 

Knot, 10, [1, 1, 2, -1, 2, 2, 2, 2] 

5 

Knot, 11, [1, 1, 2, 3, 3, -1, 2, -3, 2] 

11 

Knot, 12, [1, 1, 1, 1, 2, -1, 2, 2] 

5 

Knot, 13, [1, -2, -1, -1, 3, 2, 2, 2, 3] 

5 

Knot, 14, [1, -3, 2, -3, 2, -1, 2, -3, 2] 

11 

Knot, 15, [-1, 2, 3, -2, -1, 4, 4, 3, 2, -4] 

5 

Knot, 16, [-1, 2, 2, 2, 2, 2, -1, 2] 

5 

Knot, 17, [-1, -1, -2, 1, 4, 4, 3, -4, -2, 3] 

5 

Knot, 18, [1, 1, 1, 3, -2, -3, -3, 1, -2] 

5 

Knot, 19, [1, 1, 1, -2, 1, 1, 1, -2] 

11 

Knot, 20, [-1, 2, -1, -3, 2, 2, 2, 3, 3] 

5 

Knot, 21, [1, 1, 1, 1, -2, -2, 1, -2] 

5 

Knot, 22, [-1, 2, 1, 1, -3, 2, 2, -3, -3] 

5 

Knot, 23, [-1, 2, -1, -1, -1, 2, 2, 2] 

5 

Knot, 24, [-1, 2, 2, -1, -1, 2, 2, 2] 

11 

Knot, 25, [-1, 2, 2, -3, 2, 3, 3, -1, 2] 

11 

Knot, 26, [1, -2, 3, -4, 3, -4, 2, 1, -3, -2] 

5 

Knot, 27, [1, 1, 2, -3, 2, -1, -3, -3, 2] 

5 

Knot, 28, [1, 1, 2, 2, -1, -3, 2, -3, 2] 

5 

Knot, 29, [1, 1, -2, 1, 3, 3, 2, 2, 3] 

11 

Knot, 30, [1, 1, -2, 1, 1, -2, 1, -2] 

5 

Knot, 31, [-1, 2, -1, 2, 2, -1, -1, 2] 

5 

Knot, 32, [1, -2, 1, -2, 1, -2, 1, -2] 

29 

Knot, 33, [1, 2, 1, 2, 1, 2, 2, 1] 

11 

Knot, 34, [1, 1, 1, 2, -1, -1, -1, 2] 

11 

Knot, 35, [1, -2, -2, 1, 1, 2, 2, 2] 

11 

(Typesetting:-mprintslash)([matrix([[0, 3, 4, 2, 1], [2, 1, 3, 4, 0], [1, 4, 2, 0, 3], [4, 0, 1, 3, 2], [3, 2, 0, 1, 4]])], [table( [( 3, 1 ) = 1, ( 2, 4 ) = 4, ( 1, 3 ) = 4, ( 3, 3 ) = 2, ( 1, 1 ) = ... 

Knot, 1, [1, 1, 1] 

co2solproccall 

5 

Knot, 2, [1, -2, 1, -2] 

25 

Knot, 3, [1, 1, 1, 1, 1] 

25 

Knot, 4, [1, 1, 2, 2, -1, 2] 

5 

Knot, 5, [-1, 2, -1, 3, -2, 3, 2] 

5 

Knot, 6, [-1, 2, -1, 2, 2, 2] 

5 

Knot, 7, [-1, 2, 2, -1, -1, 2] 

5 

Knot, 8, [1, 1, 1, 1, 1, 1, 1] 

5 

Knot, 9, [-1, 3, 3, 3, 2, 1, 1, -3, 2] 

5 

Knot, 10, [1, 1, 2, -1, 2, 2, 2, 2] 

5 

Knot, 11, [1, 1, 2, 3, 3, -1, 2, -3, 2] 

25 

Knot, 12, [1, 1, 1, 1, 2, -1, 2, 2] 

5 

Knot, 13, [1, -2, -1, -1, 3, 2, 2, 2, 3] 

5 

Knot, 14, [1, -3, 2, -3, 2, -1, 2, -3, 2] 

5 

Knot, 15, [-1, 2, 3, -2, -1, 4, 4, 3, 2, -4] 

5 

Knot, 16, [-1, 2, 2, 2, 2, 2, -1, 2] 

5 

Knot, 17, [-1, -1, -2, 1, 4, 4, 3, -4, -2, 3] 

5 

Knot, 18, [1, 1, 1, 3, -2, -3, -3, 1, -2] 

5 

Knot, 19, [1, 1, 1, -2, 1, 1, 1, -2] 

5 

Knot, 20, [-1, 2, -1, -3, 2, 2, 2, 3, 3] 

5 

Knot, 21, [1, 1, 1, 1, -2, -2, 1, -2] 

5 

Knot, 22, [-1, 2, 1, 1, -3, 2, 2, -3, -3] 

25 

Knot, 23, [-1, 2, -1, -1, -1, 2, 2, 2] 

25 

Knot, 24, [-1, 2, 2, -1, -1, 2, 2, 2] 

5 

Knot, 25, [-1, 2, 2, -3, 2, 3, 3, -1, 2] 

5 

Knot, 26, [1, -2, 3, -4, 3, -4, 2, 1, -3, -2] 

5 

Knot, 27, [1, 1, 2, -3, 2, -1, -3, -3, 2] 

5 

Knot, 28, [1, 1, 2, 2, -1, -3, 2, -3, 2] 

5 

Knot, 29, [1, 1, -2, 1, 3, 3, 2, 2, 3] 

5 

Knot, 30, [1, 1, -2, 1, 1, -2, 1, -2] 

25 

Knot, 31, [-1, 2, -1, 2, 2, -1, -1, 2] 

5 

Knot, 32, [1, -2, 1, -2, 1, -2, 1, -2] 

25 

Knot, 33, [1, 2, 1, 2, 1, 2, 2, 1] 

5 

Knot, 34, [1, 1, 1, 2, -1, -1, -1, 2] 

5 

Knot, 35, [1, -2, -2, 1, 1, 2, 2, 2] 

25