VasCalc Documentation - An example: Difference between revisions
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 |
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 |
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!