VasCalc Documentation - An example: Difference between revisions

From Drorbn
Jump to navigationJump to search
 
(5 intermediate revisions by the same user not shown)
Line 3: Line 3:
== The Reidemeister 3 Move ==
== The Reidemeister 3 Move ==


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.


Line 13: Line 13:


Now we need to load the definitions of <math>\Phi</math> and <math>R</math> as
Now we need to load the definitions of <math>\Phi</math> and <math>R</math> as
defined in Dror's paper on Non-Associative Tangles:
defined in Dror Bar-Natan's paper on Non-Associative Tangles[http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf]:


{{InOut|n=3|in=<nowiki>Phi = ASeries[1 + (1/24)*CD[Line[1],
{{InOut|n=3|in=<nowiki>Phi = ASeries[1 + (1/24)*CD[Line[1],
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 61: Line 59:
</math>
</math>


We calculate the right and left hand sides separately.
We calculate the right and left hand sides separately for <math>k=3</math> and <math>n=6</math>.


{{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>rr = Z[B[4], 6].Z[B[3], 6].Z[B[4], 6]</nowiki>|

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




Line 78: Line 75:


Voila!
Voila!

==References==
*<nowiki>[1]</nowiki> D. Bar-Natan, [http://www.math.toronto.edu/~drorbn/papers/nat/nat.pdf <i>Non-Associative Tangles</i>]. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.

Latest revision as of 06:32, 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 Bar-Natan's paper on Non-Associative Tangles[1]:

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 for and .

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]:= rr = Z[B[4], 6].Z[B[3], 6].Z[B[4], 6]
Out[9]= ASeries[{1, 2, 5, 4, 3, 6}, {«JavaObject[vectorSpace.Coefficient]», «JavaObject[ChordVector]», «JavaObject[ChordVector]», «JavaObject[ChordVector]»}]


Now to compare:

In[10]:= CD[Reduce[ll - rr]]
Out[10]= 0

Voila!

References

  • [1] D. Bar-Natan, Non-Associative Tangles. Geometric Topology (proceedings of the Georgia International Topology Conference, W. H. Kazez ed.), 139-183, Amer. Math. Soc. and International Press, Providence, 1997.