Added descriptions of periodicity test to usage and README

This commit is contained in:
Wojciech Politarczyk 2016-11-29 17:45:16 +01:00
parent 7cde96e48f
commit e9bac2e0e2
No known key found for this signature in database
GPG Key ID: DA54546CA5F66507
2 changed files with 72 additions and 44 deletions

21
README
View File

@ -3,6 +3,11 @@ knotkit is a C++ software package written by Cotton Seed
invariants appearing in low-dimensional topology. Other contributors invariants appearing in low-dimensional topology. Other contributors
include Josh Batson. include Josh Batson.
This is a slightly modified version of knotkit. It includes a periodicity
testing functionality based on the Przytycki's criterion in terms of
Jones polynomial and a periodicity criterion from the upcoming paper by
Maciej Borodzik, Anna Kosiorek and Wojciech Politarczyk.
TABLE OF CONTENTS TABLE OF CONTENTS
1. INTRO 1. INTRO
@ -101,7 +106,8 @@ sequence. The output for the command sq2 matches the output for the
program written by Lipshitz-Sarkar and is suitable for loading into program written by Lipshitz-Sarkar and is suitable for loading into
Sage. The command s outputs a single line of text. Sage. The command s outputs a single line of text.
usage: kk <invariant> [options...] <link> usage: %s <invariant> [options...] <link>
/home/wojtek/ownCloud/src/knotkit/kk
compute <invariant> for knot or link <link> compute <invariant> for knot or link <link>
<invariant> can be one of: <invariant> can be one of:
kh: Khovanov homology kh: Khovanov homology
@ -113,10 +119,14 @@ usage: kk <invariant> [options...] <link>
leess: spectral sequence coming from Bar-Natan analogue of Lee's leess: spectral sequence coming from Bar-Natan analogue of Lee's
deformation of Khovanov's complex (whew!) deformation of Khovanov's complex (whew!)
s: Rasmussen's s-invariant coming from lee s: Rasmussen's s-invariant coming from lee
khp: computes Khovanov polynomial of a link
jones: computes Jones polynomial of a link
periodicity: uses periodicity criterion of Przytycki and
the criterion in terms of Khovanov polynomial
output: output:
kh, gss, lsss, leess: .tex file kh, gss, lsss, leess: .tex file
sq2: text in Sage format sq2: text in Sage format
s: text s, khp, jones, periodicity: text
options: options:
-r : compute reduced theory -r : compute reduced theory
-h : print this message -h : print this message
@ -125,6 +135,13 @@ options:
-f <field> : ground field (if applicable) -f <field> : ground field (if applicable)
(Z2 is the default) (Z2 is the default)
-v : verbose: report progress as the computation proceeds -v : verbose: report progress as the computation proceeds
-p : period when verifying periodicity, can be equal to
5,7,11,13,17 or 19
-t : type of periodicity test:
- Przytycki - Przytycki's periodicity test
- Kh - periodicity criterion in terms of Khovanov homology
- all - uses both criteria and tests for all prime
periods between 5 and 19
<field> can be one of: <field> can be one of:
Z2, Z3, Q Z2, Z3, Q
<link> can be one of: <link> can be one of:

95
kk.cpp
View File

