VasCalc Documentation - An example: Difference between revisions

From Drorbn
Jump to navigationJump to search
Line 4: Line 4:


We want to use [[VasCalc]] to verify the third Reidemeister move. This is meant
We want to use [[VasCalc]] to verify the third Reidemeister move. This is meant
as a small example of how to use the [[VasCalc]] package.
as a small example of how to use the VasCalc package.


The first couple of steps are to load up VasCalc.
The first couple of steps are to load up VasCalc.
Line 27: Line 27:
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] </nowiki>}}
«JavaObject[ChordVector]», «JavaObject[ChordVector]»}] </nowiki>}}


Now we define the definition of Z(B(k),n). Where Z stands for our (pseudo) Vassiliev
Now we define the definition of <math>Z(B(k),n)</math>. Where <math>Z</math> stands for our (pseudo) Vassiliev invariant and <math>Z(B(k),n)</math> is the invariant of a braid on <math>n</math> strands with a crossing on the strands <math>k</math> and <math>k+1</math>.
invariant and Z(B(k),n) is the invariant of a braid on n strands with a crossing
on the strands k and k+1.




Line 45: Line 43:
ASeries[tbl, ser[[3]]]]</nowiki>}}
ASeries[tbl, ser[[3]]]]</nowiki>}}


Here we need to make an exception for when k is 1 because the above will not work:
Here we need to make an exception for the case <math>k=1</math> because the above will not work:


{{In|n=7|in=<nowiki>Z[B[1], n_] := Module[{tbl, ser},
{{In|n=7|in=<nowiki>Z[B[1], n_] := Module[{tbl, ser},
Line 54: Line 52:
ASeries[tbl, ser[[3]]]]</nowiki>}}
ASeries[tbl, ser[[3]]]]</nowiki>}}


Now we are ready to verify the move. If Z is an invariant of the Reidemeister three move
Now we are ready to verify the move. If <math>Z</math> is an invariant of the Reidemeister three move
we must have:
we must have:


Line 64: Line 62:


{{InOut|n=8|in=<nowiki>ll = Z[B[3], 6].Z[B[4], 6].Z[B[3], 6]</nowiki>|
{{InOut|n=8|in=<nowiki>ll = Z[B[3], 6].Z[B[4], 6].Z[B[3], 6]</nowiki>|
out=ASeries[{1, 2, 5, 4, 3, 6}, {«JavaObject[vectorSpace.Coefficient]»,
out=<nowiki>ASeries[{1, 2, 5, 4, 3, 6}, {«JavaObject[vectorSpace.Coefficient]»,
«JavaObject[ChordVector]», «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]</nowiki>}}
«JavaObject[ChordVector]», «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]</nowiki>}}




{{InOut|n=9|in=<nowiki>ll = rr = Z[B[4], 6].Z[B[3], 6].Z[B[4], 6]</nowiki>|
{{InOut|n=9|in=<nowiki>ll = rr = Z[B[4], 6].Z[B[3], 6].Z[B[4], 6]</nowiki>|
out=ASeries[{1, 2, 5, 4, 3, 6}, {«JavaObject[vectorSpace.Coefficient]»,
out=<nowiki>ASeries[{1, 2, 5, 4, 3, 6}, {«JavaObject[vectorSpace.Coefficient]»,
«JavaObject[ChordVector]», «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]/nowiki>}}
«JavaObject[ChordVector]», «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]/nowiki>}}



Revision as of 06:22, 16 August 2006

This is an example of how to use VasCalc. We check the third Reidemeister move against an almost-invariant (not a technical term).

The Reidemeister 3 Move

We want to use VasCalc to verify the third Reidemeister move. This is meant as a small example of how to use the VasCalc package.

The first couple of steps are to load up VasCalc.

In[1]:= <<CDinterface.m
In[2]:= SetVasCalcPath["/home/zavosh/vc"];

Now we need to load the definitions of and as defined in Dror's paper on Non-Associative Tangles:

In[3]:= Phi = ASeries[1 + (1/24)*CD[Line[1], Line[2], Line[1, 2]] - (1/24)*CD[Line[2], Line[1], Line[1, 2]], 3, 0, 3]
Out[3]= ASeries[3, 0, {«JavaObject[vectorSpace.Coefficient]», «JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», «JavaObject[vectorSpace.Coefficient]»}]


In[4]:= R = ASeries[1 + (1/2)CD[Line[1], Line[1]] + (1/8)CD[Line[1, 2], Line[1, 2]] + (1/48)CD[Line[1, 2, 3], Line[1, 2, 3]] , 2, 0]
Out[4]= ASeries[2, 0, {«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]

Now we define the definition of . Where stands for our (pseudo) Vassiliev invariant and is the invariant of a braid on strands with a crossing on the strands and .


In[5]:= Clear[Z]
In[6]:= Z[B[k_],n_] /; k > 1 := Module[{ser, tbl}, ser = Nest[AddStrand[#, #[[1]]] &, Nest[DoubleStrand[#, 0] &, Phi, k - 2], n - k - 1]. Nest[AddStrand[#, #[[1]]] &, Nest[AddStrand[#, 0] &, R, k - 1], n - k - 1] . Nest[AddStrand[#, #[[1]]] &, Nest[DoubleStrand[#, 0] &, PermuteStrand[(Phi)^(-1), {{2, 3}}], k - 2], n - k - 1]; tbl = Table[i, {i, ser[[1]]}]; tbl = ReplacePart[tbl, k + 1, k]; tbl = ReplacePart[tbl, k, k + 1]; ASeries[tbl, ser[[3]]]]

Here we need to make an exception for the case because the above will not work:

In[7]:= Z[B[1], n_] := Module[{tbl, ser}, ser = Nest[AddStrand[#, #[[1]]] &, R, n - 2]; tbl = Table[i, {i, ser[[1]]}]; tbl = ReplacePart[tbl, 2, 1]; tbl = ReplacePart[tbl, 1, 2]; ASeries[tbl, ser[[3]]]]

Now we are ready to verify the move. If is an invariant of the Reidemeister three move we must have:

We calculate the right and left hand sides separately.

In[8]:= ll = Z[B[3], 6].Z[B[4], 6].Z[B[3], 6]
Out[8]= ASeries[{1, 2, 5, 4, 3, 6}, {«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]


In[9]:= ll = rr = Z[B[4], 6].Z[B[3], 6].Z[B[4], 6]
Out[9]= 0

Voila!