Vorwort zu Cinderella 1.2

Cinderella ist ein Programm zur Durchführung von Geometrie auf einem Computer. In seiner jetzigen Form ist es das Produkt einer Abfolge von drei Projekten, die zwischen 1993 und 1998 durchgeführt wurden. Es basiert auf verschiedenen mathematischen Theorien, die von den großen Entdeckungen der Geometer des neunzehnten Jahrhunderts bis hin zu neu entwickelten Methoden reichen, die ihre ersten Anwendungen in diesem Programm finden.

Die Idee für das erste dieser Projekte wurde 1992 während einer Kombinatorik-Konferenz am Mittag-Leffler-Institut in Schweden geboren, als Henry Crapo und Jürgen Richter-Gebert einen Ausflug auf einem Boot namens Cinderella machten. Zu dieser Zeit hatte Jürgen Richter-Gebert symbolische Methoden für automatische Theorembeweise in der Geometrie entwickelt [RG95], und beide träumten von Computersoftware, die es ermöglichen würde, geometrische Konfigurationen mit nur wenigen Mausklicks einzugeben und dann den Computer nach Eigenschaften dieser Konfigurationen zu befragen.

Henry und Jürgen starteten das Projekt auf einer NeXT-Plattform, die damals für ihre wunderbare Softwarearchitektur berühmt war. Cinderella wurde zum Arbeitstitel für das Projekt, und dieser Titel erwies sich als unverrückbar.

Ein paar Wochen Entwicklung produzierten den ersten funktionierenden Prototyp. Das Programm basierte auf Prinzipien der projektiven Geometrie und Invariantentheorie. Es war in der Lage, lesbare algebraische Beweise für viele Sätze der projektiven Geometrie über Punkte, Linien und Kegelschnitte zu finden [CrRG95].

Als die NeXT-Plattform jedoch allmählich an Popularität verlor, verlor auch Cinderella an Schwung. Nach dem Sommer 1995 wurde fast kein weiterer Fortschritt erzielt. Auf einer Konferenz über Computergeometrie am Mt. Holyoke College in South Hadley, Massachusetts, war es aufgrund des Verschwindens von NeXT-Computern und ihrem Betriebssystem fast unmöglich, eine Softwaredemonstration zu geben.

Im August 1996, gleich nach dieser Mt. Holyoke-Konferenz, entschieden wir (Ulli Kortenkamp und Jürgen Richter-Gebert, die damals an der Technischen Universität Berlin in der Gruppe von Günter M. Ziegler arbeiteten), ein neues Projekt zu starten, das vollständig auf der plattformunabhängigen Sprache Java basiert. Die Sprache Java war zu dieser Zeit relativ neu, und zunächst waren wir beide sehr skeptisch gegenüber der Verwendung einer interpretierten (vermutlich langsamen) Sprache als Grundlage für ein Programm, das in Echtzeit eine große Menge an Berechnungen erfordert. Aber wir versuchten es trotzdem.

Das Ziel dieses zweiten Projekts war es, die alte Funktionalität, die in der NeXT-Version verfügbar war, erheblich um Funktionen der euklidischen und nicht-euklidischen Geometrie zu erweitern. Wir wollten auch Funktionalität für geometrische Orte. Außerdem, da Java so konzipiert ist, "Internet-bewusst" zu sein, sollte das neue Programm in einem Webbrowser ausgeführt werden können. Insbesondere wollten wir in der Lage sein, Schülerübungen für das Web zu erstellen. Die Theorembeweisfunktionen des Programms sollten verwendet werden, um die Korrektheit der Lösung des Schülers automatisch zu überprüfen.

Konferenzen, Wettbewerbe und ihre Fristen sind oft treibende Kräfte für eine schnelle Entwicklung. Eine erste funktionierende Version wurde im September 1996 auf dem „CGAL-Start-Treffen" an der Eidgenössischen Technischen Hochschule (ETH) Zürich präsentiert. Eine zweite Version gewann den „Multimedia Innovation Award" bei der Multimedia-Transfer der ASK Karlsruhe im Januar 1997.

Während 1997 wurde Jürgen Richter-Gebert außerordentlicher Professor an der ETH Zürich. Diese Änderung erzwang eine weitere Unterbrechung der Entwicklung. Ulli Kortenkamp zog im September nach Zürich.

Zur gleichen Zeit begannen wir mit Verhandlungen für die Veröffentlichung von Cinderella. Ursprünglich planten wir, das zweite Projekt zu verbessern und zu vollenden. Aber die Dinge entwickelten sich anders.

Die zweite Version litt wie andere Computerprogramme für Geometrie unter scheinbar unvermeidlichen mathematischen Inkonsistenzen. Diese Inkonsistenzen stammten aus Mehrdeutigkeiten bei Operationen wie „Nimm den Schnittpunkt eines Kreises und einer Linie." Es kann zwei, einen oder keine Schnittpunkte geben, je nach Position des Kreises und der Linie. Beim Ziehen einer Konstruktion muss das Programm entscheiden, welchen Schnittpunkt es wählen soll. Diese scheinbar harmlose Mehrdeutigkeit kann zu furchtbaren Inkonsistenzen im Verhalten einer Konstruktion führen. Es kann vorkommen, dass beim Verschieben eines Punktes um nur wenig ganze Teile der Konstruktion umkippen.

Anfang 1998 zeigte sich, dass dieses Problem der springenden Elemente tatsächlich lösbar war. Es war jedoch klar, dass die Implementierung der Theorie kein leichter Job sein würde. Jede Konfiguration musste in einem komplexen Vektorraum eingebettet werden. Ergebnisse der Funktionentheorie mussten verwendet werden, um „singuläre Situationen" zu vermeiden. Wenn wir diese neuen Erkenntnisse nutzen wollten, mussten wir den mathematischen Kern des Programms von Grund auf neu schreiben. Das Programm musste ungefähr zwanzig bis hundertmal mehr Berechnungen durchführen als zuvor, eine Herausforderung für uns und für Java.

Wir beschlossen, dies zu tun, und endeten mit dem dritten Projekt, dessen Ergebnis Sie hier sehen. In einer Zeit unglaublich intensiver Arbeit (die unsere Geduld und die unserer Familien bis zum Äußersten belastete) haben wir das gesamte Programm erneut umgeschrieben und das Programm bei jeder Gelegenheit zur höheren Leistung optimiert.

Es stellte sich heraus, dass es eine gute Idee war, diese Anstrengung zu unternehmen. Die Vorteile der neu entwickelten Theorie waren viel größer als wir ursprünglich gedacht hatten. Basierend auf den neuen Methoden konnten wir zuverlässige randomisierte Theoremprüfungen durchführen. Dies erwies sich als viel nützlicher als die alten symbolischen Methoden. Es war auch möglich, vollständige geometrische Orte durch generische Methoden zu erzeugen, was unseres Wissens eine Neuheit ist.

Das vorliegende Programm ist eine Mischung aus alter Geometrie des neunzehnten Jahrhunderts, komplexer Analysis, unseren neuen Methoden und moderner Softwaretechnologie. Wir hoffen, dass es dir genauso viel Spaß macht wie uns.

Jürgen Richter-Gebert, Ulli Kortenkamp Zürich, Dezember 1998


🤖 Diese Seite wurde automatisch mit KI (Claude) übersetzt und wartet noch auf Überprüfung. → Alle KI-übersetzten Seiten