Worksheet II for quandle 2-cocycle invariants
by Masahico Saito & Chad Smudde
These programs compute quandle cocycle invariants of classical knots for the ``twisted case" using 2-cocycles, see the reference below for more details.
This worksheet is a continuation to the worksheet "cocysample.mws" which deals with the "untwisted case". See the worksheet "cocysample.mws" for more information about how to read in files and for explanations of the contents of the files "knot_table" and "Quandle".
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.
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 "KnotpkgT.m" into the worksheet.
The procedures included in the "KnotpkgT.m" file are:
co2TwistedSol:=proc(Quandle,polynomial (in t),m::posint)
co2TwistedInvar:=proc(Quandle,Knot,polynomial (in t), m::posint, (optional)solutions)
CollectTerms:=proc(List)
tinverse=proc(polynomial (in t),m::posint)
quandlesize:=proc(Quandle)
makeinv:=proc(Quandle).
The procedures makinv(), quandlesize(), and tinverse() are procedures that are used in the others and are of little importance to the user.
The other procedures will be described below.
> | read "KnotpkgT.m": |
> | read "knot_table": |
> | read "Quandle": |
The following examples show how braid words, quandles, and lists can be used to compute quandle 2-cocycle invariants for the "twisted case."
The first step is to find solutions to the "twisted" 2-cocycle condition. The procedure "co2TwistedSol(Quandle,polynomial (in t), modulus)" takes as input the following three items:
1) Quandle is a two dimensional zero indexed array that will later be used to color the braid.
2) Polynomial (in t) This is the polynomial h(t) from the Alexander quandle, Z_m[t,t^(-1)]/(h(t)), that will be used.
3) The modulus, m, from the Alexander quandle Z_m[t, t^(-1)]/(h(t)).
Note: It would be best to use only a prime modulus for the time being. Some of the built in Maple procedures that are used in "co2TwistedInvar"
require a prime modulus even though no testing is performed.
The output of this procedure is a two dimensional array representing the solutions to the "twisted" 2-cocycle conditions. This is in fact a general solution. Thus, there are most likely free variables in the solution. They are represented by x[i] and take values from Z_m. Upon assigning values to these free variables one can obtain a specific "twisted" 2-cocycle. Otherwise, if desired the solution with these free variables can be sent to the procedure "co2TwistedInvar" and will appear in the output (to be described later).
> | f:=co2TwistedSol(Q4_3,t+1,2); |
> | print(f); |
> | g:=co2TwistedSol(Q4_3,t^2+t+1,2); |
> | print(g); |
The procedure "co2TwistedInvar" will call the procedure "co2TwistedSol." Hence a call to "co2TwistedSol" executed by the user might be an uncommon occurrence. It could be desirable in a couple of circumstances. First if one wished to study the different cocycles that can be obtained from a given quandle and Alexander quandle, or secondly, if one wishes to save the solutions for a given quandle and Alexander quandle so that the solutions could be sent as an optional input to the procedure "co2TwistedInvar" in order to speed up calculations.
Now the procedure "co2TwistedInvar" will be explained.
This procedure will take as input:
1) A quandle. This is the quandle that will be used to color the braid. Any quandle from the file "Quandle" can be used, or any two dimensional zero indexed array representing the Cayley table for the quandle operation that satisfies the three quandle properties could be used.
2) A knot. A minimum braid from any of the files, "knot_table", "extknot_table", or overextKnotTable".
3) The polynomial h(t) from the Alexander quandle Z_m[t, t^(-1)]/(h(t)).
4) The modulus m from the Alexander quandle Z_m[t, t^(-1)]/(h(t)). Let m be prime for the time being.
This procedure will check all possible colorings and when a valid coloring is found the Boltzman weight of the coloring is found and added to the list. Therefore, the output from the "co2TwistedInvar" is a list [B(C)] for C in the valid colorings of the braid by the given quandle where B stands for Boltzman weight. Note: B(C), the Boltzman weight for a particular coloring, is in the Alexander quandle Z_m[t, t^(-1)]/(h(t)), so if no values were assigned to the free variables B(C) may be a family of elements from Z_m[t, t^(-1)]/(h(t)) for a particular coloring C.
> | co2TwistedInvar(Q4_3,bw[1],t+1,2); |
The procedure "CollectTerms" can be applied to the output of "co2TwistedInvar" to obtain an easily recognizable list of Boltzman weights. The elements of this list are two element lists. The first element is the number of occurrences of the second element, the Boltzman weight.
> | CollectTerms(co2TwistedInvar(Q4_3,bw[1],t+1,2)); |
By creating lists of quandles and Alexander quandles many different combinations of calculations can be performed.
This first example will calculate the list of Boltzman weights for the Alexander quandle Z_2[t,t^(-1)]/(t+1) and for the three and four element quandles listed in the file "Quandle." These quandles will be put into a list and the nested loops will allow us to perform all possible calculations. A complete list of the quandles stored in the file "Quandle" is 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].
> | L:=[Q3,Q4_1,Q4_2,Q4_3]:
for i in L do print(convert(i,matrix)); for j from 1 to 35 do print(Knot, j, bw[j]); print(CollectTerms(co2TwistedInvar(i,bw[j],t+1,2))); od; od; |
The next example shows how loops and lists could be used to color with a specific quandle and have different Alexander quandles for the coefficients.
> | p:=[t+1,t^2+t+1]:
for i in p do for j in [2,3] do print(Z_,j,[t,t^(-1)],"/",i); for k from 1 to 35 do print(Knot,k,bw[k]); print(CollectTerms(co2TwistedInvar(Q3,bw[k],i,j))); od;od;od; |
> |
> |
> |