<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://drorbn.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sankaran</id>
	<title>Drorbn - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://drorbn.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sankaran"/>
	<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=Special:Contributions/Sankaran"/>
	<updated>2026-04-23T07:56:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://drorbn.net/index.php?title=User:Sankaran/06-1350-HW4&amp;diff=3264</id>
		<title>User:Sankaran/06-1350-HW4</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=User:Sankaran/06-1350-HW4&amp;diff=3264"/>
		<updated>2006-12-12T22:04:45Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
===The Generators===&lt;br /&gt;
&lt;br /&gt;
Our generators are &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B^{\pm}&amp;lt;/math&amp;gt;:&lt;br /&gt;
{| align=center cellpadding=10 style=&amp;quot;border: solid orange 1px&amp;quot;&lt;br /&gt;
|- align=center valign=middle&lt;br /&gt;
|align=left|Picture&lt;br /&gt;
|[[Image:06-1350-T.svg|100px]]&lt;br /&gt;
|[[Image:06-1350-R.svg|100px]]&lt;br /&gt;
|[[Image:06-1350-Phi.svg|100px]]&lt;br /&gt;
|[[Image:06-1350-BPlus.svg|100px]]&lt;br /&gt;
|[[Image:06-1350-BMinus.svg|100px]]&lt;br /&gt;
|- align=center valign=middle&lt;br /&gt;
|align=left|Generator&lt;br /&gt;
|&amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;B^+&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;B^-&amp;lt;/math&amp;gt;&lt;br /&gt;
|- align=center valign=middle&lt;br /&gt;
|align=left|Perturbation&lt;br /&gt;
|&amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\varphi&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;b^+&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;b^-&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Thanks [[User:Zak/06-1350-HW4|Zavosh]] for the nice picture)&lt;br /&gt;
===The Relations===&lt;br /&gt;
&lt;br /&gt;
====The Reidemeister Move R2====&lt;br /&gt;
(Courtesy of Andy)&lt;br /&gt;
&lt;br /&gt;
[[Image:06-1350-R2-weird.png|center]]&lt;br /&gt;
In formulas, this is&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;1 = (123)^\star B^- (132)^\star B^+.&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
Linearized and written in functional form, this becomes&lt;br /&gt;
{| align=center&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_2(x_1,x_2,x_3) =  - b^-(x_1,x_2,x_3) - b^+(x_1,x_3,x_2).&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====The Reidemeister Move R3====&lt;br /&gt;
(Picture and first example courtesy of Dror)&lt;br /&gt;
&lt;br /&gt;
There are eight of these (each crossing in the picture can be + or - ).&lt;br /&gt;
For example, if all the crossings are positive, the picture (with three sides of the shielding removed) is&lt;br /&gt;
[[Image:06-1350-R4.svg|400px|center]]&lt;br /&gt;
In formulas, this is&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;(1230)^\star B^+ (1213)^\star B^+ (1023)^\star B^+ = (1123)^\star B^+ (1203)^\star B^+ (1231)^\star B^+&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
Linearized and written in functional form, this becomes&lt;br /&gt;
{| align=center&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_3[+++](x_1, x_2, x_3, x_4) = &amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;b^+(x_1,x_2,x_3) + b^+(x_1+x_3,x_2,x_4) + b^+(x_1,x_3,x_4)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;math&amp;gt;- b^+(x_1+x_2,x_3,x_4) - b^+(x_1,x_2,x_4) - b^+(x_1+x_4,x_2,x_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here are the rest of them, linearized and in functional form - I think this is too many, but it&#039;s probably easier to write these out than to figure the relationships between them. Also, some better notation is needed. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_3[++-](x_1,x_2,x_3,x_4) = b^+(x_1,x_2,x_3) + b^+(x_1+x_3,x_2,x_4) + b^-(x_1,x_3,x_4)&lt;br /&gt;
 - b^-(x_1+x_2,x_3,x_4) - b^+(x_1,x_2,x_4) - b^+(x_1+x_4,x_2,x_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_3[+-+](x_1,x_2,x_3,x_4) = b^+(x_1,x_2,x_3) + b^-(x_1+x_3,x_2,x_4) + b^+(x_1,x_3,x_4)- b^+(x_1+x_2,x_3,x_4) - b^-(x_1,x_2,x_4) - b^+(x_1+x_4,x_2,x_3). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_3[-++](x_1,x_2,x_3,x_4) = b^-(x_1,x_2,x_3) + b^+(x_1+x_3,x_2,x_4) + b^+(x_1,x_3,x_4)- b^+(x_1+x_2,x_3,x_4) - b^+(x_1,x_2,x_4) - b^-(x_1+x_4,x_2,x_3). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_3[+--](x_1,x_2,x_3,x_4) = b^+(x_1,x_2,x_3) + b^-(x_1+x_3,x_2,x_4) + b^-(x_1,x_3,x_4)- b^-(x_1+x_2,x_3,x_4) - b^-(x_1,x_2,x_4) - b^+(x_1+x_4,x_2,x_3). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_3[-+-](x_1,x_2,x_3,x_4) = b^-(x_1,x_2,x_3) + b^+(x_1+x_3,x_2,x_4) + b^-(x_1,x_3,x_4)- b^-(x_1+x_2,x_3,x_4) - b^+(x_1,x_2,x_4) - b^-(x_1+x_4,x_2,x_3). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_3[--+](x_1,x_2,x_3,x_4) = b^-(x_1,x_2,x_3) + b^-(x_1+x_3,x_2,x_4) + b^+(x_1,x_3,x_4)- b^+(x_1+x_2,x_3,x_4) - b^-(x_1,x_2,x_4) - b^-(x_1+x_4,x_2,x_3). &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_3[---](x_1,x_2,x_3,x_4) = b^-(x_1,x_2,x_3) + b^-(x_1+x_3,x_2,x_4) + b^-(x_1,x_3,x_4)- b^-(x_1+x_2,x_3,x_4) - b^-(x_1,x_2,x_4) - b^-(x_1+x_4,x_2,x_3). &amp;lt;/math&amp;gt;&lt;br /&gt;
====The Reidemeister Move R4====&lt;br /&gt;
(Courtesy of Andy)&lt;br /&gt;
&lt;br /&gt;
There are two (ostensibly) different versions: &lt;br /&gt;
[[Image:06-1350-R4a.png|center]]&lt;br /&gt;
In formulas, this is&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;(1230)^\star B^+ (1213)^\star B^+ (1023)^\star \Phi = (1123)^\star \Phi (1233)^\star B^+&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
Linearized and written in functional form, this becomes&lt;br /&gt;
{| align=center&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_{4a}(x_1,x_2,x_3,x_4) = b^+(x_1,x_2,x_3) + b^+(x_1+x_3,x_2,x_4) + \phi(x_1,x_3,x_4) - \phi(x_1+x_2,x_3,x_4) - b^+(x_1,x_2,x_3+x_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Second: &lt;br /&gt;
[[Image:06-1350-R4b.png|center]]&lt;br /&gt;
In formulas, this is&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;(1123)^\star B^+ (1203)^\star B^+ (1231)^\star \Phi = (1230)^\star \Phi (1223)^\star B^+&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
Linearized and written in functional form, this becomes&lt;br /&gt;
{| align=center&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_{4b}(x_1,x_2,x_3,x_4) = b^+(x_1+x_2,x_3,x_4) + b^+(x_1,x_2,x_4) + \phi(x_1+x_4,x_2,x_3) - \phi(x_1,x_2,x_3) - b^+(x_1,x_2+x_3,x_4).&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Syzygies===&lt;br /&gt;
&lt;br /&gt;
====The &amp;quot;B around B&amp;quot; Syzygy====&lt;br /&gt;
&lt;br /&gt;
The picture, with all shielding removed, is&lt;br /&gt;
{| align=center&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:06-1350-BAroundB.svg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|align=right|(Drawn with [http://www.inkscape.org/ Inkscape])&amp;lt;br&amp;gt;(note that lower quality pictures are also acceptable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The functional form of this syzygy is&lt;br /&gt;
&lt;br /&gt;
{| align=center&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;BB(x_1,x_2,x_3,x_4,x_5) = &amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_3(x_1, x_2, x_3, x_5) + \rho_3(x_1 + x_5, x_2, x_3, x_4) - \rho_3(x_1 + x_2, x_3, x_4, x_5)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;math&amp;gt;- \rho_3(x_1, x_2, x_4, x_5) - \rho_3(x_1 + x_4, x_2, x_3, x_5) - \rho_3(x_1, x_2, x_3, x_4)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;math&amp;gt;+ \rho_3(x_1, x_3, x_4, x_5) + \rho_3(x_1 + x_3, x_2, x_4, x_5).&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===A Mathematica Verification===&lt;br /&gt;
&lt;br /&gt;
The following simulated Mathematica session proves that for our single relation and single syzygy, &amp;lt;math&amp;gt;d^2=0&amp;lt;/math&amp;gt;. Copy paste it into a live Mathematica session to see that it&#039;s right!&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;d1 = {&lt;br /&gt;
  rho3[x1_, x2_, x3_, x4_] :&amp;gt; bp[x1, x2, x3] + bp[x1 + x3, x2, x4] +&lt;br /&gt;
  bp[x1, x3, x4] - bp[x1 + x2, x3, x4] - bp[x1, x2, x4] -&lt;br /&gt;
  bp[x1 + x4, x2, x3]&lt;br /&gt;
};&lt;br /&gt;
d2 = {&lt;br /&gt;
  BAroundB[x1_, x2_, x3_, x4_, x5_] :&amp;gt; rho3[x1, x2, x3, x5] + &lt;br /&gt;
  rho3[x1 + x5, x2, x3, x4] - rho3[x1 + x2, x3, x4, x5] -&lt;br /&gt;
  rho3[x1, x2, x4, x5] - rho3[x1 + x4, x2, x3, x5] -&lt;br /&gt;
  rho3[x1, x2, x3, x4] + rho3[x1, x3, x4, x5] +&lt;br /&gt;
  rho3[x1 + x3, x2, x4, x5]&lt;br /&gt;
};&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in=&amp;lt;nowiki&amp;gt;BAroundB[x1, x2, x3, x4, x5] /. d2&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;- rho3[x1, x2, x3, x4] + rho3[x1, x2, x3, x5] - rho3[x1, x2, x4, x5]&lt;br /&gt;
+ rho3[x1, x3, x4, x5] - rho3[x1 + x2, x3, x4, x5]&lt;br /&gt;
+ rho3[x1 + x3, x2, x4, x5] - rho3[x1 + x4, x2, x3, x5]&lt;br /&gt;
+ rho3[x1 + x5, x2, x3, x4]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=4|in=&amp;lt;nowiki&amp;gt;BAroundB[x1, x2, x3, x4, x5] /. d2 /. d1&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;0&amp;lt;/nowiki&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=User:Sankaran/06-1350-HW4&amp;diff=3245</id>
		<title>User:Sankaran/06-1350-HW4</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=User:Sankaran/06-1350-HW4&amp;diff=3245"/>
		<updated>2006-12-12T16:05:34Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Warning - nothing new yet...&lt;br /&gt;
&lt;br /&gt;
===The Generators===&lt;br /&gt;
&lt;br /&gt;
Our generators are &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B^{\pm}&amp;lt;/math&amp;gt;:&lt;br /&gt;
{| align=center cellpadding=10 style=&amp;quot;border: solid orange 1px&amp;quot;&lt;br /&gt;
|- align=center valign=middle&lt;br /&gt;
|align=left|Picture&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[[Image:06-1350-BPlus.svg|100px]]&lt;br /&gt;
|&lt;br /&gt;
|- align=center valign=middle&lt;br /&gt;
|align=left|Generator&lt;br /&gt;
|&amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;B^+&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;B^-&amp;lt;/math&amp;gt;&lt;br /&gt;
|- align=center valign=middle&lt;br /&gt;
|align=left|Perturbation&lt;br /&gt;
|&amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\varphi&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;b^+&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;b^-&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===The Relations===&lt;br /&gt;
&lt;br /&gt;
====The Reidemeister Move R3====&lt;br /&gt;
The picture (with three sides of the shielding removed) is&lt;br /&gt;
[[Image:06-1350-R4.svg|400px|center]]&lt;br /&gt;
In formulas, this is&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;(1230)^\star B^+ (1213)^\star B^+ (1023)^\star B^+ = (1123)^\star B^+ (1203)^\star B^+ (1231)^\star B^+&amp;lt;/math&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
Linearized and written in functional form, this becomes&lt;br /&gt;
{| align=center&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_3(x_1, x_2, x_3, x_4) = &amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;b^+(x_1,x_2,x_3) + b^+(x_1+x_3,x_2,x_4) + b^+(x_1,x_3,x_4)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;math&amp;gt;- b^+(x_1+x_2,x_3,x_4) - b^+(x_1,x_2,x_4) - b^+(x_1+x_4,x_2,x_3).&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===The Syzygies===&lt;br /&gt;
&lt;br /&gt;
====The &amp;quot;B around B&amp;quot; Syzygy====&lt;br /&gt;
&lt;br /&gt;
The picture, with all shielding removed, is&lt;br /&gt;
{| align=center&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:06-1350-BAroundB.svg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|align=right|(Drawn with [http://www.inkscape.org/ Inkscape])&amp;lt;br&amp;gt;(note that lower quality pictures are also acceptable)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The functional form of this syzygy is&lt;br /&gt;
&lt;br /&gt;
{| align=center&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;BB(x_1,x_2,x_3,x_4,x_5) = &amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;\rho_3(x_1, x_2, x_3, x_5) + \rho_3(x_1 + x_5, x_2, x_3, x_4) - \rho_3(x_1 + x_2, x_3, x_4, x_5)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;math&amp;gt;- \rho_3(x_1, x_2, x_4, x_5) - \rho_3(x_1 + x_4, x_2, x_3, x_5) - \rho_3(x_1, x_2, x_3, x_4)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&amp;lt;math&amp;gt;+ \rho_3(x_1, x_3, x_4, x_5) + \rho_3(x_1 + x_3, x_2, x_4, x_5).&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===A Mathematica Verification===&lt;br /&gt;
&lt;br /&gt;
The following simulated Mathematica session proves that for our single relation and single syzygy, &amp;lt;math&amp;gt;d^2=0&amp;lt;/math&amp;gt;. Copy paste it into a live Mathematica session to see that it&#039;s right!&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;d1 = {&lt;br /&gt;
  rho3[x1_, x2_, x3_, x4_] :&amp;gt; bp[x1, x2, x3] + bp[x1 + x3, x2, x4] +&lt;br /&gt;
  bp[x1, x3, x4] - bp[x1 + x2, x3, x4] - bp[x1, x2, x4] -&lt;br /&gt;
  bp[x1 + x4, x2, x3]&lt;br /&gt;
};&lt;br /&gt;
d2 = {&lt;br /&gt;
  BAroundB[x1_, x2_, x3_, x4_, x5_] :&amp;gt; rho3[x1, x2, x3, x5] + &lt;br /&gt;
  rho3[x1 + x5, x2, x3, x4] - rho3[x1 + x2, x3, x4, x5] -&lt;br /&gt;
  rho3[x1, x2, x4, x5] - rho3[x1 + x4, x2, x3, x5] -&lt;br /&gt;
  rho3[x1, x2, x3, x4] + rho3[x1, x3, x4, x5] +&lt;br /&gt;
  rho3[x1 + x3, x2, x4, x5]&lt;br /&gt;
};&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in=&amp;lt;nowiki&amp;gt;BAroundB[x1, x2, x3, x4, x5] /. d2&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;- rho3[x1, x2, x3, x4] + rho3[x1, x2, x3, x5] - rho3[x1, x2, x4, x5]&lt;br /&gt;
+ rho3[x1, x3, x4, x5] - rho3[x1 + x2, x3, x4, x5]&lt;br /&gt;
+ rho3[x1 + x3, x2, x4, x5] - rho3[x1 + x4, x2, x3, x5]&lt;br /&gt;
+ rho3[x1 + x5, x2, x3, x4]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=4|in=&amp;lt;nowiki&amp;gt;BAroundB[x1, x2, x3, x4, x5] /. d2 /. d1&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;0&amp;lt;/nowiki&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=06-1350/Class_Photo&amp;diff=2395</id>
		<title>06-1350/Class Photo</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=06-1350/Class_Photo&amp;diff=2395"/>
		<updated>2006-10-17T22:33:54Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Our class on September 28, 2006:&lt;br /&gt;
&lt;br /&gt;
[[Image:06-1350-ClassPhoto.jpg|thumb|center|500px|Class Photo: click to enlarge]]&lt;br /&gt;
{{06-1350/Navigation}}&lt;br /&gt;
Please identify yourself in this photo! There are two ways to do that:&lt;br /&gt;
&lt;br /&gt;
* [[Special:Userlogin|Log in]] to this Wiki and edit this page. Put your name, userid, email address and location in the picture in the alphabetical list below.&lt;br /&gt;
* Send [[User:Drorbn|Dror]] an email message with this information.&lt;br /&gt;
&lt;br /&gt;
The first option is more fun but less private.&lt;br /&gt;
&lt;br /&gt;
===Who We Are===&lt;br /&gt;
&lt;br /&gt;
{| align=center border=1&lt;br /&gt;
|-&lt;br /&gt;
!First name&lt;br /&gt;
!Last name&lt;br /&gt;
!UserID&lt;br /&gt;
!Email&lt;br /&gt;
!In the photo&lt;br /&gt;
!Comments&lt;br /&gt;
{{Photo Entry|last=Bar-Natan|first=Dror|userid=Drorbn|email=drorbn@ math.toronto.edu|location=facing everybody, as the photographer|comments=Take this entry as a model and leave it first. Otherwise alphabetize by last name. Feel free to leave some fields blank}}&lt;br /&gt;
{{Photo Entry|last=Bailey|first=Michael|userid=Michael|email=bailey@ math.toronto.edu|location=the guy looking all mysterious like it&#039;s a perfume commercial or something|comments=}}&lt;br /&gt;
{{Photo Entry|last=Dancso|first=Zsuzsi|userid=Zsuzsi|email=zsuzsi@ math.toronto.edu|location=first row, second from the right|comments=}}&lt;br /&gt;
{{Photo Entry|last=Hammerlindl|first=Andy|userid=Andy|email=hammera@ telusplanet.net|location=third row, third from right|comments=}}&lt;br /&gt;
{{Photo Entry|last=Ivrii|first=Oleg|userid=Oivrii|email=oleg@ math.toronto.edu|location=last row, middle of the sitting |comments=}}&lt;br /&gt;
{{Photo Entry|last=de Jong|first=Michael|userid=michael|email=michael.dejong@ utoronto.ca|location=standing in the back, on the left|comments=}}&lt;br /&gt;
{{Photo Entry|last=Archibald|first=Jana|userid=Jana|email=jfa@ math.toronto.edu|location=Third row, First on right|comments=}}&lt;br /&gt;
{{Photo Entry|last=Shaw|first=Kristin|userid=Shawkm|email=shawkm@ math.toronto.edu|location=second row, second from the left|comments=}}&lt;br /&gt;
{{Photo Entry|last=Antolin Camarena|first=Omar|userid=Oantolin|email=oantolin@ math.toronto.edu|location=second row, furthest to the left (mostly obscured by people in front row)|comments=}}&lt;br /&gt;
{{Photo Entry|last=Roukema|first=Fionntan|userid=Roukema|email=froukema@ math.toronto.edu|location=First row, furthest to the right. Head roughly where the diagonals of the picture meet. Don&#039;t seem to be wearing socks of any great worth|comments=}}&lt;br /&gt;
{{Photo Entry|last=Sankaran|first=Siddarth|userid=Sankaran|email=siddarth.sankaran@ utoronto. ca |location= Front row centre.|comments=}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1923</id>
		<title>VasCalc - Progress Log</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1923"/>
		<updated>2006-09-16T01:25:25Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the [[VasCalc - A Vassiliev Invariants Calculator|VasCalc Project]] Progress Log.&lt;br /&gt;
====Friday September 15 2006====&lt;br /&gt;
Another bug in the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; has been found! It appears that the program will fail if all the crossings are not in the middle of the diagram (as in the closure of a braid). This should hopefully be fixed soon... &lt;br /&gt;
====Saturday September 9 2006====&lt;br /&gt;
The &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; should now be able to handle any knot thrown at it - there&#039;s still an unresolved bug with links, which will hopefully be fixed shortly.&lt;br /&gt;
====Tuesday September 5 2006====&lt;br /&gt;
A preliminary &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; function has been added to the repository. There are still some details to be ironed out, most notably extending the multiplication to links. See the [[VasCalc Documentation - ChordsMod4T|documentation]] for an example. &lt;br /&gt;
====Monday August 14 2006====&lt;br /&gt;
The framing independence relations have been added to the project (by the &amp;lt;code&amp;gt;ChordsMod4TFI&amp;lt;/code&amp;gt; class, and in Mathematica using &amp;lt;code&amp;gt;CDrSpace[l,m,n]&amp;lt;/code&amp;gt;). Using this, we&#039;ve also been able to verify that the correction term &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; matches a previous computation. &lt;br /&gt;
====Thursday July 27 2006====&lt;br /&gt;
We&#039;re now able to verify solutions to the pentagon and hexagon equations, in the process changing the interface around a bit. As usual, the [[VasCalc Documentation - ChordsMod4T|documentation]] contains details.&lt;br /&gt;
====Monday July 17 2006====&lt;br /&gt;
The ChordsMod4T interface has been cleaned up a little, and save/load functionality has been added - see the [[VasCalc Documentation - ChordsMod4T|documentation]]. Progress is underway on implementing some operations on chord diagram spaces.&lt;br /&gt;
====Sunday July 9 2006====&lt;br /&gt;
An updated package for the ChordsMod4T program has been posted: [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz]. Now you can work directly with linear combinations of CDs, and reduce them. See the [[VasCalc Documentation - ChordsMod4T|documentation]] for more details. &lt;br /&gt;
====Friday July 7 2006====&lt;br /&gt;
So the little bug in ChordsMod4T appears to be resolved. The [[VasCalc - Results| results]] pages no longer directly disprove the consistency of mathematics. Also the program is a fair bit faster than the previous incarnation, but coefficient arithmetic is still by far the biggest resource thief.&lt;br /&gt;
&lt;br /&gt;
====Friday June 23 2006====&lt;br /&gt;
Success! Our program is now complete - we can generate the relations, and compute the quotient . What remains is the interface to Mathematica, which should be easy, and optimizing the program, which may be a little harder. A little example will be up soon. &lt;br /&gt;
&lt;br /&gt;
====Tuesday June 20 2006====&lt;br /&gt;
Now we are able to generate all chord diagrams on a given number of lines and circles, as well as all the diagrams with a T added! Almost done is the piece that puts the two together - the ChordsMod4T class, which mods out the first space with the relations generated by the second. There are still many things to be done with this part of the program before we&#039;re truly finished: I&#039;ve listed these on the [[VasCalc - To Do List]] page. Fun fact: there are 902 chord diagrams on one circle with 6 chords, 9749 diagrams with 7 chords, and 127072 diagrams with 8 chords. Evidently, we&#039;ll have to make some improvements to the program - generating one circle with 9 chords runs out of memory.&lt;br /&gt;
====Saturday June 17 2006====&lt;br /&gt;
The [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram class] is now up and running. As explained in the [[VasCalc Documentation - ChordDiagram| documentation]], this class is used to store information about individual chord diagrams. Because of the way we&#039;ve set up labelling the diagrams, the task of generating all diagrams becomes very easy - this part of the program is almost done as well. &lt;br /&gt;
====Tuesday May 30 2006====&lt;br /&gt;
A new file [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram.java] was committed to the repository. This is a class that holds information describing one chord diagram and contains methods that will help in constructing chord diagrams systematically. It is not yet complete, though not far from it. &lt;br /&gt;
====Monday May 29 2006====&lt;br /&gt;
I&#039;ve updated the vectorSpace package, and added a Mathematica interface, as well an almost complete [[VasCalc  Documentation - vectorSpace|document]] on the wiki. Can someone check that the instructions for installation work?&lt;br /&gt;
Also, does the simulated Mathematica session work on this wiki?&lt;br /&gt;
====Wednesday May 24 2006====&lt;br /&gt;
A new package [http://katlas.math.toronto.edu/svn/VasCalc/trunk/vectorSpace vectorSpace] has been committed to the repository, to handle quotients of finite-dimensional vector spaces. See the [[VasCalc - Documentation|documentation]] for usage details.&lt;br /&gt;
====Saturday May 20 2006====&lt;br /&gt;
Our first task is to write a program to construct and manipulate the (formal) quotient vector space A(m,n,l), consisting of diagrams with m chords between n lines and l circles, modulo the four-T relations. Here&#039;s a rough sketch of the structure of this program:&lt;br /&gt;
&lt;br /&gt;
[[Image:Dmod4T.jpg|thumb|120px|left]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Java things are in orange, Mathematica things are in blue. Red arrows are helper functions that need to be written, and black arrows denote &amp;quot;natural class heirarchy&amp;quot;. &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monday May 15 2006====&lt;br /&gt;
Another slightly different HelloWorld test has been added to the [http://katlas.math.toronto.edu/svn/VasCalc/trunk/  SVN repository]. This time, one can use the default Java runtime bundled with Mathematica/Windows (so the user does not need to know anything about where Java lives on their system) by telling the Java compiler to produce code for Java 1.4. This is accomplished by issuing the command:&lt;br /&gt;
:&amp;lt;code&amp;gt;javac -source 1.4 -target 1.4 file_to_be_compiled.java &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I suppose this prevents us from using the new features of Java 1.5, but I don&#039;t know what they are.&lt;br /&gt;
&lt;br /&gt;
As for the test program, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/javatest.m javatest.m] and [http://katlas.math.toronto.edu/svn/VasCalc/trunk/test1.class test1.class], and issue the following commands in Mathematica (replacing the &#039;/path_to_files&#039; with the location you downloaded the files to, and don&#039;t forget the quotes in the second line):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; &amp;lt;&amp;lt; /path_to_files/javatest.m &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; HelloWorld[VasCalcPath -&amp;gt; &amp;quot;/path_to_files&amp;quot;] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and read your mystery message!&lt;br /&gt;
&lt;br /&gt;
==== Sunday May 14 2006====&lt;br /&gt;
J/Link passed the Hello World test. The java class and Mathematica&lt;br /&gt;
notebook were commited to the repository trunk. Note the Mathematica file&lt;br /&gt;
must be edited in order to specify the path to java and the class.&lt;br /&gt;
In order to get it to work I had to tweak a few things:&lt;br /&gt;
* The JRE bin directory had to be added to the PATH. The JDK path is not enough because J/Link looks for files like jawt.dll and awt.dll that don&#039;t come with JDK.&lt;br /&gt;
* HelloWorld.class had to be in one of the dirs in CLASSPATH, because J/Link loads classes only through their full class name.&lt;br /&gt;
* In Mathematica, when running InstallJava[], it was necessary to specify the path name for a newer version of java.exe. By default it runs the Windows java, which didn&#039;t run what was compiled with a new JDK. &lt;br /&gt;
&lt;br /&gt;
Ideally, one would like to write a Mathematica notebook without&lt;br /&gt;
any hardcoded paths that others can use with no changes. Is this&lt;br /&gt;
possible?&lt;br /&gt;
&lt;br /&gt;
==== Thursday May 11 20006====&lt;br /&gt;
* First day meeting&#039;s blackboard: [[Image:060511-1.jpg|thumb|160px|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1834</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1834"/>
		<updated>2006-09-13T00:53:02Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
In order to use the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt;, you must also install the &#039;&#039;KnotTheory`&#039;&#039; package, which is available from [http://katlas.math.toronto.edu/wiki/The_Mathematica_Package_KnotTheory%60 The  Knot Atlas].&lt;br /&gt;
 &lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
If you wish to compute the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; (and really, why else would you be here?), start by loading in the &#039;&#039;KnotTheory`&#039;&#039; package in a Mathematica session:&lt;br /&gt;
{{InOut|n=0|in=&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;KnotTheory`&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;Loading KnotTheory` version of May 31, 2006, 14:15:20.091.&lt;br /&gt;
Read more at http://katlas.math.toronto.edu/wiki/KnotTheory.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Also, load in the VasCalc definitions:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====The Unknot====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for any knot, including the unknot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[Id[3],0,&lt;br /&gt;
1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440&lt;br /&gt;
 ]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[{2,1},0, &lt;br /&gt;
 1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384&lt;br /&gt;
 ];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[2,1, ConnectStrand[3,2, ReverseStrand[2,Phi] ] ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[{1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty^{-1}&amp;lt;/math&amp;gt; to a circle; we then reduce and display the result:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ConnectStrand[1, 1, Zinf^(-1)] // ReduceFI // CD&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 &lt;br /&gt;
  + CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 + &lt;br /&gt;
  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
====The Kontsevich integral for unframed knots====&lt;br /&gt;
&lt;br /&gt;
We can find the Kontsevich integral of any knot &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, through the command &amp;lt;code&amp;gt;KontsevichIntegral[R, Phi, K]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects as above, and &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; is a [http://katlas.math.toronto.edu/wiki/MorseLink_Presentations Morse link] presentation of a knot (or alternatively any presentation that &#039;&#039;KnotTheory`&#039;&#039; knows how to convert to a Morse link presentation). The output, for a knot, is an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object on one circle, whose degree is determined by  the degrees of &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
In these examples, we shall continue to use the pair &amp;lt;math&amp;gt;(R, \Phi) &amp;lt;/math&amp;gt; defined in the previous section.&lt;br /&gt;
&lt;br /&gt;
Here is the Kontsevich integral, up to degree four, of the trefoil:&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R,Phi,Knot[3,1]] // ReduceFI // CD &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 + (23*CD[Circle[1, 2, 1, 2]])/24 - &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 2, 3]]/2 + (119*CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]])/360 - &lt;br /&gt;
 (119*CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]])/720 + (247*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Below is another embedding of the trefoil, and the Kontsevich integral computed on this diagram is the same as that of the first:&lt;br /&gt;
[[Image:Trefoil.jpg|left|thumb|80px|The trefoil]]&lt;br /&gt;
{{In|n=14|in=&amp;lt;nowiki&amp;gt;trefoil = MorseLink[Cup[1, 2], Cup[2, 3], X[1, Under, Down, Down], &lt;br /&gt;
    X[3, Under, Up, Up], X[2, Over, Down, Up], Cap[4, 3], Cap[2, 1]];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=16|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R,Phi,trefoil] // ReduceFI // CD&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 + (23*CD[Circle[1, 2, 1, 2]])/24 - &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 2, 3]]/2 + (119*CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]])/360 - &lt;br /&gt;
 (119*CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]])/720 + (247*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear:both&amp;quot; /&amp;gt;&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=File:Trefoil.jpg&amp;diff=1833</id>
		<title>File:Trefoil.jpg</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=File:Trefoil.jpg&amp;diff=1833"/>
		<updated>2006-09-13T00:37:59Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: presentation of trefoil knot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;presentation of trefoil knot&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1832</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1832"/>
		<updated>2006-09-13T00:37:31Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
In order to use the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt;, you must also install the &#039;&#039;KnotTheory`&#039;&#039; package, which is available from [http://katlas.math.toronto.edu/wiki/The_Mathematica_Package_KnotTheory%60 The  Knot Atlas].&lt;br /&gt;
 &lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
If you wish to compute the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; (and really, why else would you be here?), start by loading in the &#039;&#039;KnotTheory`&#039;&#039; package in a Mathematica session:&lt;br /&gt;
{{InOut|n=0|in=&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;KnotTheory`&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;Loading KnotTheory` version of May 31, 2006, 14:15:20.091.&lt;br /&gt;
Read more at http://katlas.math.toronto.edu/wiki/KnotTheory.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Also, load in the VasCalc definitions:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====The Unknot====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for any knot, including the unknot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[Id[3],0,&lt;br /&gt;
1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440&lt;br /&gt;
 ]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[{2,1},0, &lt;br /&gt;
 1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384&lt;br /&gt;
 ];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[2,1, ConnectStrand[3,2, ReverseStrand[2,Phi] ] ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[{1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[0,1,CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====The Kontsevich integral for unframed knots====&lt;br /&gt;
&lt;br /&gt;
We can find the Kontsevich integral of any knot &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, through the command &amp;lt;code&amp;gt;KontsevichIntegral[R, Phi, K]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects as above, and &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; is a [http://katlas.math.toronto.edu/wiki/MorseLink_Presentations Morse link] presentation of a knot (or alternatively any presentation that &#039;&#039;KnotTheory`&#039;&#039; knows how to convert to a Morse link presentation). The output, for a knot, is an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object on one circle, whose degree is determined by  the degrees of &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
In these examples, we shall continue to use the pair &amp;lt;math&amp;gt;(R, \Phi) &amp;lt;/math&amp;gt; defined in the previous section.&lt;br /&gt;
&lt;br /&gt;
Here is the Kontsevich integral, up to degree four, of the trefoil:&lt;br /&gt;
{{InOut|n=14|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R,Phi,Knot[3,1]] // ReduceFI // CD &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 + (23*CD[Circle[1, 2, 1, 2]])/24 - &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 2, 3]]/2 + (119*CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]])/360 - &lt;br /&gt;
 (119*CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]])/720 + (247*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Below is another embedding of the trefoil, and the Kontsevich integral computed on this diagram is the same as that of the first:&lt;br /&gt;
{{In|n=15|in=&amp;lt;nowiki&amp;gt;trefoil = MorseLink[Cup[1, 2], Cup[2, 3], X[1, Under, Down, Down], &lt;br /&gt;
    X[3, Under, Up, Up], X[2, Over, Down, Up], Cap[4, 3], Cap[2, 1]];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=16|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R,Phi,trefoil] // ReduceFI // CD&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 + (23*CD[Circle[1, 2, 1, 2]])/24 - &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 2, 3]]/2 + (119*CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]])/360 - &lt;br /&gt;
 (119*CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]])/720 + (247*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1820</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1820"/>
		<updated>2006-09-09T19:30:22Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
In order to use the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt;, you must also install the &#039;&#039;KnotTheory`&#039;&#039; package, which is available from [http://katlas.math.toronto.edu/wiki/The_Mathematica_Package_KnotTheory%60 The  Knot Atlas].&lt;br /&gt;
 &lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
If you wish to compute the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; (and really, why else would you be here?), start by loading in the &#039;&#039;KnotTheory`&#039;&#039; package in a Mathematica session:&lt;br /&gt;
{{InOut|n=0|in=&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;KnotTheory`&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;Loading KnotTheory` version of May 31, 2006, 14:15:20.091.&lt;br /&gt;
Read more at http://katlas.math.toronto.edu/wiki/KnotTheory.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Also, load in the VasCalc definitions:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====The Unknot====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for any knot, including the unknot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[Id[3],0,&lt;br /&gt;
1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440&lt;br /&gt;
 ]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[{2,1},0, &lt;br /&gt;
 1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384&lt;br /&gt;
 ];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[2,1, ConnectStrand[3,2, ReverseStrand[2,Phi] ] ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[{1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[0,1,CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====The Kontsevich integral for unframed knots====&lt;br /&gt;
&lt;br /&gt;
We can find the Kontsevich integral of any knot &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, through the command &amp;lt;code&amp;gt;KontsevichIntegral[R, Phi, K]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects as above, and &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; is a [http://katlas.math.toronto.edu/wiki/MorseLink_Presentations Morse link] presentation of a knot (or alternatively any presentation that &#039;&#039;KnotTheory`&#039;&#039; knows how to convert to a Morse link presentation). The output, for a knot, is an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object on one circle, whose degree is determined by  the degrees of &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
In these examples, we shall continue to use the pair &amp;lt;math&amp;gt;(R, \Phi) &amp;lt;/math&amp;gt; defined in the previous section.&lt;br /&gt;
&lt;br /&gt;
First, let&#039;s make sure we get the same answer as the previous section with this presentation of the unknot:&lt;br /&gt;
[[Image:Unknot.jpg|thumb|60px|left|The unknot]]&lt;br /&gt;
{{In|n=14|in=&amp;lt;nowiki&amp;gt;unknot = MorseLink[Cup[1, 2], Cup[3, 4], X[2, Over, Up, Down], &lt;br /&gt;
X[2,Under, Down, Up],Cap[2, 3], Cap[2, 1]];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
We&#039;ll compute the Kontsevich integral, reduce it, and print it out:&lt;br /&gt;
{{InOut|n=15|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R, Phi, unknot] // ReduceFI // CD &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 + (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1819</id>
		<title>VasCalc - Progress Log</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1819"/>
		<updated>2006-09-09T19:22:34Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the [[VasCalc - A Vassiliev Invariants Calculator|VasCalc Project]] Progress Log.&lt;br /&gt;
====Saturday September 9 2006====&lt;br /&gt;
The &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; should now be able to handle any knot thrown at it - there&#039;s still an unresolved bug with links, which will hopefully be fixed shortly.&lt;br /&gt;
====Tuesday September 5 2006====&lt;br /&gt;
A preliminary &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; function has been added to the repository. There are still some details to be ironed out, most notably extending the multiplication to links. See the [[VasCalc Documentation - ChordsMod4T|documentation]] for an example. &lt;br /&gt;
====Monday August 14 2006====&lt;br /&gt;
The framing independence relations have been added to the project (by the &amp;lt;code&amp;gt;ChordsMod4TFI&amp;lt;/code&amp;gt; class, and in Mathematica using &amp;lt;code&amp;gt;CDrSpace[l,m,n]&amp;lt;/code&amp;gt;). Using this, we&#039;ve also been able to verify that the correction term &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; matches a previous computation. &lt;br /&gt;
====Thursday July 27 2006====&lt;br /&gt;
We&#039;re now able to verify solutions to the pentagon and hexagon equations, in the process changing the interface around a bit. As usual, the [[VasCalc Documentation - ChordsMod4T|documentation]] contains details.&lt;br /&gt;
====Monday July 17 2006====&lt;br /&gt;
The ChordsMod4T interface has been cleaned up a little, and save/load functionality has been added - see the [[VasCalc Documentation - ChordsMod4T|documentation]]. Progress is underway on implementing some operations on chord diagram spaces.&lt;br /&gt;
====Sunday July 9 2006====&lt;br /&gt;
An updated package for the ChordsMod4T program has been posted: [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz]. Now you can work directly with linear combinations of CDs, and reduce them. See the [[VasCalc Documentation - ChordsMod4T|documentation]] for more details. &lt;br /&gt;
====Friday July 7 2006====&lt;br /&gt;
So the little bug in ChordsMod4T appears to be resolved. The [[VasCalc - Results| results]] pages no longer directly disprove the consistency of mathematics. Also the program is a fair bit faster than the previous incarnation, but coefficient arithmetic is still by far the biggest resource thief.&lt;br /&gt;
&lt;br /&gt;
====Friday June 23 2006====&lt;br /&gt;
Success! Our program is now complete - we can generate the relations, and compute the quotient . What remains is the interface to Mathematica, which should be easy, and optimizing the program, which may be a little harder. A little example will be up soon. &lt;br /&gt;
&lt;br /&gt;
====Tuesday June 20 2006====&lt;br /&gt;
Now we are able to generate all chord diagrams on a given number of lines and circles, as well as all the diagrams with a T added! Almost done is the piece that puts the two together - the ChordsMod4T class, which mods out the first space with the relations generated by the second. There are still many things to be done with this part of the program before we&#039;re truly finished: I&#039;ve listed these on the [[VasCalc - To Do List]] page. Fun fact: there are 902 chord diagrams on one circle with 6 chords, 9749 diagrams with 7 chords, and 127072 diagrams with 8 chords. Evidently, we&#039;ll have to make some improvements to the program - generating one circle with 9 chords runs out of memory.&lt;br /&gt;
====Saturday June 17 2006====&lt;br /&gt;
The [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram class] is now up and running. As explained in the [[VasCalc Documentation - ChordDiagram| documentation]], this class is used to store information about individual chord diagrams. Because of the way we&#039;ve set up labelling the diagrams, the task of generating all diagrams becomes very easy - this part of the program is almost done as well. &lt;br /&gt;
====Tuesday May 30 2006====&lt;br /&gt;
A new file [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram.java] was committed to the repository. This is a class that holds information describing one chord diagram and contains methods that will help in constructing chord diagrams systematically. It is not yet complete, though not far from it. &lt;br /&gt;
====Monday May 29 2006====&lt;br /&gt;
I&#039;ve updated the vectorSpace package, and added a Mathematica interface, as well an almost complete [[VasCalc  Documentation - vectorSpace|document]] on the wiki. Can someone check that the instructions for installation work?&lt;br /&gt;
Also, does the simulated Mathematica session work on this wiki?&lt;br /&gt;
====Wednesday May 24 2006====&lt;br /&gt;
A new package [http://katlas.math.toronto.edu/svn/VasCalc/trunk/vectorSpace vectorSpace] has been committed to the repository, to handle quotients of finite-dimensional vector spaces. See the [[VasCalc - Documentation|documentation]] for usage details.&lt;br /&gt;
====Saturday May 20 2006====&lt;br /&gt;
Our first task is to write a program to construct and manipulate the (formal) quotient vector space A(m,n,l), consisting of diagrams with m chords between n lines and l circles, modulo the four-T relations. Here&#039;s a rough sketch of the structure of this program:&lt;br /&gt;
&lt;br /&gt;
[[Image:Dmod4T.jpg|thumb|120px|left]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Java things are in orange, Mathematica things are in blue. Red arrows are helper functions that need to be written, and black arrows denote &amp;quot;natural class heirarchy&amp;quot;. &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monday May 15 2006====&lt;br /&gt;
Another slightly different HelloWorld test has been added to the [http://katlas.math.toronto.edu/svn/VasCalc/trunk/  SVN repository]. This time, one can use the default Java runtime bundled with Mathematica/Windows (so the user does not need to know anything about where Java lives on their system) by telling the Java compiler to produce code for Java 1.4. This is accomplished by issuing the command:&lt;br /&gt;
:&amp;lt;code&amp;gt;javac -source 1.4 -target 1.4 file_to_be_compiled.java &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I suppose this prevents us from using the new features of Java 1.5, but I don&#039;t know what they are.&lt;br /&gt;
&lt;br /&gt;
As for the test program, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/javatest.m javatest.m] and [http://katlas.math.toronto.edu/svn/VasCalc/trunk/test1.class test1.class], and issue the following commands in Mathematica (replacing the &#039;/path_to_files&#039; with the location you downloaded the files to, and don&#039;t forget the quotes in the second line):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; &amp;lt;&amp;lt; /path_to_files/javatest.m &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; HelloWorld[VasCalcPath -&amp;gt; &amp;quot;/path_to_files&amp;quot;] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and read your mystery message!&lt;br /&gt;
&lt;br /&gt;
==== Sunday May 14 2006====&lt;br /&gt;
J/Link passed the Hello World test. The java class and Mathematica&lt;br /&gt;
notebook were commited to the repository trunk. Note the Mathematica file&lt;br /&gt;
must be edited in order to specify the path to java and the class.&lt;br /&gt;
In order to get it to work I had to tweak a few things:&lt;br /&gt;
* The JRE bin directory had to be added to the PATH. The JDK path is not enough because J/Link looks for files like jawt.dll and awt.dll that don&#039;t come with JDK.&lt;br /&gt;
* HelloWorld.class had to be in one of the dirs in CLASSPATH, because J/Link loads classes only through their full class name.&lt;br /&gt;
* In Mathematica, when running InstallJava[], it was necessary to specify the path name for a newer version of java.exe. By default it runs the Windows java, which didn&#039;t run what was compiled with a new JDK. &lt;br /&gt;
&lt;br /&gt;
Ideally, one would like to write a Mathematica notebook without&lt;br /&gt;
any hardcoded paths that others can use with no changes. Is this&lt;br /&gt;
possible?&lt;br /&gt;
&lt;br /&gt;
==== Thursday May 11 20006====&lt;br /&gt;
* First day meeting&#039;s blackboard: [[Image:060511-1.jpg|thumb|160px|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1818</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1818"/>
		<updated>2006-09-09T19:16:19Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
In order to use the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt;, you must also install the &#039;&#039;KnotTheory`&#039;&#039; package, which is available from [http://katlas.math.toronto.edu/wiki/The_Mathematica_Package_KnotTheory%60 The  Knot Atlas].&lt;br /&gt;
 &lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
If you wish to compute the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; (and really, why else would you be here?), start by loading in the &#039;&#039;KnotTheory`&#039;&#039; package in a Mathematica session:&lt;br /&gt;
{{InOut|n=0|in=&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;KnotTheory`&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;Loading KnotTheory` version of May 31, 2006, 14:15:20.091.&lt;br /&gt;
Read more at http://katlas.math.toronto.edu/wiki/KnotTheory.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Also, load in the VasCalc definitions:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====The Unknot====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for any knot, including the unknot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[Id[3],0,&lt;br /&gt;
1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440&lt;br /&gt;
 ]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[{2,1},0, &lt;br /&gt;
 1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384&lt;br /&gt;
 ];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[2,1, ConnectStrand[3,2, ReverseStrand[2,Phi] ] ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[{1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[0,1,CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====The Kontsevich integral for unframed knots====&lt;br /&gt;
&lt;br /&gt;
We can find the Kontsevich integral of any knot &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, through the command &amp;lt;code&amp;gt;KontsevichIntegral[R, Phi, K]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects as above, and &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; is a [http://katlas.math.toronto.edu/wiki/MorseLink_Presentations Morse link] presentation of a knot (or alternatively any presentation that &#039;&#039;KnotTheory`&#039;&#039; knows how to convert to a Morse link presentation). The output, for a knot, is an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object on one circle, whose degree is determined by  the degrees of &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
In these examples, we shall continue to use the pair &amp;lt;math&amp;gt;(R, \Phi) &amp;lt;/math&amp;gt; defined in the previous section.&lt;br /&gt;
&lt;br /&gt;
First, let&#039;s make sure we get the same answer as the previous section with this presentation of the unknot:&lt;br /&gt;
[[Image:Unknot.jpg|thumb|60px|left|The unknot]]&lt;br /&gt;
{{In|n=14|in=&amp;lt;nowiki&amp;gt;unknot = MorseLink[Cup[1, 2], Cup[3, 4], X[2, Under, Up, Down], &lt;br /&gt;
X[2,Over, Down, Up],Cap[2, 3], Cap[2, 1]];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
We&#039;ll compute the Kontsevich integral, reduce it, and print it out:&lt;br /&gt;
{{InOut|n=15|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R, Phi, unknot] // ReduceFI // CD &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 + (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1817</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1817"/>
		<updated>2006-09-06T14:57:57Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
In order to use the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt;, you must also install the &#039;&#039;KnotTheory`&#039;&#039; package, which is available from [http://katlas.math.toronto.edu/wiki/The_Mathematica_Package_KnotTheory%60 The  Knot Atlas].&lt;br /&gt;
 &lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
If you wish to compute the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; (and really, why else would you be here?), start by loading in the &#039;&#039;KnotTheory`&#039;&#039; package in a Mathematica session:&lt;br /&gt;
{{InOut|n=0|in=&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;KnotTheory`&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;Loading KnotTheory` version of May 31, 2006, 14:15:20.091.&lt;br /&gt;
Read more at http://katlas.math.toronto.edu/wiki/KnotTheory.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Also, load in the VasCalc definitions:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====The Unknot====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for any knot, including the unknot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[Id[3],0,&lt;br /&gt;
1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440&lt;br /&gt;
 ]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[{2,1},0, &lt;br /&gt;
 1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384&lt;br /&gt;
 ];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[2,1, ConnectStrand[3,2, ReverseStrand[2,Phi] ] ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[{1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[0,1,CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====The Kontsevich integral for unframed knots====&lt;br /&gt;
&lt;br /&gt;
We can find the Kontsevich integral of any knot &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, through the command &amp;lt;code&amp;gt;KontsevichIntegral[R, Phi, K]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects as above, and &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; is a [http://katlas.math.toronto.edu/wiki/MorseLink_Presentations Morse link] presentation of a knot (or alternatively any presentation that &#039;&#039;KnotTheory`&#039;&#039; knows how to convert to a Morse link presentation). The output, for a knot, is an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object on one circle, whose degree is determined by  the degrees of &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
In these examples, we shall continue to use the pair &amp;lt;math&amp;gt;(R, \Phi) &amp;lt;/math&amp;gt; defined in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Note (9/5/2006):&#039;&#039;&#039;&#039; There are a few bugs in the program right now: first, one must have at least one crossing, and second, one cannot have a crossing when there exactly two strands. The latter is not a huge problem because of Reidemeister 1, but be forewarned. This will be fixed as soon as we get the program to accept links as well as knots. &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First, let&#039;s make sure we get the same answer as the previous section with this presentation of the unknot:&lt;br /&gt;
[[Image:Unknot.jpg|thumb|60px|left|The unknot]]&lt;br /&gt;
{{In|n=14|in=&amp;lt;nowiki&amp;gt;unknot = MorseLink[Cup[1, 2], Cup[3, 4], X[2, Under, Up, Down], &lt;br /&gt;
X[2,Over, Down, Up],Cap[2, 3], Cap[2, 1]];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
We&#039;ll compute the Kontsevich integral, reduce it, and print it out:&lt;br /&gt;
{{InOut|n=15|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R, Phi, unknot] // ReduceFI // CD &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 + (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1816</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1816"/>
		<updated>2006-09-06T14:56:23Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
In order to use the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt;, you must also install the &#039;&#039;KnotTheory`&#039;&#039; package, which is available from [http://katlas.math.toronto.edu/wiki/The_Mathematica_Package_KnotTheory%60 The  Knot Atlas].&lt;br /&gt;
 &lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
If you wish to compute the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; (and really, why else would you be here?), start by loading in the &#039;&#039;KnotTheory`&#039;&#039; package in a Mathematica session:&lt;br /&gt;
{{InOut|n=0|in=&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;KnotTheory`&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;Loading KnotTheory` version of May 31, 2006, 14:15:20.091.&lt;br /&gt;
Read more at http://katlas.math.toronto.edu/wiki/KnotTheory.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Also, load in the VasCalc definitions:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====The Unknot====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for any knot, including the unknot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[Id[3],0,&lt;br /&gt;
1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
 ]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[{2,1},0, &lt;br /&gt;
 1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
 ];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[2,1, ConnectStrand[3,2, ReverseStrand[2,Phi] ] ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[{1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[0,1,CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====The Kontsevich integral for unframed knots====&lt;br /&gt;
&lt;br /&gt;
We can find the Kontsevich integral of any knot &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, through the command &amp;lt;code&amp;gt;KontsevichIntegral[R, Phi, K]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects as above, and &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; is a [http://katlas.math.toronto.edu/wiki/MorseLink_Presentations Morse link] presentation of a knot (or alternatively any presentation that &#039;&#039;KnotTheory`&#039;&#039; knows how to convert to a Morse link presentation). The output, for a knot, is an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object on one circle, whose degree is determined by  the degrees of &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
In these examples, we shall continue to use the pair &amp;lt;math&amp;gt;(R, \Phi) &amp;lt;/math&amp;gt; defined in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Note (9/5/2006):&#039;&#039;&#039;&#039; There are a few bugs in the program right now: first, one must have at least one crossing, and second, one cannot have a crossing when there exactly two strands. The latter is not a huge problem because of Reidemeister 1, but be forewarned. This will be fixed as soon as we get the program to accept links as well as knots. &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First, let&#039;s make sure we get the same answer as the previous section with this presentation of the unknot:&lt;br /&gt;
[[Image:Unknot.jpg|thumb|60px|left|The unknot]]&lt;br /&gt;
{{In|n=14|in=&amp;lt;nowiki&amp;gt;unknot = MorseLink[Cup[1, 2], Cup[3, 4], X[2, Under, Up, Down], &lt;br /&gt;
X[2,Over, Down, Up],Cap[2, 3], Cap[2, 1]];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
We&#039;ll compute the Kontsevich integral, reduce it, and print it out:&lt;br /&gt;
{{InOut|n=15|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R, Phi, unknot] // ReduceFI // CD &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 + (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1813</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1813"/>
		<updated>2006-09-06T01:31:43Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
In order to use the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt;, you must also install the &#039;&#039;KnotTheory`&#039;&#039; package, which is available from [http://katlas.math.toronto.edu/wiki/The_Mathematica_Package_KnotTheory%60 The  Knot Atlas].&lt;br /&gt;
 &lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
If you wish to compute the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; (and really, why else would you be here?), start by loading in the &#039;&#039;KnotTheory`&#039;&#039; package in a Mathematica session:&lt;br /&gt;
{{InOut|n=0|in=&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;KnotTheory`&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;Loading KnotTheory` version of May 31, 2006, 14:15:20.091.&lt;br /&gt;
Read more at http://katlas.math.toronto.edu/wiki/KnotTheory.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Also, load in the VasCalc definitions:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====The Unknot====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for any knot, including the unknot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[2,1, ConnectStrand[3,2, ReverseStrand[2,Phi] ] ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[1, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle, 0 , 1]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====The Kontsevich integral for unframed knots====&lt;br /&gt;
&lt;br /&gt;
We can find the Kontsevich integral of any knot &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, through the command &amp;lt;code&amp;gt;KontsevichIntegral[R, Phi, K]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects as above, and &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; is a [http://katlas.math.toronto.edu/wiki/MorseLink_Presentations Morse link] presentation of a knot (or alternatively any presentation that &#039;&#039;KnotTheory`&#039;&#039; knows how to convert to a Morse link presentation). The output, for a knot, is an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object on one circle, whose degree is determined by  the degrees of &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
In these examples, we shall continue to use the pair &amp;lt;math&amp;gt;(R, \Phi) &amp;lt;/math&amp;gt; defined in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Note (9/5/2006):&#039;&#039;&#039;&#039; There are a few bugs in the program right now: first, one must have at least one crossing, and second, one cannot have a crossing when there exactly two strands. The latter is not a huge problem because of Reidemeister 1, but be forewarned. This will be fixed as soon as we get the program to accept links as well as knots. &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First, let&#039;s make sure we get the same answer as the previous section with this presentation of the unknot:&lt;br /&gt;
[[Image:Unknot.jpg|thumb|60px|left|The unknot]]&lt;br /&gt;
{{In|n=14|in=&amp;lt;nowiki&amp;gt;unknot = MorseLink[Cup[1, 2], Cup[3, 4], X[2, Under, Up, Down], &lt;br /&gt;
X[2,Over, Down, Up],Cap[2, 3], Cap[2, 1]];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
We&#039;ll compute the Kontsevich integral, reduce it, and print it out:&lt;br /&gt;
{{InOut|n=15|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R, Phi, unknot] // ReduceFI // CD &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 + (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1812</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1812"/>
		<updated>2006-09-06T01:25:04Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
In order to use the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt;, you must also install the &#039;&#039;KnotTheory`&#039;&#039; package, which is available from [http://katlas.math.toronto.edu/wiki/The_Mathematica_Package_KnotTheory%60 The  Knot Atlas].&lt;br /&gt;
 &lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
If you wish to compute the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; (and really, why else would you be here?), start by loading in the &#039;&#039;KnotTheory`&#039;&#039; package in a Mathematica session:&lt;br /&gt;
{{InOut|n=0|in=&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;KnotTheory`&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;Loading KnotTheory` version of May 31, 2006, 14:15:20.091.&lt;br /&gt;
Read more at http://katlas.math.toronto.edu/wiki/KnotTheory.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Also, load in the VasCalc definitions:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====The Unknot====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for any knot, including the unknot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[2,1, ConnectStrand[3,2, ReverseStrand[2,Phi] ] ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[1, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle, 0 , 1]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====The Kontsevich integral for unframed knots====&lt;br /&gt;
&lt;br /&gt;
We can find the Kontsevich integral of any knot &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, through the command &amp;lt;code&amp;gt;KontsevichIntegral[R, Phi, K]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects as above, and &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; is a [http://katlas.math.toronto.edu/wiki/MorseLink_Presentations Morse link] presentation of a knot (or alternatively any presentation that &#039;&#039;KnotTheory`&#039;&#039; knows how to convert to a Morse link presentation). The output, for a knot, is an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object on one circle, whose degree is determined by  the degrees of &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
In these examples, we shall continue to use the pair &amp;lt;math&amp;gt;(R, \Phi) &amp;lt;/math&amp;gt; defined in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Note (9/5/2006):&#039;&#039;&#039;&#039; There are a few bugs in the program right now: first, one must have at least one crossing, and second, one cannot have a crossing when there exactly two strands. The latter is not a huge problem because of Reidemeister 1, but be forewarned. This will be fixed as soon as we get the program to accept links as well as knots. &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First, let&#039;s make sure we get the same answer as the previous section with this presentation of the unknot:&lt;br /&gt;
[[Image:Unknot.jpg|thumb|60px|left|The unknot]]&lt;br /&gt;
{{In|n=14|in=&amp;lt;nowiki&amp;gt;unknot = MorseLink[Cup[1, 2], Cup[3, 4], X[2, Over, Up, Down], &lt;br /&gt;
X[2,Under, Down, Up],Cap[2, 3], Cap[2, 1]];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
We&#039;ll compute the Kontsevich integral, reduce it, and print it out:&lt;br /&gt;
{{InOut|n=15|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R, Phi, unknot] // ReduceFI // CD &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 + (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=File:Unknot.jpg&amp;diff=1811</id>
		<title>File:Unknot.jpg</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=File:Unknot.jpg&amp;diff=1811"/>
		<updated>2006-09-06T01:19:24Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: A presentation of the unknot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A presentation of the unknot&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1810</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1810"/>
		<updated>2006-09-06T01:10:58Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
In order to use the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt;, you must also install the &#039;&#039;KnotTheory`&#039;&#039; package, which is available from [http://katlas.math.toronto.edu/wiki/The_Mathematica_Package_KnotTheory%60 The  Knot Atlas].&lt;br /&gt;
 &lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
If you wish to compute the &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; (and really, why else would you be here?), start by loading in the &#039;&#039;KnotTheory`&#039;&#039; package in a Mathematica session:&lt;br /&gt;
{{InOut|n=0|in=&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;KnotTheory`&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;Loading KnotTheory` version of May 31, 2006, 14:15:20.091.&lt;br /&gt;
Read more at http://katlas.math.toronto.edu/wiki/KnotTheory.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Also, load in the VasCalc definitions:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====The Unknot====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for any knot, including the unknot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[2,1, ConnectStrand[3,2, ReverseStrand[2,Phi] ] ]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[1, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle, 0 , 1]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====The Kontsevich integral for unframed knots====&lt;br /&gt;
&lt;br /&gt;
We can find the Kontsevich integral of any knot &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt;, through the command &amp;lt;code&amp;gt;KontsevichIntegral[R, Phi, K]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects as above, and &amp;lt;code&amp;gt;K&amp;lt;/code&amp;gt; is a [http://katlas.math.toronto.edu/wiki/MorseLink_Presentations Morse link] presentation of a knot (or alternatively any presentation that &#039;&#039;KnotTheory`&#039;&#039; knows how to convert to a Morse link presentation). The output, for a knot, is an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object on one circle, whose degree is determined by  the degrees of &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Phi&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
In these examples, we shall continue to use the pair &amp;lt;math&amp;gt;(R, \Phi) &amp;lt;/math&amp;gt; defined in the previous section.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;&#039;Note (9/5/2006):&#039;&#039;&#039;&#039; There are a few bugs in the program right now: first, one must have at least one crossing, and second, one cannot have a crossing when there exactly two strands. The latter is not a huge problem because of Reidemeister 1, but be forewarned. This will be fixed as soon as we get the program to accept links as well as knots. &amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First, let&#039;s try this presentation of the unknot:&lt;br /&gt;
{{In|n=14|in=&amp;lt;nowiki&amp;gt;unknot = MorseLink[Cup[1, 2], Cup[3, 4], X[2, Over, Up, Down], X[2,Under, Down, Up],Cap[2, 3], Cap[2, 1]];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
We&#039;ll compute the Kontsevich integral, reduce it, and print it out:&lt;br /&gt;
{{InOut|n=15|in=&amp;lt;nowiki&amp;gt;KontsevichIntegral[R, Phi, unknot] // ReduceFI // CD &amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|out = &amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
 CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 + (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
Thankfully, this agrees with the previous section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1809</id>
		<title>VasCalc - Progress Log</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1809"/>
		<updated>2006-09-06T00:25:40Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the [[VasCalc - A Vassiliev Invariants Calculator|VasCalc Project]] Progress Log.&lt;br /&gt;
====Tuesday September 5 2006====&lt;br /&gt;
A preliminary &amp;lt;code&amp;gt;KontsevichIntegral&amp;lt;/code&amp;gt; function has been added to the repository. There are still some details to be ironed out, most notably extending the multiplication to links. See the [[VasCalc Documentation - ChordsMod4T|documentation]] for an example. &lt;br /&gt;
====Monday August 14 2006====&lt;br /&gt;
The framing independence relations have been added to the project (by the &amp;lt;code&amp;gt;ChordsMod4TFI&amp;lt;/code&amp;gt; class, and in Mathematica using &amp;lt;code&amp;gt;CDrSpace[l,m,n]&amp;lt;/code&amp;gt;). Using this, we&#039;ve also been able to verify that the correction term &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; matches a previous computation. &lt;br /&gt;
====Thursday July 27 2006====&lt;br /&gt;
We&#039;re now able to verify solutions to the pentagon and hexagon equations, in the process changing the interface around a bit. As usual, the [[VasCalc Documentation - ChordsMod4T|documentation]] contains details.&lt;br /&gt;
====Monday July 17 2006====&lt;br /&gt;
The ChordsMod4T interface has been cleaned up a little, and save/load functionality has been added - see the [[VasCalc Documentation - ChordsMod4T|documentation]]. Progress is underway on implementing some operations on chord diagram spaces.&lt;br /&gt;
====Sunday July 9 2006====&lt;br /&gt;
An updated package for the ChordsMod4T program has been posted: [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz]. Now you can work directly with linear combinations of CDs, and reduce them. See the [[VasCalc Documentation - ChordsMod4T|documentation]] for more details. &lt;br /&gt;
====Friday July 7 2006====&lt;br /&gt;
So the little bug in ChordsMod4T appears to be resolved. The [[VasCalc - Results| results]] pages no longer directly disprove the consistency of mathematics. Also the program is a fair bit faster than the previous incarnation, but coefficient arithmetic is still by far the biggest resource thief.&lt;br /&gt;
&lt;br /&gt;
====Friday June 23 2006====&lt;br /&gt;
Success! Our program is now complete - we can generate the relations, and compute the quotient . What remains is the interface to Mathematica, which should be easy, and optimizing the program, which may be a little harder. A little example will be up soon. &lt;br /&gt;
&lt;br /&gt;
====Tuesday June 20 2006====&lt;br /&gt;
Now we are able to generate all chord diagrams on a given number of lines and circles, as well as all the diagrams with a T added! Almost done is the piece that puts the two together - the ChordsMod4T class, which mods out the first space with the relations generated by the second. There are still many things to be done with this part of the program before we&#039;re truly finished: I&#039;ve listed these on the [[VasCalc - To Do List]] page. Fun fact: there are 902 chord diagrams on one circle with 6 chords, 9749 diagrams with 7 chords, and 127072 diagrams with 8 chords. Evidently, we&#039;ll have to make some improvements to the program - generating one circle with 9 chords runs out of memory.&lt;br /&gt;
====Saturday June 17 2006====&lt;br /&gt;
The [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram class] is now up and running. As explained in the [[VasCalc Documentation - ChordDiagram| documentation]], this class is used to store information about individual chord diagrams. Because of the way we&#039;ve set up labelling the diagrams, the task of generating all diagrams becomes very easy - this part of the program is almost done as well. &lt;br /&gt;
====Tuesday May 30 2006====&lt;br /&gt;
A new file [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram.java] was committed to the repository. This is a class that holds information describing one chord diagram and contains methods that will help in constructing chord diagrams systematically. It is not yet complete, though not far from it. &lt;br /&gt;
====Monday May 29 2006====&lt;br /&gt;
I&#039;ve updated the vectorSpace package, and added a Mathematica interface, as well an almost complete [[VasCalc  Documentation - vectorSpace|document]] on the wiki. Can someone check that the instructions for installation work?&lt;br /&gt;
Also, does the simulated Mathematica session work on this wiki?&lt;br /&gt;
====Wednesday May 24 2006====&lt;br /&gt;
A new package [http://katlas.math.toronto.edu/svn/VasCalc/trunk/vectorSpace vectorSpace] has been committed to the repository, to handle quotients of finite-dimensional vector spaces. See the [[VasCalc - Documentation|documentation]] for usage details.&lt;br /&gt;
====Saturday May 20 2006====&lt;br /&gt;
Our first task is to write a program to construct and manipulate the (formal) quotient vector space A(m,n,l), consisting of diagrams with m chords between n lines and l circles, modulo the four-T relations. Here&#039;s a rough sketch of the structure of this program:&lt;br /&gt;
&lt;br /&gt;
[[Image:Dmod4T.jpg|thumb|120px|left]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Java things are in orange, Mathematica things are in blue. Red arrows are helper functions that need to be written, and black arrows denote &amp;quot;natural class heirarchy&amp;quot;. &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monday May 15 2006====&lt;br /&gt;
Another slightly different HelloWorld test has been added to the [http://katlas.math.toronto.edu/svn/VasCalc/trunk/  SVN repository]. This time, one can use the default Java runtime bundled with Mathematica/Windows (so the user does not need to know anything about where Java lives on their system) by telling the Java compiler to produce code for Java 1.4. This is accomplished by issuing the command:&lt;br /&gt;
:&amp;lt;code&amp;gt;javac -source 1.4 -target 1.4 file_to_be_compiled.java &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I suppose this prevents us from using the new features of Java 1.5, but I don&#039;t know what they are.&lt;br /&gt;
&lt;br /&gt;
As for the test program, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/javatest.m javatest.m] and [http://katlas.math.toronto.edu/svn/VasCalc/trunk/test1.class test1.class], and issue the following commands in Mathematica (replacing the &#039;/path_to_files&#039; with the location you downloaded the files to, and don&#039;t forget the quotes in the second line):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; &amp;lt;&amp;lt; /path_to_files/javatest.m &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; HelloWorld[VasCalcPath -&amp;gt; &amp;quot;/path_to_files&amp;quot;] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and read your mystery message!&lt;br /&gt;
&lt;br /&gt;
==== Sunday May 14 2006====&lt;br /&gt;
J/Link passed the Hello World test. The java class and Mathematica&lt;br /&gt;
notebook were commited to the repository trunk. Note the Mathematica file&lt;br /&gt;
must be edited in order to specify the path to java and the class.&lt;br /&gt;
In order to get it to work I had to tweak a few things:&lt;br /&gt;
* The JRE bin directory had to be added to the PATH. The JDK path is not enough because J/Link looks for files like jawt.dll and awt.dll that don&#039;t come with JDK.&lt;br /&gt;
* HelloWorld.class had to be in one of the dirs in CLASSPATH, because J/Link loads classes only through their full class name.&lt;br /&gt;
* In Mathematica, when running InstallJava[], it was necessary to specify the path name for a newer version of java.exe. By default it runs the Windows java, which didn&#039;t run what was compiled with a new JDK. &lt;br /&gt;
&lt;br /&gt;
Ideally, one would like to write a Mathematica notebook without&lt;br /&gt;
any hardcoded paths that others can use with no changes. Is this&lt;br /&gt;
possible?&lt;br /&gt;
&lt;br /&gt;
==== Thursday May 11 20006====&lt;br /&gt;
* First day meeting&#039;s blackboard: [[Image:060511-1.jpg|thumb|160px|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1742</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1742"/>
		<updated>2006-08-19T21:51:51Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: moved &amp;quot;Special ASeries&amp;quot; content to body&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning (08/19/06):&#039;&#039;&#039; The documentation below may be slightly out of date, as we are in the process of changing the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; notation. This should be resolved within a few days - please bear with us.&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for a knot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[ConnectStrand[ReverseStrand[Phi, 2], 3, 2], 2, 1]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[1, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle, 0 , 1]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1741</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1741"/>
		<updated>2006-08-19T21:50:00Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning (08/19/06):&#039;&#039;&#039; The documentation below may be slightly out of date, as we are in the process of changing the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; notation. This should be resolved within a few days - please bear with us.&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require   no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Special Form of ASeries====&lt;br /&gt;
&lt;br /&gt;
When calculating the invariant of a knot or a braid, we multiply the invariant of&lt;br /&gt;
the different &amp;quot;events&amp;quot; in the knot&#039;s presentation. In the case where this event&lt;br /&gt;
is a crossing, one must keep in mind that two strands have been permuted. For&lt;br /&gt;
this reason one must apply &amp;lt;code&amp;gt;PermuteStrand[]&amp;lt;/code&amp;gt; in order to get the&lt;br /&gt;
correct answer. This causes the resulting expressions to be rather inelegant.&lt;br /&gt;
For this reason we have devised a new form of &amp;lt;code&amp;gt;ASeries[]&amp;lt;/code&amp;gt; that keeps&lt;br /&gt;
track of the permutation of the strands so one does not need to manually permute&lt;br /&gt;
them when multiplying. &lt;br /&gt;
&lt;br /&gt;
This format only applies when there are no circles in our ASeries, as in the &lt;br /&gt;
case of knots and braids. One can then define an ASeries using the format:&lt;br /&gt;
&amp;lt;code&amp;gt;ASeries[Permutation_list, CV_list]&amp;lt;/code&amp;gt;. Here, &amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list&lt;br /&gt;
of integers from &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; to &amp;lt;/math&amp;gt;n&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is&lt;br /&gt;
the number of lines in the diagram. &amp;lt;code&amp;gt;CV&amp;lt;/code&amp;gt; is a list containing Chord vectors&lt;br /&gt;
of increasing degree.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects - note that we wish &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; to represent a transposition, while &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; is a trivial permutation:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[{1, 2, 3}, 0, &lt;br /&gt;
    1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - &lt;br /&gt;
   (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[{1, 2, 3}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[{2, 1}, 0, &lt;br /&gt;
    1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2],Line[1, 2]] + &lt;br /&gt;
    (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]]&lt;br /&gt;
    ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;ASeries[{2, 1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; AddStrand[0, Phi].DoubleStrand[2, Phi].AddStrand[3, Phi] - &lt;br /&gt;
  DoubleStrand[1, Phi].DoubleStrand[3, Phi] &amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[{1,2,3,4}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;DoubleStrand[1, R] - Phi.AddStrand[0, R].(Phi)^(-1).AddStrand[2, R].Phi&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[{2,3,1}, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for a knot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[ConnectStrand[ReverseStrand[Phi, 2], 3, 2], 2, 1]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[1, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle, 0 , 1]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1740</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1740"/>
		<updated>2006-08-19T21:23:04Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning (08/19/06):&#039;&#039;&#039; The documentation below may be slightly out of date, as we are in the process of changing the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; notation. This should be resolved within a few days - please bear with us.&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[n, ASeries]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[n, ASeries]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[n, ASeries]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[i, j, ASeries]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Special Form of ASeries====&lt;br /&gt;
&lt;br /&gt;
When calculating the invariant of a knot or a braid, we multiply the invariant of&lt;br /&gt;
the different &amp;quot;events&amp;quot; in the knot&#039;s presentation. In the case where this event&lt;br /&gt;
is a crossing, one must keep in mind that two strands have been permuted. For&lt;br /&gt;
this reason one must apply &amp;lt;code&amp;gt;PermuteStrand[]&amp;lt;/code&amp;gt; in order to get the&lt;br /&gt;
correct answer. This causes the resulting expressions to be rather inelegant.&lt;br /&gt;
For this reason we have devised a new form of &amp;lt;code&amp;gt;ASeries[]&amp;lt;/code&amp;gt; that keeps&lt;br /&gt;
track of the permutation of the strands so one does not need to manually permute&lt;br /&gt;
them when multiplying. &lt;br /&gt;
&lt;br /&gt;
This format only applies when there are no circles in our ASeries, as in the &lt;br /&gt;
case of knots and braids. One can then define an ASeries using the format:&lt;br /&gt;
&amp;lt;code&amp;gt;ASeries[Permutation_list, CV_list]&amp;lt;/code&amp;gt;. Here, &amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list&lt;br /&gt;
of integers from &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; to &amp;lt;/math&amp;gt;n&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is&lt;br /&gt;
the number of lines in the diagram. &amp;lt;code&amp;gt;CV&amp;lt;/code&amp;gt; is a list containing Chord vectors&lt;br /&gt;
of increasing degree.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for a knot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[ConnectStrand[ReverseStrand[Phi, 2], 3, 2], 2, 1]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[1, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle, 0 , 1]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1739</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1739"/>
		<updated>2006-08-19T20:11:52Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning (08/19/06):&#039;&#039;&#039; The documentation below may be slightly out of date, as we are in the process of changing the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; notation. This should be resolved within a few days - please bear with us.&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[ASeries, n]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[ASeries, i, j]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Special Form of ASeries====&lt;br /&gt;
&lt;br /&gt;
When calculating the invariant of a knot or a braid, we multiply the invariant of&lt;br /&gt;
the different &amp;quot;events&amp;quot; in the knot&#039;s presentation. In the case where this event&lt;br /&gt;
is a crossing, one must keep in mind that two strands have been permuted. For&lt;br /&gt;
this reason one must apply &amp;lt;code&amp;gt;PermuteStrand[]&amp;lt;/code&amp;gt; in order to get the&lt;br /&gt;
correct answer. This causes the resulting expressions to be rather inelegant.&lt;br /&gt;
For this reason we have devised a new form of &amp;lt;code&amp;gt;ASeries[]&amp;lt;/code&amp;gt; that keeps&lt;br /&gt;
track of the permutation of the strands so one does not need to manually permute&lt;br /&gt;
them when multiplying. &lt;br /&gt;
&lt;br /&gt;
This format only applies when there are no circles in our ASeries, as in the &lt;br /&gt;
case of knots and braids. One can then define an ASeries using the format:&lt;br /&gt;
&amp;lt;code&amp;gt;ASeries[Permutation_list, CV_list]&amp;lt;/code&amp;gt;. Here, &amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list&lt;br /&gt;
of integers from &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; to &amp;lt;/math&amp;gt;n&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is&lt;br /&gt;
the number of lines in the diagram. &amp;lt;code&amp;gt;CV&amp;lt;/code&amp;gt; is a list containing Chord vectors&lt;br /&gt;
of increasing degree.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for a knot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[ConnectStrand[ReverseStrand[Phi, 2], 3, 2], 2, 1]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[1, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle, 0 , 1]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1736</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1736"/>
		<updated>2006-08-17T18:04:56Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDcombo]&amp;lt;/code&amp;gt;, where&lt;br /&gt;
*&amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list of integers from 1 to &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; (the number of strands) which encode the permutation of those strands that the &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; is intended to represent (Note - &amp;lt;code&amp;gt;Id[n]&amp;lt;/code&amp;gt; can be used as a shortcut for the identity permutation on &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; strands). For example, if one wishes a combination of chord diagrams to represent the braiding of the first two strands in a skeleton of five strands, one would use the permutation &amp;lt;code&amp;gt;{2,1,3,4,5}&amp;lt;/code&amp;gt;, &lt;br /&gt;
*&amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; is the number of circles, and&lt;br /&gt;
*&amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords.&lt;br /&gt;
&lt;br /&gt;
It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. To force a maximum order, use the command &amp;lt;code&amp;gt;ASeries[Permutation, m, CDCombo, MaxDegree]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;MaxDegree&amp;lt;/code&amp;gt; is a non-negative integer.&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively - however only diagrams representing the same permutation can be added. Multiplication naturally composes the permutations. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[ASeries, n]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[ASeries, i, j]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Special Form of ASeries====&lt;br /&gt;
&lt;br /&gt;
When calculating the invariant of a knot or a braid, we multiply the invariant of&lt;br /&gt;
the different &amp;quot;events&amp;quot; in the knot&#039;s presentation. In the case where this event&lt;br /&gt;
is a crossing, one must keep in mind that two strands have been permuted. For&lt;br /&gt;
this reason one must apply &amp;lt;code&amp;gt;PermuteStrand[]&amp;lt;/code&amp;gt; in order to get the&lt;br /&gt;
correct answer. This causes the resulting expressions to be rather inelegant.&lt;br /&gt;
For this reason we have devised a new form of &amp;lt;code&amp;gt;ASeries[]&amp;lt;/code&amp;gt; that keeps&lt;br /&gt;
track of the permutation of the strands so one does not need to manually permute&lt;br /&gt;
them when multiplying. &lt;br /&gt;
&lt;br /&gt;
This format only applies when there are no circles in our ASeries, as in the &lt;br /&gt;
case of knots and braids. One can then define an ASeries using the format:&lt;br /&gt;
&amp;lt;code&amp;gt;ASeries[Permutation_list, CV_list]&amp;lt;/code&amp;gt;. Here, &amp;lt;code&amp;gt;Permutation&amp;lt;/code&amp;gt; is a list&lt;br /&gt;
of integers from &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; to &amp;lt;/math&amp;gt;n&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is&lt;br /&gt;
the number of lines in the diagram. &amp;lt;code&amp;gt;CV&amp;lt;/code&amp;gt; is a list containing Chord vectors&lt;br /&gt;
of increasing degree.&lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for a knot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[ConnectStrand[ReverseStrand[Phi, 2], 3, 2], 2, 1]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[1, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle, 0 , 1]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1683</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1683"/>
		<updated>2006-08-16T01:20:15Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[ASeries, n]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[ASeries, i, j]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for a knot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[ConnectStrand[ReverseStrand[Phi, 2], 3, 2], 2, 1]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[1, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle, 0 , 1]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;[1]&amp;lt;/nowiki&amp;gt; D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1682</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1682"/>
		<updated>2006-08-16T01:17:28Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[ASeries, n]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[ASeries, i, j]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for a knot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. In addition, framing independence forces us to introduce the FI relation - hence all the formulae in this section take place in the &amp;quot;further reduced&amp;quot; space of chord diagrams. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The definition of &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; involves going up the third strand, down the second, and up the first strand of &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;:&lt;br /&gt;
{{InOut|n=11|in=&amp;lt;nowiki&amp;gt;Zinf = ConnectStrand[ConnectStrand[ReverseStrand[Phi, 2], 3, 2], 2, 1]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|out=&amp;lt;nowiki&amp;gt;ASeries[1, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The invariant of the unknot &amp;lt;math&amp;gt;Z(O)&amp;lt;/math&amp;gt; is given by closing &amp;lt;math&amp;gt;Z_\infty&amp;lt;/math&amp;gt; to a circle (the first line below), and taking the inverse:&lt;br /&gt;
{{InOut|n=12|in=&amp;lt;nowiki&amp;gt;ZinfInverseCircle = ASeries[CD[(Zinf)^(-1)] /. Line -&amp;gt; Circle, 0 , 1]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[0, 1, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=13|in=&amp;lt;nowiki&amp;gt;CD[ReduceFI[ZinfInverseCircle]]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;1 - CD[Circle[1, 2, 1, 2]]/24 - CD[Circle[1, 2, 3, 1, 4, 2, 3, 4]]/360 + &lt;br /&gt;
CD[Circle[1, 2, 3, 1, 4, 3, 2, 4]]/720 +  (7*CD[Circle[1, 2, 3, 4, 1, 2, 3, 4]])/5760 &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1681</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1681"/>
		<updated>2006-08-16T01:01:19Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[ASeries, n]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[ASeries, i, j]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for a knot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1680</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1680"/>
		<updated>2006-08-16T01:00:47Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[ASeries, n]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[ASeries, i, j]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To compute &amp;lt;math&amp;gt;Z(K)&amp;lt;/math&amp;gt; for a knot, we need to extend the definition of &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt; to include &amp;quot;caps&amp;quot; and &amp;quot;cups&amp;quot;. We proceed using the &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; correction term in [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]. To begin, let us choose a pair &amp;lt;math&amp;gt;(R, \Phi)&amp;lt;/math&amp;gt; which solve the pentagon and hexagon equations to fourth degree:&lt;br /&gt;
&lt;br /&gt;
{{In|n=9|in=&amp;lt;nowiki&amp;gt;Phi = ASeries[1 + CD[Line[1], Line[2], Line[1, 2]]/24 - &lt;br /&gt;
 (7*CD[Line[1], Line[2, 3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[2], Line[1], Line[1, 2]]/24 + &lt;br /&gt;
 (7*CD[Line[2], Line[1, 3, 4], Line[1, 2, 3, 4]])/1920 - &lt;br /&gt;
 (7*CD[Line[3], Line[1, 2, 4], Line[1, 2, 3, 4]])/1920 + &lt;br /&gt;
 (7*CD[Line[4], Line[1, 2, 3], Line[1, 2, 3, 4]])/5760 + &lt;br /&gt;
 (7*CD[Line[1, 2], Line[3, 4], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 3], Line[2, 4], Line[1, 2, 3, 4]]/640 - &lt;br /&gt;
 CD[Line[1, 4], Line[2, 3], Line[1, 2, 3, 4]]/1152 - &lt;br /&gt;
 CD[Line[2, 3], Line[1, 4], Line[1, 2, 3, 4]]/1152 + &lt;br /&gt;
 (19*CD[Line[2, 4], Line[1, 3], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 (7*CD[Line[3, 4], Line[1, 2], Line[1, 2, 3, 4]])/5760 - &lt;br /&gt;
 CD[Line[1, 2, 3], Line[4], Line[1, 2, 3, 4]]/1440 + &lt;br /&gt;
 CD[Line[1, 2, 4], Line[3], Line[1, 2, 3, 4]]/480 - &lt;br /&gt;
 CD[Line[1, 3, 4], Line[2], Line[1, 2, 3, 4]]/480 + &lt;br /&gt;
 CD[Line[2, 3, 4], Line[1], Line[1, 2, 3, 4]]/1440,&lt;br /&gt;
   3,0]; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{In|n=10|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + CD[Line[1], Line[1]]/2 + CD[Line[1, 2], Line[1, 2]]/8 + &lt;br /&gt;
 CD[Line[1, 2, 3], Line[1, 2, 3]]/48 + &lt;br /&gt;
 CD[Line[1, 2, 3, 4], Line[1, 2, 3, 4]]/384, &lt;br /&gt;
   2, 0];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;br /&gt;
==References==&lt;br /&gt;
*D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf &amp;lt;i&amp;gt;Non-Associative Tangles&amp;lt;/i&amp;gt;]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1679</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1679"/>
		<updated>2006-08-16T00:18:57Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReverseStrand[ASeries, n]&amp;lt;/code&amp;gt; reverses the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. &lt;br /&gt;
*&amp;lt;code&amp;gt;ConnectStrand[ASeries, i, j]&amp;lt;/code&amp;gt; is the linear extension of the operation that for each diagram, appends the &amp;lt;code&amp;gt;j&amp;lt;/code&amp;gt;&#039;th strand to the end of the &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt;&#039;th one.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To come: Extending Z to cups, cups using &amp;lt;math&amp;gt; Z_{\infty}^{-1/2} &amp;lt;/math&amp;gt;, correction for R1 move.&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1655</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1655"/>
		<updated>2006-08-14T23:35:26Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
====Braid Invariants====&lt;br /&gt;
&lt;br /&gt;
To come: definition of Z[B[n]], demonstration of Reidemeister moves. For now, [[VasCalc Documentation - An example| reidemeister.nb]].&lt;br /&gt;
&lt;br /&gt;
====(Unframed) Knot Invariants====&lt;br /&gt;
To come: Extending Z to cups, cups using &amp;lt;math&amp;gt; Z_{\infty}^{-1/2} &amp;lt;/math&amp;gt;, correction for R1 move.&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_-_Documentation&amp;diff=1654</id>
		<title>VasCalc - Documentation</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_-_Documentation&amp;diff=1654"/>
		<updated>2006-08-14T23:20:35Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will contain the documentation for the various parts of [[VasCalc - A Vassiliev Invariants Calculator|VasCalc]], and will be updated as work gets completed. Follow the links for documentation on each component of the program:&lt;br /&gt;
&lt;br /&gt;
*[[VasCalc Documentation - User&#039;s Guide| VasCalc User&#039;s Guide]] - instructions and examples on using the VasCalc Vassiliev invariants calculator.&lt;br /&gt;
&lt;br /&gt;
* [[VasCalc Documentation - vectorSpace|vectorSpace]] - a small Java package to deal with finite-dimensional vector spaces.&lt;br /&gt;
&lt;br /&gt;
*[[VasCalc Documentation - An example| Reidemeister]] - a small example showing how to use VasCalc to check one of the Reidemeister moves&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_ChordsMod4T&amp;diff=1653</id>
		<title>VasCalc Documentation - ChordsMod4T</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_ChordsMod4T&amp;diff=1653"/>
		<updated>2006-08-14T23:18:22Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: VasCalc Documentation - ChordsMod4T moved to VasCalc Documentation - User&amp;#039;s Guide: This page will document all of the VasCalc project.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[VasCalc Documentation - User&#039;s Guide]]&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1652</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1652"/>
		<updated>2006-08-14T23:18:22Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: VasCalc Documentation - ChordsMod4T moved to VasCalc Documentation - User&amp;#039;s Guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1651</id>
		<title>VasCalc - Progress Log</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1651"/>
		<updated>2006-08-14T23:15:03Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the [[VasCalc - A Vassiliev Invariants Calculator|VasCalc Project]] Progress Log.&lt;br /&gt;
====Monday August 14 2006====&lt;br /&gt;
The framing independence relations have been added to the project (by the &amp;lt;code&amp;gt;ChordsMod4TFI&amp;lt;/code&amp;gt; class, and in Mathematica using &amp;lt;code&amp;gt;CDrSpace[l,m,n]&amp;lt;/code&amp;gt;). Using this, we&#039;ve also been able to verify that the correction term &amp;lt;math&amp;gt;Z_{\infty}&amp;lt;/math&amp;gt; matches a previous computation. &lt;br /&gt;
====Thursday July 27 2006====&lt;br /&gt;
We&#039;re now able to verify solutions to the pentagon and hexagon equations, in the process changing the interface around a bit. As usual, the [[VasCalc Documentation - ChordsMod4T|documentation]] contains details.&lt;br /&gt;
====Monday July 17 2006====&lt;br /&gt;
The ChordsMod4T interface has been cleaned up a little, and save/load functionality has been added - see the [[VasCalc Documentation - ChordsMod4T|documentation]]. Progress is underway on implementing some operations on chord diagram spaces.&lt;br /&gt;
====Sunday July 9 2006====&lt;br /&gt;
An updated package for the ChordsMod4T program has been posted: [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz]. Now you can work directly with linear combinations of CDs, and reduce them. See the [[VasCalc Documentation - ChordsMod4T|documentation]] for more details. &lt;br /&gt;
====Friday July 7 2006====&lt;br /&gt;
So the little bug in ChordsMod4T appears to be resolved. The [[VasCalc - Results| results]] pages no longer directly disprove the consistency of mathematics. Also the program is a fair bit faster than the previous incarnation, but coefficient arithmetic is still by far the biggest resource thief.&lt;br /&gt;
&lt;br /&gt;
====Friday June 23 2006====&lt;br /&gt;
Success! Our program is now complete - we can generate the relations, and compute the quotient . What remains is the interface to Mathematica, which should be easy, and optimizing the program, which may be a little harder. A little example will be up soon. &lt;br /&gt;
&lt;br /&gt;
====Tuesday June 20 2006====&lt;br /&gt;
Now we are able to generate all chord diagrams on a given number of lines and circles, as well as all the diagrams with a T added! Almost done is the piece that puts the two together - the ChordsMod4T class, which mods out the first space with the relations generated by the second. There are still many things to be done with this part of the program before we&#039;re truly finished: I&#039;ve listed these on the [[VasCalc - To Do List]] page. Fun fact: there are 902 chord diagrams on one circle with 6 chords, 9749 diagrams with 7 chords, and 127072 diagrams with 8 chords. Evidently, we&#039;ll have to make some improvements to the program - generating one circle with 9 chords runs out of memory.&lt;br /&gt;
====Saturday June 17 2006====&lt;br /&gt;
The [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram class] is now up and running. As explained in the [[VasCalc Documentation - ChordDiagram| documentation]], this class is used to store information about individual chord diagrams. Because of the way we&#039;ve set up labelling the diagrams, the task of generating all diagrams becomes very easy - this part of the program is almost done as well. &lt;br /&gt;
====Tuesday May 30 2006====&lt;br /&gt;
A new file [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram.java] was committed to the repository. This is a class that holds information describing one chord diagram and contains methods that will help in constructing chord diagrams systematically. It is not yet complete, though not far from it. &lt;br /&gt;
====Monday May 29 2006====&lt;br /&gt;
I&#039;ve updated the vectorSpace package, and added a Mathematica interface, as well an almost complete [[VasCalc  Documentation - vectorSpace|document]] on the wiki. Can someone check that the instructions for installation work?&lt;br /&gt;
Also, does the simulated Mathematica session work on this wiki?&lt;br /&gt;
====Wednesday May 24 2006====&lt;br /&gt;
A new package [http://katlas.math.toronto.edu/svn/VasCalc/trunk/vectorSpace vectorSpace] has been committed to the repository, to handle quotients of finite-dimensional vector spaces. See the [[VasCalc - Documentation|documentation]] for usage details.&lt;br /&gt;
====Saturday May 20 2006====&lt;br /&gt;
Our first task is to write a program to construct and manipulate the (formal) quotient vector space A(m,n,l), consisting of diagrams with m chords between n lines and l circles, modulo the four-T relations. Here&#039;s a rough sketch of the structure of this program:&lt;br /&gt;
&lt;br /&gt;
[[Image:Dmod4T.jpg|thumb|120px|left]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Java things are in orange, Mathematica things are in blue. Red arrows are helper functions that need to be written, and black arrows denote &amp;quot;natural class heirarchy&amp;quot;. &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monday May 15 2006====&lt;br /&gt;
Another slightly different HelloWorld test has been added to the [http://katlas.math.toronto.edu/svn/VasCalc/trunk/  SVN repository]. This time, one can use the default Java runtime bundled with Mathematica/Windows (so the user does not need to know anything about where Java lives on their system) by telling the Java compiler to produce code for Java 1.4. This is accomplished by issuing the command:&lt;br /&gt;
:&amp;lt;code&amp;gt;javac -source 1.4 -target 1.4 file_to_be_compiled.java &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I suppose this prevents us from using the new features of Java 1.5, but I don&#039;t know what they are.&lt;br /&gt;
&lt;br /&gt;
As for the test program, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/javatest.m javatest.m] and [http://katlas.math.toronto.edu/svn/VasCalc/trunk/test1.class test1.class], and issue the following commands in Mathematica (replacing the &#039;/path_to_files&#039; with the location you downloaded the files to, and don&#039;t forget the quotes in the second line):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; &amp;lt;&amp;lt; /path_to_files/javatest.m &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; HelloWorld[VasCalcPath -&amp;gt; &amp;quot;/path_to_files&amp;quot;] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and read your mystery message!&lt;br /&gt;
&lt;br /&gt;
==== Sunday May 14 2006====&lt;br /&gt;
J/Link passed the Hello World test. The java class and Mathematica&lt;br /&gt;
notebook were commited to the repository trunk. Note the Mathematica file&lt;br /&gt;
must be edited in order to specify the path to java and the class.&lt;br /&gt;
In order to get it to work I had to tweak a few things:&lt;br /&gt;
* The JRE bin directory had to be added to the PATH. The JDK path is not enough because J/Link looks for files like jawt.dll and awt.dll that don&#039;t come with JDK.&lt;br /&gt;
* HelloWorld.class had to be in one of the dirs in CLASSPATH, because J/Link loads classes only through their full class name.&lt;br /&gt;
* In Mathematica, when running InstallJava[], it was necessary to specify the path name for a newer version of java.exe. By default it runs the Windows java, which didn&#039;t run what was compiled with a new JDK. &lt;br /&gt;
&lt;br /&gt;
Ideally, one would like to write a Mathematica notebook without&lt;br /&gt;
any hardcoded paths that others can use with no changes. Is this&lt;br /&gt;
possible?&lt;br /&gt;
&lt;br /&gt;
==== Thursday May 11 20006====&lt;br /&gt;
* First day meeting&#039;s blackboard: [[Image:060511-1.jpg|thumb|160px|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1650</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1650"/>
		<updated>2006-08-14T19:21:35Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T and FI relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
In addition, one can work with chord diagram spaces modulo the 4T and framing independence (FI) relations, using the command &amp;lt;code&amp;gt; CDrSpace[l,m,n,opts] &amp;lt;/code&amp;gt; - the &amp;quot;r&amp;quot; stands for &amp;quot;further reduced&amp;quot;. The above commands work in a similar fashion for these spaces.&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
*&amp;lt;code&amp;gt;ReduceFI[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation, and the FI relations. As before, this operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
&lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1636</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1636"/>
		<updated>2006-07-29T20:19:10Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
 &lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations, up to the third order. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1635</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1635"/>
		<updated>2006-07-29T20:16:14Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
 &lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[&lt;br /&gt;
         1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], &lt;br /&gt;
      3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in= &amp;lt;nowiki&amp;gt;R = ASeries[&lt;br /&gt;
         1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
        (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],&lt;br /&gt;
     2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1634</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1634"/>
		<updated>2006-07-29T20:10:31Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
 &lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] &lt;br /&gt;
- (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
(1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and the result is the same.&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1633</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1633"/>
		<updated>2006-07-29T20:09:29Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
 &lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations. After running through the initialization above, we introduce our candidates as &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects:&lt;br /&gt;
{{InOut|n=3|in= &amp;lt;nowiki&amp;gt;Phi = ASeries[1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] &lt;br /&gt;
- (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3,0]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out = &amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{InOut|n=4|in=&amp;lt;nowiki&amp;gt;R = ASeries[1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + &lt;br /&gt;
(1/48)CD[Line[1, 2, 3], Line[1, 2, 3]],2,0]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[2, 0,«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», &lt;br /&gt;
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll check the pentagon equation. Writing the difference of the two sides for &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;,&lt;br /&gt;
{{InOut|n=5|in=&amp;lt;nowiki&amp;gt; (AddStrand[Phi,0].DoubleStrand[Phi,2].AddStrand[Phi,3]) - (DoubleStrand[Phi,1].DoubleStrand[Phi,3])&amp;lt;/nowiki&amp;gt; | out= &amp;lt;nowiki&amp;gt;ASeries[4, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now we reduce the result modulo the 4T relations, and convert back to &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; notation:&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
Thus our candidate &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; solves the pentagon equation.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s also test one of the hexagon equations:&lt;br /&gt;
{{InOut|n=7|in = &amp;lt;nowiki&amp;gt;(DoubleStrand[R, 1]) - &lt;br /&gt;
  Phi.AddStrand[R, 0].PermuteStrand[ Phi^(-1) , {{2, 3}}].AddStrand[R, &lt;br /&gt;
      1].PermuteStrand[Phi, {{1, 3, 2}}]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», &lt;br /&gt;
    «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Reducing the result, we see that our choices of &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt; yield a solution to the first hexagon equation.&lt;br /&gt;
{{InOut|n=8|in=&amp;lt;nowiki&amp;gt;CD[Reduce[%]]&amp;lt;/nowiki&amp;gt;|out=0}}&lt;br /&gt;
&lt;br /&gt;
The second hexagon equation can be verified in a similar fashion, and luckily the result is the same.&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1632</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1632"/>
		<updated>2006-07-29T19:10:11Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
 &lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations. After running through the initialization above, we introduce our candidates:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1631</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1631"/>
		<updated>2006-07-29T19:09:31Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T relations====&lt;br /&gt;
&lt;br /&gt;
[[Image:The_4T_Relation.png|300px|right|thumb|The 4T relation: The dotted lines indicated regions that are identical in all diagrams.]]&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
There are several operations one can perform on an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object. Addition and multiplication is achieved using the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; operators respectively. Also, &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects can be inverted (up to the highest order), provided they are of the form &amp;lt;code&amp;gt;(1 + higher order terms) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Additionally, the following unary operations are available:&lt;br /&gt;
*&amp;lt;code&amp;gt;AddStrand[ASeries, n]&amp;lt;/code&amp;gt; adds an empty strand to all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; after the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th position.&lt;br /&gt;
*&amp;lt;code&amp;gt;DoubleStrand[ASeries, n]&amp;lt;/code&amp;gt; doubles the &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&#039;th strand in all the diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;.&lt;br /&gt;
*&amp;lt;code&amp;gt;PermuteStrand[ASeries, perm]&amp;lt;/code&amp;gt; applies the permutation &amp;lt;code&amp;gt;perm&amp;lt;/code&amp;gt; to the strands of the chord diagrams in the given &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt;. The permutation is to be represented as a list of cycles.&lt;br /&gt;
*&amp;lt;code&amp;gt;Reduce[ASeries]&amp;lt;/code&amp;gt; returns another &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; equivalent to the first modulo the 4T relation. This operation may take some time if the relevant chord diagram spaces need to be computed.&lt;br /&gt;
 &lt;br /&gt;
All these operations will be put to use in the next section.&lt;br /&gt;
&lt;br /&gt;
Finally, to convert an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; back to a human-readable form, use the command: &amp;lt;code&amp;gt;CD[ AS ]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;AS&amp;lt;/code&amp;gt; is the object to be converted. &lt;br /&gt;
&lt;br /&gt;
====Checking the pentagon and hexagon relations====&lt;br /&gt;
&lt;br /&gt;
For paranthesized braids, the pentagon and hexagon equations are given by&lt;br /&gt;
{| align=center width=100%&lt;br /&gt;
|- align=center&lt;br /&gt;
|[[Image:The Pentagon For Parenthesized Braids.jpg|350px]]&lt;br /&gt;
|[[Image:The Hexagons For Parenthesized Braids.jpg|500px]]&lt;br /&gt;
|- align=center&lt;br /&gt;
|colspan=2|&#039;&#039;&#039;The Pentagon and the Hexagons for Parenthesized Braids&#039;&#039;&#039;&lt;br /&gt;
|}.&lt;br /&gt;
&lt;br /&gt;
Algebraically, these relations can be written as&lt;br /&gt;
&lt;br /&gt;
{{Equation|Pentagon|&amp;lt;math&amp;gt;\Phi^{123}\cdot(1\otimes\Delta\otimes 1)(\Phi)\cdot\Phi^{234}=(\Delta\otimes 1\otimes 1)(\Phi)\cdot(1\otimes 1\otimes\Delta)(\Phi)&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_4&amp;lt;/math&amp;gt;,}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Equation|Hexagons|&amp;lt;math&amp;gt;(\Delta\otimes 1)(R^{\pm 1}) = \Phi^{123}\cdot (R^{\pm 1})^{23}\cdot(\Phi^{-1})^{132}\cdot(R^{\pm 1})^{13}\cdot\Phi^{312}&amp;lt;/math&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;in&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;math&amp;gt;A_3&amp;lt;/math&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;A_n&amp;lt;/math&amp;gt; is the algebra of chord diagrams on &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; strands modulo the 4-T relations.&lt;br /&gt;
&lt;br /&gt;
Let us check that a proposed pair &amp;lt;math&amp;gt;\{R, \Phi\}&amp;lt;/math&amp;gt; satisfy these equations. After running through the initialization above, we introduce our candidates:&lt;br /&gt;
{{In|n=3|&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1629</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1629"/>
		<updated>2006-07-27T23:43:38Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
These steps must be followed at the start of each Mathematica session you wish to use this package.&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T relations====&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java as much as possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. To create one, use the command &amp;lt;code&amp;gt;ASeries[CDcombo, l, m]&amp;lt;/code&amp;gt;, where &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt; is a linear combination of chord diagrams (represented by &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt;&#039;s, and possibly a constant term), all of which are on a fixed skeleton of &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, and may have a different number of chords. It is important to note that an &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; carries with it the notion of an order, defined implicitly by the maximum number of chords to appear in a diagram in &amp;lt;code&amp;gt;CDcombo&amp;lt;/code&amp;gt;; the result of any and all computations are only given up to the lowest order appearing therein. (Soon to come: option to explicitly specify order).&lt;br /&gt;
&lt;br /&gt;
Operations: +, . , invert (only of form 1 + ...), AddStrand, DoubleStrand, PermuteStrand[{{..},{..}}], Reduce&lt;br /&gt;
&lt;br /&gt;
CD[AS_ASeries] converts back.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1628</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1628"/>
		<updated>2006-07-27T23:21:19Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
====Initialization====&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====Representing Chord Diagrams====&lt;br /&gt;
Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
This package also allows for formal linear combinations of &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
====Computing chord diagram spaces modulo 4T relations====&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One can also obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
====Using &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; objects====&lt;br /&gt;
Because operations on chord diagrams (such as multiplication and reduction) can often be resource-intensive, it is desirable to work with representations in Java to the greatest extent possible. The &amp;lt;code&amp;gt;ASeries&amp;lt;/code&amp;gt; object is meant to facilitate this. One can create an &lt;br /&gt;
&lt;br /&gt;
==Performance Issues==&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1627</id>
		<title>VasCalc - Progress Log</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1627"/>
		<updated>2006-07-27T23:07:28Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the [[VasCalc - A Vassiliev Invariants Calculator|VasCalc Project]] Progress Log.&lt;br /&gt;
====Thursday July 27 2006====&lt;br /&gt;
We&#039;re now able to verify solutions to the pentagon and hexagon equations, in the process changing the interface around a bit. As usual, the [[VasCalc Documentation - ChordsMod4T|documentation]] contains details.&lt;br /&gt;
====Monday July 17 2006====&lt;br /&gt;
The ChordsMod4T interface has been cleaned up a little, and save/load functionality has been added - see the [[VasCalc Documentation - ChordsMod4T|documentation]]. Progress is underway on implementing some operations on chord diagram spaces.&lt;br /&gt;
====Sunday July 9 2006====&lt;br /&gt;
An updated package for the ChordsMod4T program has been posted: [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz]. Now you can work directly with linear combinations of CDs, and reduce them. See the [[VasCalc Documentation - ChordsMod4T|documentation]] for more details. &lt;br /&gt;
====Friday July 7 2006====&lt;br /&gt;
So the little bug in ChordsMod4T appears to be resolved. The [[VasCalc - Results| results]] pages no longer directly disprove the consistency of mathematics. Also the program is a fair bit faster than the previous incarnation, but coefficient arithmetic is still by far the biggest resource thief.&lt;br /&gt;
&lt;br /&gt;
====Friday June 23 2006====&lt;br /&gt;
Success! Our program is now complete - we can generate the relations, and compute the quotient . What remains is the interface to Mathematica, which should be easy, and optimizing the program, which may be a little harder. A little example will be up soon. &lt;br /&gt;
&lt;br /&gt;
====Tuesday June 20 2006====&lt;br /&gt;
Now we are able to generate all chord diagrams on a given number of lines and circles, as well as all the diagrams with a T added! Almost done is the piece that puts the two together - the ChordsMod4T class, which mods out the first space with the relations generated by the second. There are still many things to be done with this part of the program before we&#039;re truly finished: I&#039;ve listed these on the [[VasCalc - To Do List]] page. Fun fact: there are 902 chord diagrams on one circle with 6 chords, 9749 diagrams with 7 chords, and 127072 diagrams with 8 chords. Evidently, we&#039;ll have to make some improvements to the program - generating one circle with 9 chords runs out of memory.&lt;br /&gt;
====Saturday June 17 2006====&lt;br /&gt;
The [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram class] is now up and running. As explained in the [[VasCalc Documentation - ChordDiagram| documentation]], this class is used to store information about individual chord diagrams. Because of the way we&#039;ve set up labelling the diagrams, the task of generating all diagrams becomes very easy - this part of the program is almost done as well. &lt;br /&gt;
====Tuesday May 30 2006====&lt;br /&gt;
A new file [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram.java] was committed to the repository. This is a class that holds information describing one chord diagram and contains methods that will help in constructing chord diagrams systematically. It is not yet complete, though not far from it. &lt;br /&gt;
====Monday May 29 2006====&lt;br /&gt;
I&#039;ve updated the vectorSpace package, and added a Mathematica interface, as well an almost complete [[VasCalc  Documentation - vectorSpace|document]] on the wiki. Can someone check that the instructions for installation work?&lt;br /&gt;
Also, does the simulated Mathematica session work on this wiki?&lt;br /&gt;
====Wednesday May 24 2006====&lt;br /&gt;
A new package [http://katlas.math.toronto.edu/svn/VasCalc/trunk/vectorSpace vectorSpace] has been committed to the repository, to handle quotients of finite-dimensional vector spaces. See the [[VasCalc - Documentation|documentation]] for usage details.&lt;br /&gt;
====Saturday May 20 2006====&lt;br /&gt;
Our first task is to write a program to construct and manipulate the (formal) quotient vector space A(m,n,l), consisting of diagrams with m chords between n lines and l circles, modulo the four-T relations. Here&#039;s a rough sketch of the structure of this program:&lt;br /&gt;
&lt;br /&gt;
[[Image:Dmod4T.jpg|thumb|120px|left]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Java things are in orange, Mathematica things are in blue. Red arrows are helper functions that need to be written, and black arrows denote &amp;quot;natural class heirarchy&amp;quot;. &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monday May 15 2006====&lt;br /&gt;
Another slightly different HelloWorld test has been added to the [http://katlas.math.toronto.edu/svn/VasCalc/trunk/  SVN repository]. This time, one can use the default Java runtime bundled with Mathematica/Windows (so the user does not need to know anything about where Java lives on their system) by telling the Java compiler to produce code for Java 1.4. This is accomplished by issuing the command:&lt;br /&gt;
:&amp;lt;code&amp;gt;javac -source 1.4 -target 1.4 file_to_be_compiled.java &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I suppose this prevents us from using the new features of Java 1.5, but I don&#039;t know what they are.&lt;br /&gt;
&lt;br /&gt;
As for the test program, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/javatest.m javatest.m] and [http://katlas.math.toronto.edu/svn/VasCalc/trunk/test1.class test1.class], and issue the following commands in Mathematica (replacing the &#039;/path_to_files&#039; with the location you downloaded the files to, and don&#039;t forget the quotes in the second line):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; &amp;lt;&amp;lt; /path_to_files/javatest.m &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; HelloWorld[VasCalcPath -&amp;gt; &amp;quot;/path_to_files&amp;quot;] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and read your mystery message!&lt;br /&gt;
&lt;br /&gt;
==== Sunday May 14 2006====&lt;br /&gt;
J/Link passed the Hello World test. The java class and Mathematica&lt;br /&gt;
notebook were commited to the repository trunk. Note the Mathematica file&lt;br /&gt;
must be edited in order to specify the path to java and the class.&lt;br /&gt;
In order to get it to work I had to tweak a few things:&lt;br /&gt;
* The JRE bin directory had to be added to the PATH. The JDK path is not enough because J/Link looks for files like jawt.dll and awt.dll that don&#039;t come with JDK.&lt;br /&gt;
* HelloWorld.class had to be in one of the dirs in CLASSPATH, because J/Link loads classes only through their full class name.&lt;br /&gt;
* In Mathematica, when running InstallJava[], it was necessary to specify the path name for a newer version of java.exe. By default it runs the Windows java, which didn&#039;t run what was compiled with a new JDK. &lt;br /&gt;
&lt;br /&gt;
Ideally, one would like to write a Mathematica notebook without&lt;br /&gt;
any hardcoded paths that others can use with no changes. Is this&lt;br /&gt;
possible?&lt;br /&gt;
&lt;br /&gt;
==== Thursday May 11 20006====&lt;br /&gt;
* First day meeting&#039;s blackboard: [[Image:060511-1.jpg|thumb|160px|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1608</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1608"/>
		<updated>2006-07-17T22:52:51Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
===Usage===&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
Note: Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
&lt;br /&gt;
One can obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[ CDSpace[1,1,3] ]&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;ReduceCD[ Diagrams]&amp;lt;/code&amp;gt; will take a linear combination of chord diagrams, and return another linear combination that is equivalent to the first up to the relations defined. The relevant spaces will be computed automatically. For example:&lt;br /&gt;
{{In|n=5|in=&amp;lt;nowiki&amp;gt;cd = 4 CD[Line[1, 2, 2, 1, 3], Circle[3]] + CD[Line[1, 2, 2, 3, 3, 1], Circle[]];&amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;ReduceCD[cd]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;4 CD[Line[1, 2, 3, 3, 2], Circle[1]] + CD[Line[1, 2, 3, 3, 2, 1], Circle[]]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===Performance Issues===&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1607</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1607"/>
		<updated>2006-07-17T22:44:00Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
You must also ensure that there is a directory named &amp;quot;CM4TData&amp;quot; under the installation directory, creating it if neccessary. This is for save/load functionality to work properly.&lt;br /&gt;
===Usage===&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The object &amp;lt;code&amp;gt;CDSpace[l,m,n]&amp;lt;/code&amp;gt; represents the rational vector space generated by chord diagrams with &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; chords on a skeleton with &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt; lines and &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; circles, modulo the 4-T relation. The first time a space is encountered in a session, a check is made to see if there is data for the required space on disc (under the path_to_install_folder/CM4TData directory). If no such entry exists, the space is computed, and by default the results are saved on disc for future use - this computation may be substantial, depending on the values of the parameters. One can prevent the saving of data by using the command &amp;lt;code&amp;gt;CDSpace[l,m,n, WriteToDisc -&amp;gt; False] &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
One can obtain the dimension of a chord diagram space, as follows:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=3|in = &amp;lt;nowiki&amp;gt;GetDimension[CDSpace[1,1,3]]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
Note: Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
&lt;br /&gt;
One can obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=4| in=&amp;lt;nowiki&amp;gt;GetCDBasis[CDSpace[1,1,3] &amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;ReduceCD[ Diagrams]&amp;lt;/code&amp;gt; will take a linear combination of chord diagrams, and return another linear combination that is equivalent to the first up to the relations defined. The relevant spaces will be computed automatically. For example:&lt;br /&gt;
{{In|n=5|in=&amp;lt;nowiki&amp;gt;cd = 4 CD[Line[1, 2, 2, 1, 3], Circle[3]] + CD[Line[1, 2, 2, 3, 3, 1], Circle[]];&amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
{{InOut|n=6|in=&amp;lt;nowiki&amp;gt;ReduceCD[cd]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;4 CD[Line[1, 2, 3, 3, 2], Circle[1]] + CD[Line[1, 2, 3, 3, 2, 1], Circle[]]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===Performance Issues===&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1606</id>
		<title>VasCalc - Progress Log</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1606"/>
		<updated>2006-07-17T22:24:23Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the [[VasCalc - A Vassiliev Invariants Calculator|VasCalc Project]] Progress Log.&lt;br /&gt;
====Monday July 17 2006====&lt;br /&gt;
The ChordsMod4T interface has been cleaned up a little, and save/load functionality has been added - see the [[VasCalc Documentation - ChordsMod4T|documentation]]. Progress is underway on implementing some operations on chord diagram spaces.&lt;br /&gt;
====Sunday July 9 2006====&lt;br /&gt;
An updated package for the ChordsMod4T program has been posted: [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz]. Now you can work directly with linear combinations of CDs, and reduce them. See the [[VasCalc Documentation - ChordsMod4T|documentation]] for more details. &lt;br /&gt;
====Friday July 7 2006====&lt;br /&gt;
So the little bug in ChordsMod4T appears to be resolved. The [[VasCalc - Results| results]] pages no longer directly disprove the consistency of mathematics. Also the program is a fair bit faster than the previous incarnation, but coefficient arithmetic is still by far the biggest resource thief.&lt;br /&gt;
&lt;br /&gt;
====Friday June 23 2006====&lt;br /&gt;
Success! Our program is now complete - we can generate the relations, and compute the quotient . What remains is the interface to Mathematica, which should be easy, and optimizing the program, which may be a little harder. A little example will be up soon. &lt;br /&gt;
&lt;br /&gt;
====Tuesday June 20 2006====&lt;br /&gt;
Now we are able to generate all chord diagrams on a given number of lines and circles, as well as all the diagrams with a T added! Almost done is the piece that puts the two together - the ChordsMod4T class, which mods out the first space with the relations generated by the second. There are still many things to be done with this part of the program before we&#039;re truly finished: I&#039;ve listed these on the [[VasCalc - To Do List]] page. Fun fact: there are 902 chord diagrams on one circle with 6 chords, 9749 diagrams with 7 chords, and 127072 diagrams with 8 chords. Evidently, we&#039;ll have to make some improvements to the program - generating one circle with 9 chords runs out of memory.&lt;br /&gt;
====Saturday June 17 2006====&lt;br /&gt;
The [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram class] is now up and running. As explained in the [[VasCalc Documentation - ChordDiagram| documentation]], this class is used to store information about individual chord diagrams. Because of the way we&#039;ve set up labelling the diagrams, the task of generating all diagrams becomes very easy - this part of the program is almost done as well. &lt;br /&gt;
====Tuesday May 30 2006====&lt;br /&gt;
A new file [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram.java] was committed to the repository. This is a class that holds information describing one chord diagram and contains methods that will help in constructing chord diagrams systematically. It is not yet complete, though not far from it. &lt;br /&gt;
====Monday May 29 2006====&lt;br /&gt;
I&#039;ve updated the vectorSpace package, and added a Mathematica interface, as well an almost complete [[VasCalc  Documentation - vectorSpace|document]] on the wiki. Can someone check that the instructions for installation work?&lt;br /&gt;
Also, does the simulated Mathematica session work on this wiki?&lt;br /&gt;
====Wednesday May 24 2006====&lt;br /&gt;
A new package [http://katlas.math.toronto.edu/svn/VasCalc/trunk/vectorSpace vectorSpace] has been committed to the repository, to handle quotients of finite-dimensional vector spaces. See the [[VasCalc - Documentation|documentation]] for usage details.&lt;br /&gt;
====Saturday May 20 2006====&lt;br /&gt;
Our first task is to write a program to construct and manipulate the (formal) quotient vector space A(m,n,l), consisting of diagrams with m chords between n lines and l circles, modulo the four-T relations. Here&#039;s a rough sketch of the structure of this program:&lt;br /&gt;
&lt;br /&gt;
[[Image:Dmod4T.jpg|thumb|120px|left]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Java things are in orange, Mathematica things are in blue. Red arrows are helper functions that need to be written, and black arrows denote &amp;quot;natural class heirarchy&amp;quot;. &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monday May 15 2006====&lt;br /&gt;
Another slightly different HelloWorld test has been added to the [http://katlas.math.toronto.edu/svn/VasCalc/trunk/  SVN repository]. This time, one can use the default Java runtime bundled with Mathematica/Windows (so the user does not need to know anything about where Java lives on their system) by telling the Java compiler to produce code for Java 1.4. This is accomplished by issuing the command:&lt;br /&gt;
:&amp;lt;code&amp;gt;javac -source 1.4 -target 1.4 file_to_be_compiled.java &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I suppose this prevents us from using the new features of Java 1.5, but I don&#039;t know what they are.&lt;br /&gt;
&lt;br /&gt;
As for the test program, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/javatest.m javatest.m] and [http://katlas.math.toronto.edu/svn/VasCalc/trunk/test1.class test1.class], and issue the following commands in Mathematica (replacing the &#039;/path_to_files&#039; with the location you downloaded the files to, and don&#039;t forget the quotes in the second line):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; &amp;lt;&amp;lt; /path_to_files/javatest.m &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; HelloWorld[VasCalcPath -&amp;gt; &amp;quot;/path_to_files&amp;quot;] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and read your mystery message!&lt;br /&gt;
&lt;br /&gt;
==== Sunday May 14 2006====&lt;br /&gt;
J/Link passed the Hello World test. The java class and Mathematica&lt;br /&gt;
notebook were commited to the repository trunk. Note the Mathematica file&lt;br /&gt;
must be edited in order to specify the path to java and the class.&lt;br /&gt;
In order to get it to work I had to tweak a few things:&lt;br /&gt;
* The JRE bin directory had to be added to the PATH. The JDK path is not enough because J/Link looks for files like jawt.dll and awt.dll that don&#039;t come with JDK.&lt;br /&gt;
* HelloWorld.class had to be in one of the dirs in CLASSPATH, because J/Link loads classes only through their full class name.&lt;br /&gt;
* In Mathematica, when running InstallJava[], it was necessary to specify the path name for a newer version of java.exe. By default it runs the Windows java, which didn&#039;t run what was compiled with a new JDK. &lt;br /&gt;
&lt;br /&gt;
Ideally, one would like to write a Mathematica notebook without&lt;br /&gt;
any hardcoded paths that others can use with no changes. Is this&lt;br /&gt;
possible?&lt;br /&gt;
&lt;br /&gt;
==== Thursday May 11 20006====&lt;br /&gt;
* First day meeting&#039;s blackboard: [[Image:060511-1.jpg|thumb|160px|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Results_-_ChordMod4T&amp;diff=1584</id>
		<title>VasCalc Results - ChordMod4T</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Results_-_ChordMod4T&amp;diff=1584"/>
		<updated>2006-07-10T16:48:00Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents some computational results obtained by using the &amp;lt;b&amp;gt;ChordsMod4T&amp;lt;/b&amp;gt; software component of the [[VasCalc]] project. We denote by &amp;lt;math&amp;gt;{\mathcal A}(l,m,n)&amp;lt;/math&amp;gt; the formal (rational) vector space generated by all chord diagrams with &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; chords on a skeleton of &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; lines and &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; circles, modulo the &amp;lt;math&amp;gt;4T&amp;lt;/math&amp;gt; relations. The algorithm is straightforward: first all such diagrams are constructed, then relations are introduced iteratively over all possible terms in a &amp;lt;math&amp;gt;4T&amp;lt;/math&amp;gt; relation. See the [[VasCalc Documentation - ChordsMod4T| documentation]] for further information about the program and how these results were generated.&lt;br /&gt;
&lt;br /&gt;
===Some Dimensions of &amp;lt;math&amp;gt;{\mathcal A}(l,m,n)&amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
The tables below give the dimensions of &amp;lt;math&amp;gt;{\mathcal A}(l,m,n)&amp;lt;/math&amp;gt; for various values of &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Each table corresponds to a fixed value of &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - that is, the number of chords. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is work in progress - these numbers are not reliable yet!!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Dimensions of chord diagram spaces with 2 chords&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; width=&amp;quot;100px&amp;quot;|Number of Lines&lt;br /&gt;
!colspan=&amp;quot;10&amp;quot;|Number of Circles&lt;br /&gt;
|- align=right&lt;br /&gt;
||0||1||2||3||4||5||6||7||8||9&lt;br /&gt;
|- align=right&lt;br /&gt;
|0||0|| 2||8||24||59||125||237||413||674||1044&lt;br /&gt;
|- align=right&lt;br /&gt;
|1||2||8||24||59||125||237||413||674||1044||1550&lt;br /&gt;
|- align=right&lt;br /&gt;
|2||9||25||60||126||238||414||675||1045||1551||2223&lt;br /&gt;
|- align=right&lt;br /&gt;
|3||28||63||129||241||417||678||1048||1554||2226||3097&lt;br /&gt;
|- align=right&lt;br /&gt;
|4||69||135||247||423||684||1054||1560||2232||3103||4209&lt;br /&gt;
|- align=right&lt;br /&gt;
|5||145||257||433||694||1064||1570||2242||3113||4219||5599&lt;br /&gt;
|- align=right&lt;br /&gt;
|6||272||448||709||1079||1585||2257||3128||4234||5614||7310&lt;br /&gt;
|- align=right&lt;br /&gt;
|7||469||730||1100||1606||2278||3149||4255||5635||7331||9388&lt;br /&gt;
|- align=right&lt;br /&gt;
|8||758||1128||1634||2306||3177||4283||5663||7359||9416||11882&lt;br /&gt;
|- align=right&lt;br /&gt;
|9||1164||1670||2342||3213||4319||5699||7395||9452||11918||14844&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+ Dimensions of chord diagram spaces with 3 chords&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; width=&amp;quot;100px&amp;quot;|Number of Lines&lt;br /&gt;
!colspan=&amp;quot;7&amp;quot;|Number of Circles&lt;br /&gt;
|- align=right&lt;br /&gt;
&lt;br /&gt;
|0||1||2||3||4||5||6&lt;br /&gt;
|- align=right&lt;br /&gt;
|0||0||3||19||80||270||770||1918&lt;br /&gt;
|- align=right&lt;br /&gt;
|1||3||19||80||270||770||1918||4284&lt;br /&gt;
|- align=right&lt;br /&gt;
|2||23||88||283||789||1944||4318||8803&lt;br /&gt;
|- align=right&lt;br /&gt;
|3||111||321||845||2021||4419||8931||16876&lt;br /&gt;
|- align=right&lt;br /&gt;
|4||394||954||2172||4618||9184||17189&lt;br /&gt;
|- align=right&lt;br /&gt;
|5||1130||2418||4944||9600||17705||31125&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Dimensions of chord diagram spaces with 4 chords&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; width=&amp;quot;100px&amp;quot;|Number of Lines&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|Number of Circles&lt;br /&gt;
|- align=right&lt;br /&gt;
&lt;br /&gt;
|0||1||2||3||4&lt;br /&gt;
|- align=right&lt;br /&gt;
|0||0|| 6||44||241||1063&lt;br /&gt;
|- align=right&lt;br /&gt;
|1||6||44||241||1063||3930&lt;br /&gt;
|- align=right&lt;br /&gt;
|2||60||283||1160||4126&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Results_-_ChordMod4T&amp;diff=1583</id>
		<title>VasCalc Results - ChordMod4T</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Results_-_ChordMod4T&amp;diff=1583"/>
		<updated>2006-07-10T16:47:32Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents some computational results obtained by using the &amp;lt;b&amp;gt;ChordsMod4T&amp;lt;/b&amp;gt; software component of the [[VasCalc]] project. We denote by &amp;lt;math&amp;gt;{\mathcal A}(l,m,n)&amp;lt;/math&amp;gt; the formal (rational) vector space generated by all chord diagrams with &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; chords on a skeleton of &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; lines and &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; circles, modulo the &amp;lt;math&amp;gt;4T&amp;lt;/math&amp;gt; relations. The algorithm is straightforward: first all such diagrams are constructed, then relations are introduced iteratively over all possible terms in a &amp;lt;math&amp;gt;4T&amp;lt;/math&amp;gt; relation. See the [[VasCalc Documentation - ChordsMod4T| documentation]] for further information about the program and how these results were generated.&lt;br /&gt;
&lt;br /&gt;
===Some Dimensions of &amp;lt;math&amp;gt;{\mathcal A}(l,m,n)&amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
The tables below give the dimensions of &amp;lt;math&amp;gt;{\mathcal A}(l,m,n)&amp;lt;/math&amp;gt; for various values of &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Each table corresponds to a fixed value of &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - that is, the number of chords. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is work in progress - these numbers are not reliable yet!!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Dimensions of chord diagram spaces with 2 chords&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; width=&amp;quot;100px&amp;quot;|Number of Lines&lt;br /&gt;
!colspan=&amp;quot;10&amp;quot;|Number of Circles&lt;br /&gt;
|- align=right&lt;br /&gt;
||0||1||2||3||4||5||6||7||8||9&lt;br /&gt;
|- align=right&lt;br /&gt;
|0||0|| 2||8||24||59||125||237||413||674||1044&lt;br /&gt;
|- align=right&lt;br /&gt;
|1||2||8||24||59||125||237||413||674||1044||1550&lt;br /&gt;
|- align=right&lt;br /&gt;
|2||9||25||60||126||238||414||675||1045||1551||2223&lt;br /&gt;
|- align=right&lt;br /&gt;
|3||28||63||129||241||417||678||1048||1554||2226||3097&lt;br /&gt;
|- align=right&lt;br /&gt;
|4||69||135||247||423||684||1054||1560||2232||3103||4209&lt;br /&gt;
|- align=right&lt;br /&gt;
|5||145||257||433||694||1064||1570||2242||3113||4219||5599&lt;br /&gt;
|- align=right&lt;br /&gt;
|6||272||448||709||1079||1585||2257||3128||4234||5614||7310&lt;br /&gt;
|- align=right&lt;br /&gt;
|7||469||730||1100||1606||2278||3149||4255||5635||7331||9388&lt;br /&gt;
|- align=right&lt;br /&gt;
|8||758||1128||1634||2306||3177||4283||5663||7359||9416||11882&lt;br /&gt;
|- align=right&lt;br /&gt;
|9||1164||1670||2342||3213||4319||5699||7395||9452||11918||14844&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+ Dimensions of chord diagram spaces with 3 chords&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; width=&amp;quot;100px&amp;quot;|Number of Lines&lt;br /&gt;
!colspan=&amp;quot;7&amp;quot;|Number of Circles&lt;br /&gt;
|- align=right&lt;br /&gt;
&lt;br /&gt;
|0||1||2||3||4||5||6&lt;br /&gt;
|- align=right&lt;br /&gt;
|0||0||3||19||80||270||770||1918&lt;br /&gt;
|- align=right&lt;br /&gt;
|1||3||19||80||270||770||1918||4284&lt;br /&gt;
|- align=right&lt;br /&gt;
|2||23||88||283||789||1944||4318||8803&lt;br /&gt;
|- align=right&lt;br /&gt;
|3||111||321||845||2021||4419||8931||16876&lt;br /&gt;
|- align=right&lt;br /&gt;
|4||394||954||2172||4618||9184||17189&lt;br /&gt;
|- align=right&lt;br /&gt;
|5||1130||2418||4944||9600||17705||31125&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Dimensions of chord diagram spaces with 4 chords&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; width=&amp;quot;100px&amp;quot;|Number of Lines&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot;|Number of Circles&lt;br /&gt;
|- align=right&lt;br /&gt;
&lt;br /&gt;
|0||1||2||3||4||5&lt;br /&gt;
|- align=right&lt;br /&gt;
|0||0|| 6||44||241||1063&lt;br /&gt;
|- align=right&lt;br /&gt;
|1||6||44||241||1063||3930&lt;br /&gt;
|- align=right&lt;br /&gt;
|2||60||283||1160||4126&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1582</id>
		<title>VasCalc Documentation - User&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Documentation_-_User%27s_Guide&amp;diff=1582"/>
		<updated>2006-07-09T17:12:40Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the ChordsMod4T component of the [[VasCalc]] project. This page is also under construction.&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
This package provides a Mathematica interface to work with the space generated by chord diagrams on a fixed skeleton of lines and circles, modulo the 4-T relation. See Dror Bar-Natan&#039;s [[Survey of Finite Type Invariants]] for further details. &lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
The software requirements of this package are Mathematica 4.1 and Java 1.4 (or greater, in both cases). However, note that default installations of Mathematica 4.1 and up include a Java runtime binary, and require no further configuration for this package to work. &lt;br /&gt;
&lt;br /&gt;
While there are no specific hardware requirements, the computations involved are rather resource-intensive. Users of low-end machines will see a smaller range of parameters for which the computation is practicable. We&#039;ll have an expected performance profile once work on this package is done.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
If you have an up-to-date copy of the [http://katlas.math.toronto.edu/svn/VasCalc/ repository], skip ahead. If not, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz] and extract it to a directory of your choice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usage===&lt;br /&gt;
In a Mathematica session, load the definitions by typing:&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt; &amp;lt;&amp;lt;/path_to_install_folder/CDinterface.m &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
where &amp;quot;path_to_install_folder&amp;quot; is either the &amp;quot;trunk&amp;quot; folder of the repository, or the folder in which the above archive, if downloaded, was unpacked.&lt;br /&gt;
&lt;br /&gt;
You must also issue the following command, to inform Mathematica of the location of the required Java objects:&lt;br /&gt;
&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt; SetVasCalcPath[&amp;quot;/path_to_install_folder&amp;quot;]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Use the command CreateCDSpace[ lines, circles, chords], to generate the space of chord diagrams with the given parameters, modulo the 4T relations. For example, we construct the space of diagrams with 3 chords on a skeleton of 1 line and 1 circle:&lt;br /&gt;
&lt;br /&gt;
{{In|n=3|in=&amp;lt;nowiki&amp;gt; A = CreateCDSpace[1,1,3]; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
One can then find the dimension of the resultant space:&lt;br /&gt;
&lt;br /&gt;
{{InOut|n=4|in = &amp;lt;nowiki&amp;gt;GetDimension[A]&amp;lt;/nowiki&amp;gt;|out=19}}&lt;br /&gt;
&lt;br /&gt;
Note: Our convention for representing a chord diagram in Mathematica is through a &amp;lt;code&amp;gt;CD&amp;lt;/code&amp;gt; object containing &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Circle&amp;lt;/code&amp;gt; expressions as per the skeleton. To construct such a representation,&lt;br /&gt;
* Number the chords on the diagram. &lt;br /&gt;
* For each line on the skeleton, put within the brackets of its &amp;lt;code&amp;gt;Line&amp;lt;/code&amp;gt; expression the numbers of the chords that have their endpoints on that line, starting from the bottom and working up. For each circle, do the same, but one can choose an arbitrary starting point and count around. If there are no chords on a given line or circle, leave the brackets empty, as in &amp;lt;code&amp;gt;Line[]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Naturally, there are many representations for a given diagram. &lt;br /&gt;
&lt;br /&gt;
One can obtain a basis for a chord diagram space (modulo 4T), expressed as a list of chord diagrams:&lt;br /&gt;
{{InOut|n=5| in=&amp;lt;nowiki&amp;gt;GetCDBasis[A] &amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
out=&amp;lt;nowiki&amp;gt;{CD[Line[1, 1], Circle[2, 2, 3, 3]], CD[Line[1, 1], Circle[2, 3, 2, 3]], &lt;br /&gt;
  CD[Line[1], Circle[1, 2, 3, 2, 3]], CD[Line[1], Circle[1, 2, 3, 3, 2]], &lt;br /&gt;
  CD[Line[], Circle[1, 1, 2, 3, 3, 2]], CD[Line[1, 2, 1, 2], Circle[3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 1, 3, 2, 3]], CD[Line[1, 2], Circle[1, 3, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 2, 1], Circle[3, 3]], CD[Line[1, 2, 2], Circle[1, 3, 3]], &lt;br /&gt;
  CD[Line[], Circle[1, 2, 3, 1, 2, 3]], CD[Line[1, 2, 3], Circle[1, 3, 2]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 1, 3], Circle[]], CD[Line[1, 2, 3, 2], Circle[1, 3]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3], Circle[1, 2]], CD[Line[1, 2, 3, 2, 3, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 2, 3], Circle[1]], CD[Line[1, 2, 3, 3, 2, 1], Circle[]], &lt;br /&gt;
  CD[Line[1, 2, 3, 3, 2], Circle[1]]} &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
The command &amp;lt;code&amp;gt;ReduceCD[ Diagrams, CDSpace]&amp;lt;/code&amp;gt; will take a linear combination of chord diagrams, and return another linear combination that is equivalent to the first up to the relations defined. One also needs  to pass on the chord diagram space in which the action takes place. For example:&lt;br /&gt;
{{In|n=6|in=&amp;lt;nowiki&amp;gt;cd = 4 CD[Line[1, 2, 2, 1, 3], Circle[3]] + CD[Line[1, 2, 2, 3, 3, 1], Circle[]];&amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
{{InOut|n=7|in=&amp;lt;nowiki&amp;gt;ReduceCD[cd,A]&amp;lt;/nowiki&amp;gt;|out=&amp;lt;nowiki&amp;gt;4 CD[Line[1, 2, 3, 3, 2], Circle[1]] + CD[Line[1, 2, 3, 3, 2, 1], Circle[]]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===Performance Issues===&lt;br /&gt;
&lt;br /&gt;
We are currently working to improve the performance of this program. For larger computations, it would likely help to increase the maximum heap size available to Java. To do this, type the following into Mathematica &amp;lt;i&amp;gt;before&amp;lt;/i&amp;gt; loading the CDinterface.m definitions (step 1 above):&lt;br /&gt;
&lt;br /&gt;
{{In|n=1|in=&amp;lt;nowiki&amp;gt;Needs[&amp;quot;JLink`&amp;quot;];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{In|n=2|in=&amp;lt;nowiki&amp;gt;InstallJava[CommandLine -&amp;gt; &amp;quot;/path_to_java_runtime/java -Xmx128M&amp;quot;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This allows Java to use up to 128 megabytes of memory; you may change the number &amp;quot;128&amp;quot; in the parameter &amp;quot;-Xmx128M&amp;quot; to suit your needs. Note that the first line needs to be entered exactly as shown - the funny apostrophe is located next to the &amp;quot;1&amp;quot; key on many keyboards.&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1581</id>
		<title>VasCalc - Progress Log</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_-_Progress_Log&amp;diff=1581"/>
		<updated>2006-07-09T16:29:55Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the [[VasCalc - A Vassiliev Invariants Calculator|VasCalc Project]] Progress Log.&lt;br /&gt;
&lt;br /&gt;
====Sunday July 9 2006====&lt;br /&gt;
An updated package for the ChordsMod4T program has been posted: [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordsMod4T.tar.gz ChordsMod4T.tar.gz]. Now you can work directly with linear combinations of CDs, and reduce them. See the [[VasCalc Documentation - ChordsMod4T|documentation]] for more details. &lt;br /&gt;
====Friday July 7 2006====&lt;br /&gt;
So the little bug in ChordsMod4T appears to be resolved. The [[VasCalc - Results| results]] pages no longer directly disprove the consistency of mathematics. Also the program is a fair bit faster than the previous incarnation, but coefficient arithmetic is still by far the biggest resource thief.&lt;br /&gt;
&lt;br /&gt;
====Friday June 23 2006====&lt;br /&gt;
Success! Our program is now complete - we can generate the relations, and compute the quotient . What remains is the interface to Mathematica, which should be easy, and optimizing the program, which may be a little harder. A little example will be up soon. &lt;br /&gt;
&lt;br /&gt;
====Tuesday June 20 2006====&lt;br /&gt;
Now we are able to generate all chord diagrams on a given number of lines and circles, as well as all the diagrams with a T added! Almost done is the piece that puts the two together - the ChordsMod4T class, which mods out the first space with the relations generated by the second. There are still many things to be done with this part of the program before we&#039;re truly finished: I&#039;ve listed these on the [[VasCalc - To Do List]] page. Fun fact: there are 902 chord diagrams on one circle with 6 chords, 9749 diagrams with 7 chords, and 127072 diagrams with 8 chords. Evidently, we&#039;ll have to make some improvements to the program - generating one circle with 9 chords runs out of memory.&lt;br /&gt;
====Saturday June 17 2006====&lt;br /&gt;
The [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram class] is now up and running. As explained in the [[VasCalc Documentation - ChordDiagram| documentation]], this class is used to store information about individual chord diagrams. Because of the way we&#039;ve set up labelling the diagrams, the task of generating all diagrams becomes very easy - this part of the program is almost done as well. &lt;br /&gt;
====Tuesday May 30 2006====&lt;br /&gt;
A new file [http://katlas.math.toronto.edu/svn/VasCalc/trunk/ChordDiagram.java ChordDiagram.java] was committed to the repository. This is a class that holds information describing one chord diagram and contains methods that will help in constructing chord diagrams systematically. It is not yet complete, though not far from it. &lt;br /&gt;
====Monday May 29 2006====&lt;br /&gt;
I&#039;ve updated the vectorSpace package, and added a Mathematica interface, as well an almost complete [[VasCalc  Documentation - vectorSpace|document]] on the wiki. Can someone check that the instructions for installation work?&lt;br /&gt;
Also, does the simulated Mathematica session work on this wiki?&lt;br /&gt;
====Wednesday May 24 2006====&lt;br /&gt;
A new package [http://katlas.math.toronto.edu/svn/VasCalc/trunk/vectorSpace vectorSpace] has been committed to the repository, to handle quotients of finite-dimensional vector spaces. See the [[VasCalc - Documentation|documentation]] for usage details.&lt;br /&gt;
====Saturday May 20 2006====&lt;br /&gt;
Our first task is to write a program to construct and manipulate the (formal) quotient vector space A(m,n,l), consisting of diagrams with m chords between n lines and l circles, modulo the four-T relations. Here&#039;s a rough sketch of the structure of this program:&lt;br /&gt;
&lt;br /&gt;
[[Image:Dmod4T.jpg|thumb|120px|left]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Java things are in orange, Mathematica things are in blue. Red arrows are helper functions that need to be written, and black arrows denote &amp;quot;natural class heirarchy&amp;quot;. &lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monday May 15 2006====&lt;br /&gt;
Another slightly different HelloWorld test has been added to the [http://katlas.math.toronto.edu/svn/VasCalc/trunk/  SVN repository]. This time, one can use the default Java runtime bundled with Mathematica/Windows (so the user does not need to know anything about where Java lives on their system) by telling the Java compiler to produce code for Java 1.4. This is accomplished by issuing the command:&lt;br /&gt;
:&amp;lt;code&amp;gt;javac -source 1.4 -target 1.4 file_to_be_compiled.java &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I suppose this prevents us from using the new features of Java 1.5, but I don&#039;t know what they are.&lt;br /&gt;
&lt;br /&gt;
As for the test program, download [http://katlas.math.toronto.edu/svn/VasCalc/trunk/javatest.m javatest.m] and [http://katlas.math.toronto.edu/svn/VasCalc/trunk/test1.class test1.class], and issue the following commands in Mathematica (replacing the &#039;/path_to_files&#039; with the location you downloaded the files to, and don&#039;t forget the quotes in the second line):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; &amp;lt;&amp;lt; /path_to_files/javatest.m &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; HelloWorld[VasCalcPath -&amp;gt; &amp;quot;/path_to_files&amp;quot;] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and read your mystery message!&lt;br /&gt;
&lt;br /&gt;
==== Sunday May 14 2006====&lt;br /&gt;
J/Link passed the Hello World test. The java class and Mathematica&lt;br /&gt;
notebook were commited to the repository trunk. Note the Mathematica file&lt;br /&gt;
must be edited in order to specify the path to java and the class.&lt;br /&gt;
In order to get it to work I had to tweak a few things:&lt;br /&gt;
* The JRE bin directory had to be added to the PATH. The JDK path is not enough because J/Link looks for files like jawt.dll and awt.dll that don&#039;t come with JDK.&lt;br /&gt;
* HelloWorld.class had to be in one of the dirs in CLASSPATH, because J/Link loads classes only through their full class name.&lt;br /&gt;
* In Mathematica, when running InstallJava[], it was necessary to specify the path name for a newer version of java.exe. By default it runs the Windows java, which didn&#039;t run what was compiled with a new JDK. &lt;br /&gt;
&lt;br /&gt;
Ideally, one would like to write a Mathematica notebook without&lt;br /&gt;
any hardcoded paths that others can use with no changes. Is this&lt;br /&gt;
possible?&lt;br /&gt;
&lt;br /&gt;
==== Thursday May 11 20006====&lt;br /&gt;
* First day meeting&#039;s blackboard: [[Image:060511-1.jpg|thumb|160px|left]]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
	<entry>
		<id>https://drorbn.net/index.php?title=VasCalc_Results_-_ChordMod4T&amp;diff=1580</id>
		<title>VasCalc Results - ChordMod4T</title>
		<link rel="alternate" type="text/html" href="https://drorbn.net/index.php?title=VasCalc_Results_-_ChordMod4T&amp;diff=1580"/>
		<updated>2006-07-07T21:40:35Z</updated>

		<summary type="html">&lt;p&gt;Sankaran: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents some computational results obtained by using the &amp;lt;b&amp;gt;ChordsMod4T&amp;lt;/b&amp;gt; software component of the [[VasCalc]] project. We denote by &amp;lt;math&amp;gt;{\mathcal A}(l,m,n)&amp;lt;/math&amp;gt; the formal (rational) vector space generated by all chord diagrams with &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; chords on a skeleton of &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt; lines and &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; circles, modulo the &amp;lt;math&amp;gt;4T&amp;lt;/math&amp;gt; relations. The algorithm is straightforward: first all such diagrams are constructed, then relations are introduced iteratively over all possible terms in a &amp;lt;math&amp;gt;4T&amp;lt;/math&amp;gt; relation. See the [[VasCalc Documentation - ChordsMod4T| documentation]] for further information about the program and how these results were generated.&lt;br /&gt;
&lt;br /&gt;
===Some Dimensions of &amp;lt;math&amp;gt;{\mathcal A}(l,m,n)&amp;lt;/math&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
The tables below give the dimensions of &amp;lt;math&amp;gt;{\mathcal A}(l,m,n)&amp;lt;/math&amp;gt; for various values of &amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Each table corresponds to a fixed value of &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - that is, the number of chords. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is work in progress - these numbers are not reliable yet!!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Dimensions of chord diagram spaces with 2 chords&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; width=&amp;quot;100px&amp;quot;|Number of Lines&lt;br /&gt;
!colspan=&amp;quot;10&amp;quot;|Number of Circles&lt;br /&gt;
|- align=right&lt;br /&gt;
||0||1||2||3||4||5||6||7||8||9&lt;br /&gt;
|- align=right&lt;br /&gt;
|0||0|| 2||8||24||59||125||237||413||674||1044&lt;br /&gt;
|- align=right&lt;br /&gt;
|1||2||8||24||59||125||237||413||674||1044||1550&lt;br /&gt;
|- align=right&lt;br /&gt;
|2||9||25||60||126||238||414||675||1045||1551||2223&lt;br /&gt;
|- align=right&lt;br /&gt;
|3||28||63||129||241||417||678||1048||1554||2226||3097&lt;br /&gt;
|- align=right&lt;br /&gt;
|4||69||135||247||423||684||1054||1560||2232||3103||4209&lt;br /&gt;
|- align=right&lt;br /&gt;
|5||145||257||433||694||1064||1570||2242||3113||4219||5599&lt;br /&gt;
|- align=right&lt;br /&gt;
|6||272||448||709||1079||1585||2257||3128||4234||5614||7310&lt;br /&gt;
|- align=right&lt;br /&gt;
|7||469||730||1100||1606||2278||3149||4255||5635||7331||9388&lt;br /&gt;
|- align=right&lt;br /&gt;
|8||758||1128||1634||2306||3177||4283||5663||7359||9416||11882&lt;br /&gt;
|- align=right&lt;br /&gt;
|9||1164||1670||2342||3213||4319||5699||7395||9452||11918||14844&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|+ Dimensions of chord diagram spaces with 3 chords&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; width=&amp;quot;100px&amp;quot;|Number of Lines&lt;br /&gt;
!colspan=&amp;quot;7&amp;quot;|Number of Circles&lt;br /&gt;
|- align=right&lt;br /&gt;
&lt;br /&gt;
|0||1||2||3||4||5||6&lt;br /&gt;
|- align=right&lt;br /&gt;
|0||0||3||19||80||270||770||1918&lt;br /&gt;
|- align=right&lt;br /&gt;
|1||3||19||80||270||770||1918||4284&lt;br /&gt;
|- align=right&lt;br /&gt;
|2||23||88||283||789||1944||4318||8803&lt;br /&gt;
|- align=right&lt;br /&gt;
|3||111||321||845||2021||4419||8931||16876&lt;br /&gt;
|- align=right&lt;br /&gt;
|4||394||954||2172||4618||9184||17189&lt;br /&gt;
|- align=right&lt;br /&gt;
|5||1130||2418||4944||9600||17705||31125&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sankaran</name></author>
	</entry>
</feed>