@ -9,47 +9,58 @@ const char *program_name;
void void
usage () usage ()
{ {
printf ("usage: %s <invariant> [options...] <link>\n", program_name); std::cout << "usage: %s <invariant> [options...] <link>\n" << program_name << "\n"
printf (" compute <invariant> for knot or link <link>\n"); << " compute <invariant> for knot or link <link>\n"
printf ("<invariant> can be one of:\n"); << "<invariant> can be one of:\n"
printf (" kh: Khovanov homology\n"); << " kh: Khovanov homology\n"
printf (" gss: Szabo's geometric spectral sequence\n"); << " gss: Szabo's geometric spectral sequence\n"
printf (" lsss: Batson-Seed link splitting spectral sequence\n"); << " lsss: Batson-Seed link splitting spectral sequence\n"
printf (" component weights are 0, 1, ..., m\n"); << " component weights are 0, 1, ..., m\n"
printf (" sq2: Lipshitz-Sarkar Steenrod square on Z/2 Kh\n"); << " sq2: Lipshitz-Sarkar Steenrod square on Z/2 Kh\n"
printf (" output suitable for Sage\n"); << " output suitable for Sage\n"
printf (" leess: spectral sequence coming from Bar-Natan analogue of Lee's\n"); << " leess: spectral sequence coming from Bar-Natan analogue of Lee's\n"
printf (" deformation of Khovanov's complex (whew!)\n"); << " deformation of Khovanov's complex (whew!)\n"
printf (" s: Rasmussen's s-invariant coming from lee\n"); << " s: Rasmussen's s-invariant coming from lee\n"
printf ("output:\n"); << " khp: computes Khovanov polynomial of a link\n"
printf (" kh, gss, lsss, leess: .tex file\n"); << " jones: computes Jones polynomial of a link\n"
printf (" sq2: text in Sage format\n"); << " periodicity: uses periodicity criterion of Przytycki and\n"
printf (" s: text\n"); << " the criterion in terms of Khovanov polynomial\n"
printf ("options:\n"); << "output:\n"
printf (" -r : compute reduced theory\n"); << " kh, gss, lsss, leess: .tex file\n"
printf (" -h : print this message\n"); << " sq2: text in Sage format\n"
printf (" -o <file> : write output to <file>\n"); << " s, khp, jones, periodicity: text\n"
printf (" (stdout is the default)\n"); << "options:\n"
printf (" -f <field> : ground field (if applicable)\n"); << " -r : compute reduced theory\n"
printf (" (Z2 is the default)\n"); << " -h : print this message\n"
printf (" -v : verbose: report progress as the computation proceeds\n"); << " -o <file> : write output to <file>\n"
printf ("<field> can be one of:\n"); << " (stdout is the default)\n"
printf (" Z2, Z3, Q\n"); << " -f <field> : ground field (if applicable)\n"
printf ("<link> can be one of:\n"); << " (Z2 is the default)\n"
printf (" - the unknot, e.g. U or unknot\n"); << " -v : verbose: report progress as the computation proceeds\n"
printf (" - a torus knot, e.g. T(2,3)\n"); << " -p : period when verifying periodicity, can be equal to\n"
printf (" - a Rolfsen table knot, e.g. 10_124\n"); << " 5,7,11,13,17 or 19\n"
printf (" - a Hoste-Thistlethwaite-Weeks knot, e.g. 11a12 or 12n214\n"); << " -t : type of periodicity test:\n"
printf (" - a Morwen Thistlethwaite link, e.g. L8n9 or L13n8862\n"); << " - Przytycki - Przytycki's periodicity test\n"
printf (" - a planar diagram, e.g.\n"); << " - Kh - periodicity criterion in terms of Khovanov homology\n"
printf (" PD[X[1, 4, 2, 5], X[3, 6, 4, 1], X[5, 2, 6, 3]] or\n"); << " - all - uses both criteria and tests for all prime\n"
printf (" PD[[1, 4, 2, 5], [3, 6, 4, 1], [5, 2, 6, 3]]\n"); << " periods between 5 and 19\n"
printf (" - a Dowker-Thistlethwaite code, e.g.\n"); << "<field> can be one of:\n"
printf (" DTCode[6,8,2,4],\n"); << " Z2, Z3, Q\n"
printf (" DT[dadbcda] or\n"); << "<link> can be one of:\n"
printf (" DT[{6, -8}, {-10, 12, -14, 2, -4}]\n"); << " - the unknot, e.g. U or unknot\n"
printf (" - a braid, e.g. BR[2, {-1, -1, -1}]\n"); << " - a torus knot, e.g. T(2,3)\n"
printf (" - disjoint union (juxtaposition), e.g. T(2,3) U\n"); << " - a Rolfsen table knot, e.g. 10_124\n"
<< " - a Hoste-Thistlethwaite-Weeks knot, e.g. 11a12 or 12n214\n"
<< " - a Morwen Thistlethwaite link, e.g. L8n9 or L13n8862\n"
<< " - a planar diagram, e.g.\n"
<< " PD[X[1, 4, 2, 5], X[3, 6, 4, 1], X[5, 2, 6, 3]] or\n"
<< " PD[[1, 4, 2, 5], [3, 6, 4, 1], [5, 2, 6, 3]]\n"
<< " - a Dowker-Thistlethwaite code, e.g.\n"
<< " DTCode[6,8,2,4],\n"
<< " DT[dadbcda] or\n"
<< " DT[{6, -8}, {-10, 12, -14, 2, -4}]\n"
<< " - a braid, e.g. BR[2, {-1, -1, -1}]\n"
<< " - disjoint union (juxtaposition), e.g. T(2,3) U\n";
} }
FILE *outfp = stdout; FILE *outfp = stdout;
@ -336,7 +347,7 @@ void check_periodicity(std::string out_file) {
} }
auto result = std::find(primes_list.begin(), primes_list.end(), period); auto result = std::find(primes_list.begin(), primes_list.end(), period);
if(result == primes_list.end()) { if(result == primes_list.end()) {
std::cout << "For now you can only check periodicity for primes up to 31..." << "\n"; std::cout << "For now you can only check periodicity for primes up to 19..." << "\n";
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
std::ofstream out(out_file, std::ios_base::app); std::ofstream out(out_file, std::ios_base::app);