# VasCalc Documentation - An example

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]:=` `<
 `In[2]:=` `SetVasCalcPath["/home/zavosh/vc"]; `

Now we need to load the definitions of ${\displaystyle \Phi }$ and ${\displaystyle R}$ 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 ${\displaystyle Z(B(k),n)}$. Where ${\displaystyle Z}$ stands for our (pseudo) Vassiliev invariant and ${\displaystyle Z(B(k),n)}$ is the invariant of a braid on ${\displaystyle n}$ strands with a crossing on the strands ${\displaystyle k}$ and ${\displaystyle k+1}$.

 `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 ${\displaystyle k=1}$ 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 ${\displaystyle Z}$ is an invariant of the Reidemeister three move we must have:

${\displaystyle Z(B(k),n).Z(B(k+1),n).Z(B(k),n)=Z(B(k+1),n).Z(B(k),n).Z(B(k+1),n)}$

We calculate the right and left hand sides separately for ${\displaystyle k=3}$ and ${\displaystyle n=6}$.

 `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.