Ich suche ein Einführungsbuch in die mathematische Logik, das auch eine Implementierung seiner Logik in einem Beweisassistenten behandelt. Es scheint mir, dass dies eine großartige Möglichkeit wäre, mathematische Logik zu lernen, da viele Konzepte sehr klar und konkret werden würden, wenn sie in einem Computerprogramm implementiert würden. Aber so ein Buch habe ich noch nie gesehen.
Vorzugsweise führt das Buch die Sprache des Beweisassistenten ohne Vorkenntnisse ein und ermutigt den Leser, sie an verschiedenen Stellen zu verwenden.
BEARBEITEN
Ich mag die bisher geposteten Antworten und möchte dies noch eine Weile offen halten, um andere Empfehlungen an einem Ort zu sammeln. Nach dem Öffnen fand ich jedoch auch die folgenden hervorragenden Ressourcen, die in dieser Frage verlinkt sind, nämlich diese Ressourcenliste und dieses Buch / diese Zusammenstellung von Notizen von Jeremy Avigad. Diese Ressourcen scheinen die Art von Dingen zu sein, nach denen ich gesucht habe, und könnten für andere hilfreich sein, die über diesen Beitrag stolpern.
BEARBEITEN 2
Ein Feature, das ich wirklich gerne sehen würde, das ich bisher in den Vorschlägen nicht gesehen habe, ist ein Buch, das seine Metalogik auch innerhalb eines Beweisassistenten formalisiert. Zum Beispiel würde ich mich über ein Buch freuen, das (zum Beispiel) einen Korrektheitssatz beweist und zeigt, wie ein solcher Beweis mit einem Beweisassistenten implementiert werden könnte.
Andererseits wäre ich überrascht, wenn eine solche Ressource existiert, da keine mathematischen Logikbücher (die ich gesehen habe) auch nur die Idee der Formalisierung der Metalogik erwähnen.
Ich würde John Harrisons Handbook of Practical Logic and Automated Reasoning wärmstens empfehlen . Die Programmierbeispiele haben eher mit der Implementierung von Beweisassistenten und Entscheidungsverfahren zu tun als mit der Verwendung eines Beweisassistenten, aber ich denke, sie erfüllen Ihren Wunsch nach Implementierungen, die die Schlüsselkonzepte verdeutlichen. Die Beispiele sind alle in der funktionalen Programmiersprache OCaml angegeben .
Zur zweiten Bearbeitung: Ich denke, in den meisten Texten zur mathematischen Logik ist implizit enthalten, dass das Thema in einem geeigneten Grundlagensystem wie ZF formalisiert werden kann. In der Literatur zur mathematischen Logik wird dies wichtig und explizit in Arbeiten zur Unabhängigkeit . In der Welt der Beweisassistenten ist die Selbstformalisierung im Hinblick auf mehr Sicherheit und Verständnis seit vielen Jahren von Interesse. Siehe z. B. dieses Papier zur Selbstverifizierung von HOL und die darin enthaltenen Referenzen. Ich denke, die allgemeinen Prinzipien einer formalisierten Metalogik sind wahrscheinlich aufschlussreicher als die feinen Details der Formalisierung.
Probieren Sie grundlegende Beweismethoden in der Informatik aus. Es verwendet Athena als Beweisassistent. Es lehrt sowohl Logik als auch Sprache.
Wenn Sie das komplex finden, hier ein einfaches - https://staff.washington.edu/jon/flip/www/userguide-nd.html Es funktioniert mit Python 2.7.
Bücher, die einen begleitenden Beweisassistenten für ihre Logik haben, sind eine Möglichkeit, es zu betrachten, aber es funktioniert auch umgekehrt: Die meisten Beweisassistenten implementieren eine bestimmte (normalerweise konstruktive) Logik und daher sind Bücher über den Beweisassistenten bereits Bücher über diese Logik .
Hier sind einige Ressourcen zu Coq :
Sofware Foundations Series [Pierce] Insbesondere Buch 1 führt in die konstruktive Logik von Coq ein.
Zertifizierte Programmierung mit abhängigen Typen [Chlipala]
Modeling and Proving in Computational Type Theory Using Coq [Smolka] ist ein sich noch entwickelnder Buchentwurf, der die Grundlage einer Vorlesung bildet und begleitende Coq-Dateien auf github enthält . Es spricht weniger direkt über den Beweisassistenten.
Die Lean Community - Website hat eine Seite mit empfohlenen Lernressourcen .
Und vergessen wir nicht das HoTT-Zeug:
Daniel Schepler
WillG
Dan Christensen
Léreau
Benutzer21820
Guy Coder