VasCalc Documentation - An example: Difference between revisions

From Drorbn
Jump to navigationJump to search
 
(4 intermediate revisions by the same user not shown)
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 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.