Snappea Tutorial
This tutorial walks you through the most useful features of
the 'snappea' (pronounced "snap pea", like the vegetable) hyperbolic
structures programs.
[ UNIX users: snappea sometimes writes things out to files, and it
always does this relative to the directory from which you invoke it.
Sometimes the files go into subdirectories of the current directory
(with names like "generators", "Dirichlet_domains", ...), and snappea
will create these subdirectories if they don't yet exist. If you
plan to use snappea very much it might be a good idea to create a
snappea "work directory" to work in, and then always invoke snappea
from that directory. ]
(0) If you are using a Mac, start the program by double-clicking on
the program icon. If you are using a UNIX workstation, start it
by typing "snappea" at the shell prompt. You should get a
"select program" prompt. Snappea is really an umbrella program
which gives you access to several constituent programs.
(Eventually there'll be a smoother interface for all this.)
(1a) If you are using a Mac, type "l" (that's the letter "el") to
start the link entry program. If you are not using a Mac, skip
down to step 2; the link entry program is not yet available on
other systems.
(1b) Use the mouse to draw the figure eight knot. Click to make the
vertices. To close a component, click on the initial vertex. By
the way, if you attempt to add a segment that's not in general
position relative to what you've already drawn the program will
beep at you and refuse to add that segment. You can now adjust
the crossings (over vs. under) by clicking on them, or you can
choose Alternate from the Edit menu to fix them all at once.
(1c) Choose Save... from the File menu to save the link you have
drawn. Give it a one-word name like "fig8". First the program
saves the projection in a folder called "link projections" (which
it creates if necessary), then it triangulates the complement,
finds a hyperbolic structure for it, and saves the result in the
folder "manifolds" (which it also creates if necessary). It tells
1you something about the hyperbolic structure; when you're done
looking at the information, click the mouse to return to the main
link entry program. If you want, you can play around with the
other menu commands, which are all self-explanatory.
[Note: when you save link complements the manifold's cusps will
be numbered in the same order you drew the corresponding link
components.]
(1d) Choose Quit Link Entry from the File menu.
(2a) Type "d" to start the Dehn filling program. At the "which
manifold" prompt, type "fig8" (or whatever you called your figure
eight knot complement). If you were not able to do step 1
because you are not using a Mac, type "figure8" which will cause
snappea to load the figure eight knot complement from its
supplied library of manifolds. You'll see some information about
this manifold.
(2b) If you are on a Mac, or an IRIS with geomview, type "dd" (for
Dirichlet domain) and after a brief computation you'll see a
Dirichlet domain for the figure eight knot complement. [ On an
IRIS it may take several seconds for geomview to appear. ] Drag
it with the mouse to rotate it. If you let go of the mouse
button while the mouse is still moving the Dirichlet polyhedron
will keep spinning.
On Macs: hit Command-S for a see-through Dirichlet domain. Click
the close box of the viewing window when you're done playing with
the Dirichlet domain.
On IRISes with geomview: you can use all the features of geomview
to view and manipulate the Dirichlet domain. See the geomview
documentation for details.
On UNIX workstations without geomview: typing "dd" will cause
snappea to write an OOGL file containing the Dirichlet domain.
Snappea will prompt you for the name of this file. You can then
view this file with geomview on an IRIS somewhere if you have
access to one.
On any computer: if you type "ddf" instead of "dd", snappea will
prompt you for the name of a file and will write an OOGL data
file by that name containing the Dirichlet domain.
(2c) Type "5 1" to ask snappea to do (5, 1) Dehn filling on the figure
eight knot complement. You'll see the volume and homology of
this closed hyperbolic 3-manifold, and also the length and
torsion of the core geodesic of the filled in solid torus. Type
"dd" to see the Dirichlet domain (the computation will be a
little slower this time (particularly on a MacPlus or SE)). Note
the tetrahedral symmetry. The program finds Dirichlet domains
centered at points of locally maximal injectivity radius.
(2d) Type "com" to return to the complete hyperbolic structure for the
figure eight knot complement. Type "cs" to toggle the Chern-
Simons calculator on. You'll be asked for the Chern-Simons
invariant of the present configuration. The present
configuration is the complete structure on the figure eight knot
complement, and its Chern-Simons invariant is 0, so type 0. Then
type "5 1" again, and this time the Chern-Simons invariant will
be displayed along with the other information.
(2e) Type "gen" to create a set of generators (in PSL(2,C)) for the
fundamental group of this manifold. (This will take several
seconds.) A file containing the generators will be created
automatically and saved in a folder/directory called generators
under the name "fig8(5,1)".
(2f) Type "-5 1" and you'll see that (-5,1) Dehn filling has the same
invariants as the (+5,1) Dehn filling. Are they isometric? Type
"gen" to create the generators for the (-5,1) filling, and then
type "diff" to compare the two files (you just hit return twice
to have diff use the two most recently computed sets of
generators, which is what we want). You'll see that the lists of
generators are complex conjugate, which means that the (+5,1)
filling and (-5,1) filling are isometric, but oppositely
oriented.
Technical comments (optional): When the generators are different
you can't conclude that the manifolds are nonisometric, because
the generators might have been computed relative to different
basepoints. The basepoint is always a local maximum of the
injectivity radius function, but there may be several such local
maxima. In pratice this is seldom a problem. (Also, one can
obtain different basepoints by using different starting points in
the basepoint finding algorithm, but I still haven't settled on a
good user interface for this.) When two manifolds are not
isometric you have to use other invariants to distinguish them.
For manifolds obtained by doing several Dehn fillings on a
multicusp manifold the Dirichlet domain program occasionally
fails due to the excessive roundoff error which accumulates
during the computation of the canonical basepoint. There's a
compile-time option to use larger error tolerances (the drawback
to larger error tolerances is that when you go to do high-order
Dehn fillings, which yield Dirichlet domains with lots of tiny
faces, some of the tiniest faces get swallowed up entirely by the
error tolerances). Get in touch with me if you have problems
with these algorithms not working for the cases you are
interested in.
Note: the Dehn fillings needn't be on the same cusped manifold.
For example, the program will show you that m003(-1,3) and
m004(5,1) are isometric. ("m003" and "m004" will be explained
below)
(2g) Type "complete" (or just "com") to return to the complete (i.e.
not Dehn filled) hyperbolic structure on the figure eight knot
complement. At the ">" prompt type "ls" to compute a complex
length spectrum ("complex" means it includes both the length and
the torsion for each closed geodesic included). Type "2.5" for
"tiling radius" and 2.0 for "cutoff length". After a short
computation (or a long computation if you're using a MacPlus)
you'll be prompted for a file name under which to store the list
of lengths and torsions of closed geodesics up to length 2.0.
The file will be placed in a directory called "length spectra",
which the program creates if necessary. You may examine this
file using any word processor (e.g. the one you use to read this
tutorial). Note that because the figure eight knot complement
has an orientation reversing symmetry each closed geodesic has a
mate of the same length but opposite torsion. If you compute a
length spectrum for the (5,1) Dehn filling (by typing "5 1", then
"ls", "2.5", "2.0" and a file name) you'll see that the lengths
do not occur in matched pairs, which implies that the manifold is
chiral.
New feature: typing "tube" at the ">" prompt will compute a tube
radius of each geodesic. I recommend a radius of about 2.0.
Warning: the tube radius algorithm is not carefully thought out,
so I don't guarantee its correctness.
Technical comments on choosing values for the "tiling radius" and
the "cutoff length". You should probably just skip this material
and go on to paragraph (2h) below, but if you are particularly
interested in length spectra, then read on. The program computes
length spectra by tiling hyperbolic space with lifts of a
(hypothetical) fundamental domain. To decide when to stop
tiling, it keeps track of how far each group element translates
the basepoint. If the basepoint is translated a distance less
than the "tiling radius", the program continues its recursive
tiling by considering the lifts obtained by multiplying the given
group element by each generator in a precomputed generating set.
When the recursion is complete the program computes the complex
length associated to each group element it found, and reports the
lengths whose real part (i.e. the actual length, ignoring
torsion) is less than the "cutoff length".
Obviously the "cutoff length" should be less than the "tiling
radius". In practice, "tiling radius" = "cutoff length" + 0.5
works well. If you want to verify the result you can run it
again with "tiling radius" = "cutoff length" + 1.0. Using
"cutoff length" = 3.0 and tiling radius = 3.5 gives fast results;
"cutoff length" = 3.5 and "tiling radius" = 4.0 is also tolerably
fast. The number of group elements increases exponentialy with
the distance, of course, so you can go a little beyond that (say
to 5.0) but not a whole lot further.
If you want to check out the accuracy more systematically (e.g.
if you find a particularly interesting set of spectra) I
recommend the following procedure. Do, say, "tiling radius" =
"cutoff length" = 3.5, then do "tiling radius" = "cutoff length"
= 4.0 and see where the first new length occurs. You can be
fairly certain that the spectrum is complete up to that point.
Finding a delta such that the list of lengths up to the "cutoff
length" is guaranteed to be complete when the "tiling radius" is
greater than "cutoff length" + delta is tricky, even for a fixed
"cutoff length". The catch is that is is theoretically possible
that the recursion could terminate (having reached lifts all of
which translate the basepoint a distance greater than "tiling
radius") and still miss some lifts which are further away in a
combinatorial sense yet nevertheless translate the basepoint a
distance less than the "tiling radius". (In practice this will
occur seldom if at all.) Fortunately it is still possible to get
some bounds which will rigorously guarantee the completeless of
the reported length spectrum. In the case of a closed manifold
with fundamental domain of radius delta, one can prove that the
reported length spectrum will be complete when "tiling radius" >
"cutoff length" + 2*delta. Unfortunately this bound isn't much
good for manifolds with short geodesics (because delta will be
large, which makes the prescribed "tiling radius" intractibly
large) and for cusped manifolds it's useless. Other techniques
are possible in the latter cases (namely getting bounds on how
far a closed geodesic of length less than "cutoff length" can
travel up the cusp) but they are messy and I haven't pursued
them.
(2h) Hit return at the ">" prompt to stop doing Dehn fillings on the
figure eight knot complement, then hit return again at the "which
manifold" prompt to quit the Dehn filling program.
(3) There are five ways to create new manifolds. Each will be described
below. For reference, here's the list of all five ways.
(a) Use the link entry program [on the Mac only].
(b) Recall manifolds from the "census" (i.e. data base) of all
cusped hyperbolic 3-manifolds obtainable from 5 or fewer
ideal tetrahedra.
(c) Recall manifolds from the census of all orientable cusped
hyperbolic 3-manifolds obtainable from 6 ideal tetrahedra.
(d) Recall manifolds from the link library which contains all the
knots and links which appear in the standard tables (e.g.
Rolfsen).
(e) Create punctured torus bundles.
You can, of course, do Dehn fillings on manifolds obtained in any
of the above ways.
(3a) The link entry program was described above.
(3b) Return to the Dehn filling program by typing "Dehn" (or just "d")
and at the "which manifold?" prompt type "m003". This calls up
a manifold from the so-called "census" of all 415 cusped
hyperbolic 3-manifolds obtainable from 5 or fewer ideal
tetrahedra. The census manifolds are named m000 through m414,
and are listed in order of increasing volume (e.g. m000 is the
Gieseking). A table giving various invariants for these
manifolds is available. Note that even though the manifold m003
has the same volume as the figure eight knot complement, it has
first homology Z + Z5, and is therefore not a knot complement.
These "census manifolds" are my favorite source of examples
because they are completely general and thus provide a better
idea of what hyperbolic manifolds are like than one gets by,
say, looking only at knot and link complements. Both orientable
and nonorientable manifolds are included in the census.
The census manifolds are stored in a "dehydrated" form and are
"rehydrated" on the fly whenever you need to use one. That's
why you get the message about "rehydrating m003... solution
found...".
(3c) A similar library exists for the 962 orientable manifolds
obtainable from 6 (but not fewer) ideal tetrahedra. They are
named "s000" through "s961". Similarly, the 3552 orientable
manifolds obtained from 7 (but not fewer) ideal tetrahedra are
named "v000" through "v3551".
(3d) Hit return at the ">" prompt to close the m003 manifold, and at
the "which manifold" prompt type "L306002". This gives you the
Borromean rings complement. All the knots and links from the
standard tables are available, as well as 11-crossing knots and
10-crossing links (thanks to Joe Christy). The n-th knot or link
of m crossings and p components is named "Lpmmnnn" (e.g. the
Borromean rings are the second 6-crossing 3-component link). You
can do Dehn fillings on the Borromean rings like you did on the
figure eight knot complement. The program will start you off
doing Dehn fillings on cusp number 0. To change to one of the
other cusps, type "cusp 1" or "cusp 2". At any point you may
view the shapes of the tetrahedra (given as complex edge
parameters) and the Dehn filling coefficients of the cusps by
typing "view". For a complete listing of the commands available
in the Dehn_filling program, type "help" at the ">" prompt.
When you're done with the Borromean rings hit return at the ">"
prompt and again at the "which manifold" prompt to leave the Dehn
filling program.
Note: if you want to rehydrate all the links in the link library
and save them in the manifolds folder/directory (so you don't
have to rehydrate them on the fly) type "r" at the "select
program" prompt. This operation takes a while, so you probably
don't want to do it now.
(3e) At the "select program" prompt type "bundles" (or just "b") to
enter the punctured torus bundle program. Type "+" for the sign
of the determinant, "+" for the sign of the trace, and "RL" for
the RL factorization, and you will see that you've created a
manifold of the same volume (2.02...) as the figure eight knot
complement and the manifold m003.
The information you provided gives a factorization of the
monodromy of the desired bundle. The string of R's and L's
provides a factorization in terms of the 2 x 2 matrices R =
(1,1;0,1) and L = (1,0;1,1). In addition, if you specify "-" for
the determinant the result will be multiplied by (0,1;1,0), and
if you specify "-" for the trace the result will be multiplied by
(-1,0;0,-1). (Note: the string of R's and L's read left to right
determines the sequence of matrices read right to left.)
Type "+" for the determinant, "-" for the trace, and RL for the
RL-factorization. You'll get another manifold of volume 2.02... .
Hit return to leave the bundle program.
Warning: At the moment the meridian and longitude on the cusp of
a punctured torus bundle are the ones natural relative to the
Euclidean structure on the cusp (namely the shortest and second
shortest curves), NOT the usual meridian and longitude one
expects to find on a punctured torus bundle. In the near future
I will write the code to put on the ones natural to the bundle.
(4) Go back to the Dehn filling program and examine the manifolds
"B++RL" and "B+-RL" you just created, and also the census
manifolds m003 and m004. An examination of the various
invariants for these manifolds suggests that B++RL is isometric
to m004 and B+-RL is isometric to m003. To prove they are
isometric you can ask snappea to compute a canonical
triangulation for each and then check whether the canonical
triangulations are combinatorially the same. To do this, hit
return to leave the Dehn filling program, and then type
"isometric" (or just "i") to use the isometry checker. Provide
the names B++RL and m004 and snappea will tell you they are
isometric; Provide B++RL and m003 snappea will tell you they're
different. While you're at it you can show that B++RL = m004 =
L104001 = fig8. When you're done hit return to leave the
isometry checker.
The canonical triangulations are dual to the Ford domain. In
rare cases the cell-division dual to the Ford domain contains
cells other than tetrahedra, and in these cases there is no
unique canonical triangulation. Snappea will report this
ambiguity and refuse to speculate on whether the manifolds are
the same (unless they happen to have the same triangulations to
begin with). I hope to correct this deficiency in the future.
Note: There are two ways to check whether two manifolds are
isometric: you can check canonical triangulations as just
described, or you can compute generators for the group of
covering transformations as described in (2f) above. Comparing
canonical triangulations has several advantages:
(i) It's faster.
(ii) It works in virtually all cases.
(iii) In the final analysis it is comparing two combinatorial
triangulations, so there is absolutely no possibility of
round-off error leading to a "false positive" result.
By contrast, two very high order Dehn fillings on a cusped
manifold will have nearly identical generators. (In fact,
comparision of generators MUST fail to resolve some such pairs of
manifolds because any finite computer can represent only a finite
number of distinct matrices, yet there are infinitely many
distinct high order Dehn fillings.)
It has one disadvantage, namely that it can be used only for the
original cusped hyperbolic 3-manifolds, not for the manifolds
represented as Dehn fillings.
(5) If you are not using a Mac, skip this step. If you are using a
Mac, at the "select program" prompt type "p" to use "pretty
pictures", and at the "which manifold" prompt type "L306002" to
get the Borromean rings. A couple messages with advice for
printing hard copies will appear; you can safely ignore them for
now. Type "0" to take a look at cusp number 0. You'll be asked
for a lower bound on the diameter of the horoballs you want
plotted. On a Mac II or SE/30 (or any newer Mac with a floating
point coprocessor) 0.2 is a reasonable choice. If you've got a
MacPlus or SE, try 0.3 or 0.35. (The number of horoballs grows
outrageously fast as the minimum diameter decreases, so the
difference in time and memory requirements between 0.3 and 0.2 is
more than you might expect.) A blank screen with a menu bar
appears. (If you're lucky enough to have a color monitor you
should, at this point, choose the Color Monitor option on the
Options menu. If you have THINK C you can later change a
#defined constant to make the Color Monitor option on by
default.) (In the new SnapPea the program will take care of
these matters automatically.) Choose the Horoballs item from the
Draw menu. A picture will appear which shows the view in the
manifold as seen looking down cusp 0 "from infinity". The view in
the manifold is, of course, the same as the view in the universal
cover. Each disk you see is a lift to the universal cover of a
horospherical neighborhood of one of the cusps. The program
chooses the largest horospherical neighborhoods which have equal
volumes and disjoint interiors. Different fill patterns (or
different colors on a color monitor) distinguigh the different
cusps. (You can choose Fill Patterns from the Draw menu to see
which pattern/color corresponds to which cusp.) You are, of
course, looking at the manifold from inside one of the
horospherical neighborhoods; we imagine its horospherical
boundary is opaque from the outside but transparent from the
inside so that it doesn't hide the other horoballs.
A more prosaic interpretation of the horoball picture is that
it's the universal cover of the manifold as represented in the
upper half space model of hyperbolic 3-space, viewed from above,
with the boundary of the current cusp represented as a horizontal
plane at height one (the horizontal plane at height one is not
explicitly shown in the picture to avoid hiding the other
horoballs).
Play around with the various Draw menu commands and Options menu
options, and when you are done choose Quit Drawing to return to
the console. You may now draw the pictures for cusps 1 and 2 if
you wish (but because the Borromean rings is so symmetrical the
pictures will be the same as for cusp 0, only with the fill
patterns permuted).
When you're done with the Borromean rings hit return in response
to "which cusp". If you want to look at other examples, the
first ten or twenty census manifolds (m000 - m020) offer some
nice patterns. It's also interesting to create a punctured torus
bundle whose RL-factorization is almost but not quite periodic,
like B+-RLRLLLRLRLRLRLRLLRLRLRL. (Note: the console window
supports copy-and-paste, so you never have to retype those long
bundle names by hand. I.e. copy the name from the bundle program
and paste it into the pretty pictures program at the "which
manifold" prompt.) When you're done, hit return at the "which
manifold" prompt to leave pretty pictures.
(6) SnapPea can compute symmetry groups of manifolds. Type
"symmetries" (or just "s") at the "select program" prompt, and
enter the name of whatever manifold interests you. For example,
you'll find that the symmetry group of m003 is Z/2 x Z/4, and the
symmetry group of m004 is the dihedral group D4 (a group of order
8). SnapPea reports both the symmetry group of the manifold and
the symmetry group of the corresponding link. For a manifold
which you created as a knot or link complement to begin with, the
symmetry group of the link is just what you expect it to be; in
general, the symmetry group of the "link" is defined to be the
subgroup of the full symmetry group consisting of those
symmetries which take meridians to meridians in whatever
coordinate system is employed on the boundary components of the
manifold.
(7) Last but not least, snappea can compute presentations for
fundamental groups. At the "select program" prompt type "f" (for
"fundamental group"), and when asked "which manifold" type
"L306002" for the Borromean rings. You'll see a presentation for
the fundamental group of the Borromean rings, followed by the
words representing the peripheral curves. You are now in an
environment similar to the Dehn filling environment. In response
to the "pi one>" prompt, type "1 0" to do a (1,0) Dehn filling on
cusp 0 of the Borromean rings. You will be told that the
fundamental group of the Dehn filled manifold is a free group on
two generators. Type "info" (or just "i") to see the status of
all cusps. (By convention (0,0) means that a cusp is unfilled.)
Try some other Dehn fillings on this cusp, and then return to the
(1,0) Dehn filling before proceeding. Type "cusp 1" (or just "c
1") to switch to cusp 1. Type "1 0" to do a (1,0) Dehn filling
on this cusp and you'll see that the fundamental group of the
result is the integers. Type "info" to see the status of the
cusps if you want. Now type "c 2" and "1 0" to switch to cusp 2
and do a (1,0) Dehn filling. Snappea will tell you that you have
a homotopy sphere. Hit return when you're done.
For more information on the programs available within snappea,
type "help" at the "select program" prompt.
By the way, the snappea console window on the Mac really is
resizable, even though it has no resizing box and the cursor is
always an I-beam! Just move the cursor to the lower right hand
corner of the window, pretend there's a resizing box, and
everything will work fine.
Note: Many of the longer computations can be aborted by holding
down control-C until the word "CANCEL" appears.
I am eager to receive any and all comments and suggestions for
improving these programs, from major additions to minor
annoyances and typos. Please send comments and questions to
weeks@poincare.geom.umn.edu or Jeff Weeks, Geometry Supercomputer
Project, 1200 Washington Ave. S., Minneapolis, MN 55415. Thanks.
CREDITS:
Craig Hodgson has done large amounts of the programming, particularly
in the routines to compute the Chern-Simons invariant and the
quasicanonical generators for the groups, and in the enumeration of
closed manifolds. More generally he has contributed to the design of
the entire project from the very beginning. More recently, Joe
Christy has made substantial contributions, and is coauthoring the GUI
for the new SnapPea. The winged edge data structure in the Dirichlet
domain program is from a Dirichlet domain program written by Charlie
Gunn, which was the inspiration for the present one. Diane Hoffoss
wrote the routine which generates lists of "nearby" group elements and
computes length spectra. Martin Hildebrand did most of the work on
the Census. Colin Adams, Bob Meyerhoff and Walter Neumann have also
made significant contributions. Bill Thurston is responsible for most
of the mathematics underlying these programs.
The Geometry Center Home Page
Comments to:
webmaster@www.geom.uiuc.edu
Created: Feb 08 1996 ---
Last modified: Jun 18 1996