(*^
::[ Information =
"This is a Mathematica Notebook file. It contains ASCII text, and can be
transferred by email, ftp, or other text-file transfer utility. It should
be read or edited using a copy of Mathematica or MathReader. If you
received this as email, use your mail application or copy/paste to save
everything from the line containing (*^ down to the line containing ^*)
into a plain text file. On some systems you may have to give the file a
name ending with ".ma" to allow Mathematica to recognize it as a Notebook.
The line below identifies what version of Mathematica created this file,
but it can be opened using any other version as well.";
FrontEndVersion = "NeXT Mathematica Notebook Front End Version 2.2";
NeXTStandardFontEncoding;
fontset = title, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e8, 24, "Times"; ;
fontset = subtitle, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e6, 18, "Times"; ;
fontset = subsubtitle, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, italic, L1, e6, 14, "Times"; ;
fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M22, bold, L1, a20, 18, "Times"; ;
fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M19, bold, L1, a15, 14, "Times"; ;
fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteBox, M18, bold, L1, a12, 12, "Times"; ;
fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 10, "Times"; ;
fontset = input, noPageBreakBelow, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeInput, M42, N23, bold, L1, 12, "Courier"; ;
fontset = output, output, inactive, noPageBreakBelow, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 12, "Courier"; ;
fontset = message, inactive, noPageBreakBelow, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ;
fontset = print, inactive, noPageBreakBelow, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ;
fontset = info, inactive, noPageBreakBelow, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1, 12, "Courier"; ;
fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakBelow, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeGraphics, M7, w449, h584, L1, 12, "Courier"; ;
fontset = name, inactive, noPageBreakInGroup, nohscroll, noKeepOnOnePage, preserveAspect, M7, italic, B65535, L1, 10, "Times"; ;
fontset = header, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = leftheader, 12;
fontset = footer, inactive, nohscroll, noKeepOnOnePage, preserveAspect, center, M7, L1, 12;
fontset = leftfooter, 12;
fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 10, "Times"; ;
fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Courier"; ;
fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12;
paletteColors = 128; automaticGrouping; currentKernel;
]
:[font = title; inactive; preserveAspect; startGroup]
Braids
:[font = subtitle; inactive; preserveAspect]
Joe Christy
:[font = subsubtitle; inactive; preserveAspect]
Mathematical Sciences Research Institute,
1000 Centennial Drive,
Berkeley, CA 94720
:[font = text; inactive; preserveAspect; center]
joe@msri.org
:[font = section; inactive; preserveAspect; startGroup]
Introduction
:[font = text; inactive; preserveAspect]
A braid is a collection of stands which weave over and under one another. In Braids.m, a braid is described by a list {{m1,-m2,...,mc},s} for a braid with s strands, where the m1th crosses over the m1+1st, then the m2th crosses under the m2+1st, ... , and finally the mcth crosses over the mc+1st. By joining the ends of the braids in a circle they can be used to represent all knots and links. We can also close up the braid in a slightly different form to get a plat.
:[font = subsection; inactive; preserveAspect; startGroup]
About Braids.m
:[font = text; inactive; preserveAspect; endGroup]
The package Braids.m does the actual drawing. It depends on packages BraidGroup.m and SymmetricGroup.m. Braids.m draws braids as knotted curves and also handles framings which it can depict by ribbons or tubes with the standard meridian and chosen push off forming a grid. Framings are input as a list of numbers, one for each component of the link. They are interpreted as a number of full twists relative to either the mathematician's (homological) framing or the physicist's vertical framing. The parametrizations that underlie the pictures can be adapted to evaluate linking coefficients via Gauss' integral and its generalizations.
:[font = subsection; inactive; preserveAspect; startGroup]
About BraidGroup.m
:[font = text; inactive; preserveAspect; endGroup; endGroup]
By joining the ends of one braid to the beginnings of another we can form a series of groups, indexed by the number of strands, Artin's braid groups. The braid without crossings is the identity element. Conjugacy in this group corresponds to certain isotopies of knots and links. When we also consider adding a single new strand and crossing, moving us from one braid group to the next, we have all isotopies. In other words topological equivalence of links is the same as conjugacy and trading nugatory crossings in the braid group.
:[font = section; inactive; Cclosed; preserveAspect; startGroup]
Initialization
:[font = text; inactive; preserveAspect]
Notice that the Braids package sets Boxed -> False for graphics3D
:[font = input; initialization; preserveAspect]
*)
Needs["BraidGroup`"]
(*
:[font = input; initialization; preserveAspect; endGroup]
*)
Needs["Braids`"]
(*
:[font = section; inactive; Cclosed; preserveAspect; startGroup]
A Ponytail
:[font = input; preserveAspect]
ponyTail = OpenBraid[{{1,-2,1,-2,1,-2},3}];
:[font = input; preserveAspect; endGroup]
Show[ponyTail]
:[font = section; inactive; Cclosed; preserveAspect; startGroup]
Some Simple Braids
:[font = subsection; inactive; Cclosed; preserveAspect; startGroup]
Several faces of the simplest of all knots, the trefoil knot.
:[font = input; preserveAspect]
trefoilKnot1 = ClosedBraid[{{1,1,1},2}, Style -> Tube];
:[font = input; preserveAspect]
Show[trefoilKnot1]
:[font = input; preserveAspect]
trefoilKnot2 = ClosedBraid[{{1,1,1,2},3}, Style -> Ribbon];
:[font = input; preserveAspect]
Show[trefoilKnot2]
:[font = input; preserveAspect]
trefoilKnot3 = Plat[{{-2,-2,-2},3}];
:[font = input; preserveAspect]
Show[trefoilKnot3]
:[font = input; preserveAspect]
trefoilKnot4 = Plat[{{-2,1,-2},3}, Style -> Curve];
:[font = input; preserveAspect; endGroup]
Show[trefoilKnot4]
:[font = subsection; inactive; Cclosed; preserveAspect; startGroup]
The wonderful figure eight knot.
:[font = input; preserveAspect]
figure8Knot = ClosedBraid[{{-1,2,-1,2},3}, Style -> Tube];
:[font = input; preserveAspect; endGroup]
Show[figure8Knot]
:[font = subsection; inactive; Cclosed; preserveAspect; startGroup]
Some Links.
:[font = input; preserveAspect]
HopfLink = ClosedBraid[{{1,1},2}, Style -> Curve];
:[font = input; preserveAspect]
Show[HopfLink]
:[font = input; preserveAspect]
WhiteheadLink = ClosedBraid[{{-1,2,-1,2,2},3},
Style -> Ribbon];
:[font = input; preserveAspect]
Show[WhiteheadLink]
:[font = input; preserveAspect]
borromeanBraid = {{-1,2,-1,2,-1,2},3}
:[font = input; preserveAspect]
borromeanRings = ClosedBraid[borromeanBraid,
Style -> Tube];
:[font = input; preserveAspect; endGroup; endGroup]
Show[borromeanRings]
:[font = section; inactive; Cclosed; preserveAspect; startGroup]
Some Pretty Braids
:[font = subsection; inactive; Cclosed; preserveAspect; startGroup]
More trefoils, with different framings
:[font = input; preserveAspect]
trefoilRibbon = ClosedBraid[{{1,1,1},2},
Style->Ribbon,
Canon->1];
:[font = input; preserveAspect]
Show[trefoilRibbon,
ViewPoint->{0,0,5}]
:[font = input; preserveAspect]
twistedTrefoil = ClosedBraid[{{1,1,1},2},
Style->Tube,
Canon->1,
Framing->{2}];
:[font = input; preserveAspect; endGroup]
Show[twistedTrefoil,
Boxed->False]
:[font = subsection; inactive; Cclosed; preserveAspect; startGroup]
The six crossing knots demonstrate the options to ClosedBraid
:[font = input; preserveAspect]
tubeSix1 = ClosedBraid[{{-1,2,-1,3,-2,3,2},4},
Style -> Curve,
Canon -> 0];
:[font = input; preserveAspect]
Show[tubeSix1,
ViewPoint->{0,0,5}]
:[font = input; preserveAspect]
ribbonSix2 = ClosedBraid[{{-1,2,-1,2,2,2},3},
Style->Ribbon];
:[font = input; preserveAspect]
Show[ribbonSix2,
ViewPoint->{0,0,5}]
:[font = input; preserveAspect]
tubeSix3 = ClosedBraid[{{-1,2,2,-1,-1,2},3},
Style -> Tube];
:[font = input; preserveAspect; endGroup]
Show[tubeSix3]
:[font = subsection; inactive; Cclosed; preserveAspect; startGroup]
The ever popular borromean rings, with a twist
:[font = input; preserveAspect]
borromeanTubes =
ClosedBraid[borromeanBraid,
Style -> Tube,
Framing -> {0,-1,1}];
:[font = input; preserveAspect; endGroup]
Show[borromeanTubes,
ViewPoint->{1,-2,5},Boxed->False]
:[font = subsection; inactive; Cclosed; preserveAspect; startGroup]
The surgery that caps these longitudes with discs produces the smallest known hyperbolic manifold.
:[font = input; preserveAspect]
smallSurgery = ClosedBraid[{{1,-2,1,-2},3},
Style -> Tube,
Framing -> {1,5}];
:[font = input; preserveAspect; endGroup; endGroup]
Show[smallSurgery,
ViewPoint -> {1,3,5},
Boxed -> False]
:[font = section; inactive; Cclosed; preserveAspect; startGroup]
Algebraic versus Geometric simplicity
:[font = text; inactive; preserveAspect]
It should be easy within the framework of BraidGroup.m to implement Garside's solution of the conjugacy problem for braids. Each braid has a canonical representation as a product of a certain number of left half twists and a braid with only right hand crossings.
The canonical form often masks the simplicity of the original braid though.
:[font = subsection; inactive; Cclosed; pageBreak; preserveAspect; startGroup]
Example1
:[font = input; pageBreak; preserveAspect]
Show[OpenBraid[{{1,-2,1,-2},3}, Style -> Curve],
ViewPoint->{0,-5,0}]
:[font = input; preserveAspect; endGroup]
Show[
OpenBraid[
ProductBraid[
InverseBraid[Delta[3]],
InverseBraid[Delta[3]],
{{1,1,2,2,2,1},3}
],
Style -> Curve
],
ViewPoint->{0,-5,0}]
:[font = subsection; inactive; Cclosed; pageBreak; preserveAspect; startGroup]
Example2
:[font = input; preserveAspect]
Show[OpenBraid[{{-1},4}, Style -> Curve],
ViewPoint->{0,-5,0}]
:[font = input; pageBreak; preserveAspect; endGroup; endGroup; endGroup]
Show[
OpenBraid[
ProductBraid[
InverseBraid[Delta[4]],
{{1,2,1,3,2},4}
],
Style -> Curve
],
ViewPoint->{0,-5,0}]
^*)