Noch einige Erklärungen zum mathematischen Hintergrund von SnapPy:

SnapPy 1.1 hatten wir im vorigen Artikel vorgestellt. Hier noch eine kurze Beschreibung, worum es aus mathematischer Sicht eigentlich geht.

Konstruktion 3-dimensionaler Mannigfaltigkeiten

Jede 3-dimensionale Mannigfaltigkeit kann konstruiert werden durch Dehn-Chirurgie an einem Link in der 3-Sphäre:
Die 3-Sphäre S3 denkt man sich am besten als 1-Punkt-Kompaktifizierung des R3, d.h. man fügt zu unserem Anschauungsraum noch einen Punkt im Unendlichen hinzu.
Ein Knoten ist ein Kreis, der irgendwie (verknotet) im Raum liegt. Ein Link besteht aus (evtl. mehreren) Knoten, die sich nicht schneiden, wie der Whitehead-Link im Bild unten.

i-8ea6eaa81c237d5fbd69e650c8351762-Whiteheadlink.png

Weil ein Knoten ein Kreis S1 ist, ist eine kleine Umgebung eines Knotens ein Volltorus S1xD2, der Rand der Umgebung ist ein Torus S1xS1.
Dehn-Chirurgie besteht in der folgenden Prozedur: wähle einen Link, schneide eine kleine Umgebung des Links aus der S3 aus (man bekommt eine 3-Mannigfaltigkeit, deren Rand aus Tori besteht) und klebe an die Ränder jeweils einen Volltorus an.

i-7dd715a5c3485c289f4b74c61c3993ac-Torus_cycles.png

Wieviele Möglichkeiten gibt es, einen Volltorus, an einen Torus anzukleben? Auf jedem Torus gibt es Meridian und Longitude, im Bild rot und violett. Zu zwei ganzen Zahlen p und q gibt es eine Kurve l(p,q), die Longitude und Meridian p bzw. q mal schneidet. Dann gibt es Selbst-Abbildungen des Torus, die den Meridian auf l(p,q) abbilden und diese benutzt man, um den Volltorus anzukleben. (Es gibt zwar verschiedene Selbstabbildungen des Torus, die den Meridian auf l(p,q) abbilden, die entstandene 3-Mannigfaltigkeit hängt aber nur von p und q ab.)

Invarianten

Mit Dehn-Chirurgie an Links kann man also 3-Mannigfaltigkeiten konstruieren. Nach dem Satz von Lickorish bekommt man alle kompakten, orientierbaren, zusammenhängenden 3-Mannigfaltigkeiten mit dieser Konstruktion.
Allerdings gibt es viele Dehn-Chirurgien an unterschiedlichen Links, die im Ergebnis zu derselben 3-Mannigfaltigkeit führen. Triviales Beispiel: (0,1)-Chirurgie an jedem Knoten gibt wieder die S3.

Wenn man eine Katalogisierung aller 3-Mannigfaltigkeiten anstrebt, braucht man also nicht nur eine Konstruktionsmethode, sondern auch Invarianten, mit denen man unterschiedliche 3-Mannigfaltigkeiten unterscheiden kann.

Fundamentalgruppe Eine solche Invariante ist die Fundamentalgruppe: unterschiedliche hyperbolische 3-Mannigfaltigkeiten müssen unterschiedliche Fundamentalgruppen haben.
Mit SnapPy kann man, im Prinzip, Fundamentalgruppen berechnen.
Man bekommt die Gruppe dargestellt mittels einer Präsentierung aus Erzeugern und Relationen.
Es ist aber ein sehr schwieriges Problem zu entscheiden, ob zwei Präsentierungen tatsächlich unterschiedliche Gruppen geben. (Letzteres wäre einfacher für Homologiegruppen, die abelsche Gruppen sind und sich leicht unterscheiden lassen. Die Homologiegruppen werden von SnapPy ebenfalls berechnet, sie lassen sich für 3-Mannigfaltigkeiten, die durch Dehn-Chirurgie gegeben sind, auch leicht von Hand berechnen. Sie sind aber nicht sehr nützlich zur Unterscheidung von 3-Mannigfaltigkeiten: zum Beispiel hat jede 3-Mannigfaltigkeit, die durch (p,q)-Dehnchirurgie an irgendeinem Knoten entsteht, immer die 1.Homologiegruppe Z/pZ.)
Nützlicher sind deshalb geometrisch definierte Invarianten wie das hyperbolische Volumen.

Volumen und Chern-Simons-Invariante Nach Mostow-Starrheit ist die hyperbolische Metrik eindeutig, geometrische Invarianten wie Volumen und Chern-Simons-Invariante sind also topologische Invarianten. Für hyperbolische Mannigfaltigkeiten berechnet SnapPy das Volumen und die Chern-Simons-Invariante. (Das ist leicht, wenn die ideale Triangulierung schon gegeben ist: wenn man eine ideale Triangulierung hat mit Parametern z1,…,zn, dann ist das Volumen die Summe D(z1)+…+D(zn), wobei D der Bloch-Wigner-Dilogarithmus ist.)
Volumen unterscheidet oft (aber nicht immer) unterschiedliche 3-Mannigfaltigkeiten.

The main class is Manifold, which is an ideal triangulation of the interior of a compact 3-manifold with torus boundary, where each tetrahedron has has been assigned the geometry of an ideal tetrahedron in hyperbolic 3-space. A Dehn-filling can be specified for each boundary component, allowing the description of closed 3-manifolds and some orbifolds. The class Manifold is derived from the simpler Triangulation class which lacks any geometric structure. There are also some additional classes for things like fundamental groups, Dirichlet domains, etc. Snappy comes with a large library of 3-manifolds, some of which are grouped together in censuses.

Algorithmen

Aus Mathematiker-Sicht das Herz des Programms ist ein Algorithmus, der 3-Mannigfaltigkeiten M in ideale Tetraeder zerlegt.
Um eine hyperbolische Metrik auf M zu finden, muß man dann die Tetraeder so als ideale Tetraeder im hyperbolischen Raum realisieren, daß die Winkel um jede Kante sich zu 360o aufaddieren (dazu kommt noch eine Vollständigkeitsbedingung). Ideale Tetraeder im hyperbolischen 3-Raum werden durch einen komplexen Parameter z beschrieben: das Doppelverhältnis der 4 Ecken (die 4 Ecken liegen ja im idealen Rand des hyperbolischen Raums, also in C U {oo} ) und die Bedingung an die Winkel übersetzt sich in Gleichungen zwischen den komplexen Parametern z1,…zn der verschiedenen Tetraeder. Das Programm löst diese Gleichungen und findet so die hyperbolische Metrik auf der Mannigfaltigkeit.
Damit kann man dann leicht Volumen und Chern-Simmons-Invariante berechnen.