- Ein Projekt, das die Kernaussagen von Analysis I, dem Lehrbuch zur reellen Analysis von Terence Tao, in den Lean-Beweisassistenten überträgt
- Das Projekt passt strukturell gut zum Anspruch des Originals auf Strenge, etwa bei der Konstruktion grundlegender Zahlensysteme und der Beweislogik
- Es nutzt die Standardbibliothek Mathlib, enthält aber auch Übungen zum eigenen Aufbau zentraler Konzepte und zum eigenständigen Beweisen
- Man kann üben, indem man Lücken (
sorry) im Lean-Code selbst füllt; offizielle Lösungen gibt es nicht, Erweiterungen per Fork sind möglich
- Für Lean-Einsteiger und Lernende der reellen Analysis gleichermaßen nützlich, um den praktischen Einsatz von Mathlib und Lean kennenzulernen
Überblick
- Ein Open-Source-Projekt, das das Lehrbuch zur reellen Analysis "Analysis I" von Terence Tao mit dem Lean-Beweisassistenten neu aufbereitet
- Das Lehrbuch legt im Vergleich zu anderen Analysis-Büchern mehr Gewicht auf den Konstruktionsprozess der natürlichen Zahlen, ganzen Zahlen, rationalen Zahlen und reellen Zahlen sowie auf die dafür nötigen mengentheoretischen und logischen Werkzeuge
- Viele Teile des Buchs zielen auf den systematischen Aufbau der Fähigkeit zu strengen Beweisen, weshalb es sich strukturell gut für einen Beweisassistenten wie Lean eignet
Merkmale des Lean-Companion-Projekts
- Es stellt die Definitionen, Sätze und Übungsaufgaben des Originals in Lean-Form "übersetzt" bereit
- Diese Lean-Dateien enthalten viele Lücken (
sorry), die den Lösungen zu den Übungsaufgaben entsprechen und vom Leser selbst ausgefüllt werden können
- Offizielle Erklärungen oder Lösungen werden nicht bereitgestellt, aber Leser können das Repository forken und ihre eigene Lösungsvariante erstellen
Verbindung zu Mathlib und Unterschiede
- Einige bereits in Mathlib (Leans Standardbibliothek für Mathematik) implementierte Konzepte, etwa natürliche Zahlen, werden absichtlich noch einmal eigenständig aufgebaut; danach ist auch der Nachweis der Isomorphie (Äquivalenz) zur Mathlib-Version Teil des Projekts
- Beispielsweise werden in
Chapter2.Nat eigene natürliche Zahlen aufgebaut, die von den natürlichen Zahlen aus Mathlib getrennt sind; nach der eigenständigen Behandlung zentraler Resultate übt man am Ende in Lean, dass beide Versionen gleichwertig sind
- Ab den folgenden Kapiteln wird dann schrittweise immer stärker auf Definitionen und Funktionen aus Mathlib zurückgegriffen
Lernen und Nutzung
- Dieser Lean-Companion dient nicht nur dem Analysis-Studium, sondern auch als Einführung in die Formalisierung von Mathematik mit Lean und Mathlib
- Ähnlich wie beim "Natural number game" enthält er strukturierte Übungen, in denen mathematische Objekte in einer Lean-Umgebung direkt definiert und erprobt werden
- Der Code selbst lässt sich in Lean kompilieren, aber es wurde nicht vollständig verifiziert, ob sich alle Übungsaufgaben (
sorry) tatsächlich lösen lassen; insofern sind Playtesting und Feedback erwünscht
Open Source und Beiträge
- Das Repository ist Open Source und kann von allen eingesehen, geforkt und weiterentwickelt werden
- Offizielle Lösungen werden nicht separat bereitgestellt, wodurch mehrere Lösungsvarianten unterstützt werden
- Stand 31. Mai wurde das Projekt in ein eigenständiges, separates Repository überführt
1 Kommentare
Hacker-News-Kommentare
Ich bin wirklich gespannt; wenn dieses Projekt in ein eigenständiges Repo ausgelagert wird, lässt es sich viel leichter mit anderen teilen und besser finden. Ich war schon immer neugierig auf Mathematik, und Taos Analysis war das erste Lehrbuch, das mir gezeigt hat, wie streng Mathematik aufgebaut ist, und zwar auf eine Weise, die zu meiner Denkweise als Programmierer passt. Später habe ich mich auch für Lean begeistert, fand Mathlib aber etwas zu komplex, um damit mathematische Konzepte zu lernen. Deshalb gefällt mir dieses Projekt sehr, weil es als Brücke vom Buch zum Tool dient.
Der spannendste Aspekt von Mathematikunterricht mit Lean ist für mich das unmittelbare Feedback: Wenn ein Student einen Beweis falsch macht, kompiliert er nicht. Früher musste das Feedback direkt von einem TA oder Professor kommen, jetzt meldet sich der Lean-Compiler schnell. Ich hoffe, dass es künftig wie beim Rust-Compiler sogar freundlichere Korrekturvorschläge geben wird (dafür könnte ein dediziertes LLM nötig sein).
Es gibt offenbar einen persönlichen YouTube-Kanal, auf dem man Terence Tao selbst bei der Arbeit mit Lean sehen kann. Ich bin auf diesem Gebiet kein Experte, aber allein zuzuschauen, wie er mit oder ohne LLM arbeitet, fand ich wirklich interessant (https://www.youtube.com/@TerenceTao27).
Es wäre wirklich interessant, den traditionellen „Lehrbuchansatz“ mit dem Mathlib-Ansatz zu vergleichen und zu bewerten. Formalisierte Mathematikbibliotheken drücken Ergebnisse im Allgemeinen so allgemein wie möglich aus, und ein Vorteil ist, dass sich die Beweisstruktur selbst leicht elegant refaktorisieren lässt. Das Refactoring ist einfach, weil das System die logischen Abhängigkeiten stets verfolgt, was mit Papier und Stift nicht leicht ist. Deshalb ist es aus meiner Sicht eine naheliegende Frage, ob man die „maximal allgemeine“ Version der Analysis, wie sie in Mathlib auftaucht, in Universitätsvorlesungen lehren sollte. Dasselbe gilt auch für alle anderen beweisbasierten Bereiche der Mathematik.
Zumindest für Einführungskurse halte ich das nicht für geeignet. Im Curriculum ist ohnehin schon viel zu viel unterzubringen — Beweismethoden, Programmierung und die grundlegende Theorie. Die Erfahrungen von Professoren, die es tatsächlich versucht haben, scheinen ähnlich zu sein: Für fortgeschrittene Studenten ist es gut, für durchschnittliche Studenten aber oft Zeitverschwendung.
Als Mathematiker, der auch lange programmiert hat, glaube ich nicht, dass irgendeine programmatische Formalisierung grundlegendes Verständnis hervorbringen wird. Mein Vorurteil kommt daher, dass ich Konzepte über Papers gelernt habe. Code ist oft stilistisch wenig lesbar und dadurch überwältigend; schon schlecht lesbare Papers sind mühsam, aber bei Code ist es wegen fehlender Standards in meiner Erfahrung noch zehnmal schlimmer.
Ich freue mich, dass Theorem Proving in Mainstream-Bereichen der Mathematik wie Analysis zunehmend Aufmerksamkeit bekommt. In der PLT gab es bereits das bekannte Beispiel, dass Winskels The Formal Semantics of Programming Languages in Isabelle formal verifiziert wurde (http://concrete-semantics.org). Wenn man mit Theorem Proving anfangen möchte, ist das meiner Meinung nach leichter und eher zu empfehlen. Hinzu kommt, dass Sätze in der Analysis von Natur aus ziemlich schwierig sind.
Ich finde, dieses Projekt und dieser Ansatz passen sehr gut zu einem grundlegenden Thema wie Analysis. Ich habe allerdings zwei Sorgen
Ich finde das ein sehr großartiges Projekt. Analysis I war für mich als Ingenieur das erste „echte“ Mathematik-Lehrbuch, das ich wirklich von Anfang bis Ende durcharbeiten konnte; an anderen Büchern (etwa Rudin) bin ich mehrfach gescheitert. Mit einer Lean-Version könnten Leute, die sowohl mit Mathematik als auch mit Programmierung vertraut sind, Konzepte noch strenger lernen.
Seit Jahren gibt es Versuche einer offiziellen Lean-Formalisierung von Taos Analysis I, aber es war immer schwer, über ein paar Kapitel hinauszukommen. Eine Zeit lang wollte ich das selbst angehen — ich dachte, es wäre nützlich für Leser des Buches, wenn man zusammen mit dem Analysis I-Lösungsblog (https://taoanalysis.wordpress.com/) passende formalisierte Beweise veröffentlichen würde. Ich habe bereits in einem privaten Discord gesammelte Materialien geteilt, und hier fasse ich noch einmal Referenzprojekte in Lean zusammen, die für mehrere Leute nützlich sein könnten (GitHub- und Gist-Links, offizielle Dokumentation usw.).
import Mathlib.Data.Set.Basic, also wird die Mengenlehre nicht komplett neu definiert, sondern importiert — in diesem Fall „kennt“ Lean die Mengenlehre bereits vollständig, was für unseren Zweck vielleicht nicht perfekt ist)Set-Typs)Ich frage mich, wie wichtig der „Beweis eines Isomorphismus zu dem entsprechenden Objekt in Mathlib“ tatsächlich ist. Könnte es nicht sein, dass praktisch gar nichts verloren geht, wenn man diesen Isomorphie-Teil weglässt? Wird das zum Beispiel wirklich für Dinge wie automatische Übersetzung von Sätzen verwendet?
Solche Isomorphie-Beweise sind aus zwei Gründen wichtig:
Ich denke, sie haben zumindest pädagogischen Wert, weil man dadurch selbst nachvollzieht, dass die Mengen und Operationen, die man konstruiert hat, auch an anderen Stellen im Buch „dieselben“ sind.
Ich freue mich über Lean-basierte Lehrbücher. Aber warum gibt es kein HoTT (Homotopy Type Theory)? Es gibt auch einen Meinungsartikel mit der Frage „Should Type Theory (HoTT) replace (ZFC) set theory“ (https://news.ycombinator.com/item?id=43196452). Außerdem wurden weitere Lean-bezogene Community-Ressourcen geteilt, die diese Woche auf HN aufgetaucht sind — „100 theorems in Lean“ (https://news.ycombinator.com/item?id=44075061) und das DeepMind-Lean-Projekt (https://news.ycombinator.com/item?id=44119725).
Ich sehe allerdings nicht, warum unbedingt auch noch HoTT dabei sein müsste. HoTT-Theorem-Prover sind bisher nicht besonders benutzerfreundlich, und es gibt auch nicht genug Dokumentation. Mir ist außerdem nicht klar, welchen Gewinn HoTT bringt; sinnvoll erscheint es meist nur beim Umgang mit extrem speziellen Strukturen wie etwa in der Kategorientheorie.
Da es sich um einen traditionellen Lehrbuchansatz handelt, steckt die Antwort auf die Frage „Warum nicht HoTT?“ eigentlich schon darin. Außerdem gibt es meines Erachtens viele Fachleute, die dem pädagogischen Nutzen skeptisch gegenüberstehen.