Beweisassistent für das Schreiben von Mathematik

12

Ich möchte mathematische Beweise mit einem Proof-Assistenten schreiben. Alles wird unter Verwendung von Logik erster Ordnung (mit Gleichheit) und natürlichem Abzug geschrieben. Hintergrund ist die Mengenlehre (ZF). Wie könnte ich zum Beispiel den folgenden Beweis schreiben?

Axiom: xy(x=yz(zxzy))

Theorem: xy(z(zx)z(zy)x=y)

Das heißt, die leere Menge ist eindeutig.

Es ist für mich trivial, dies mit Papier und einem Stift zu bewerkstelligen, aber ich brauche wirklich eine Software, die mir hilft, den Beweis auf Richtigkeit zu überprüfen.

Vielen Dank.

Kaveh
quelle
11
Zuerst müssen Sie einen Proof-Assistenten auswählen. Coq ist das, was ich benutze, aber es gibt viele andere . Einige davon basieren auf der Logik erster Ordnung und sind daher besser auf Ihre Bedürfnisse zugeschnitten. Dann müssen Sie den Proof-Assistenten erlernen. Innerhalb weniger Tage sollten Sie in der Lage sein, einfache Sätze wie den obigen zu kodieren und zu beweisen. Erwarten Sie nicht, dass wir das für Sie tun. So lernst du nichts.
Dave Clarke
5
Wenn Sie sich für Mengen- und nicht für Typentheorie interessieren, ist Isabelle wahrscheinlich das einfachste System. Coq wird seltsam und verwirrend wirken.
Mark Reitblatt
2
Ich denke, das Axiom, das Sie geschrieben haben, ist keine Logik erster Ordnung, sondern Logik zweiter Ordnung. Dies liegt daran, dass sich Variablen im ersten Fall nur über Einzelpersonen erstrecken, während sich Variablen im zweiten Fall sowohl über Einzelpersonen als auch über Mengen erstrecken können. Anscheinend sind in dem gegebenen Axiom und y Mengen, während z eine Einzelperson ist. xyz
MS Dousti
9
@Sadeq: In ZF werden die Grundelemente des Universums doch nicht gesetzt? Sie sollten also in der Lage sein, Dinge wie "für alle Mengen" in der Logik erster Ordnung zu sagen, was in diesem Axiom getan wird.
Robin Kothari
9
@Sadeq, was Robin gesagt hat, ist richtig, ZF ist eine Theorie erster Ordnung und das Axiom, das in der Frage geschrieben ist, ist auch erste Ordnung. In alles nur eine Menge, es gibt nichts als Individuum gegen Menge. (Als Randnotiz muss man sich nicht zu Objekten zweiter oder höherer Ordnung bewegen, um über verschiedene Arten von Variablen zu sprechen. Man benötigt nur verschiedene Sortierungen. Die Logik zweiter und höherer Ordnung unterscheidet sich erheblich von vielfach sortierten Logiken.) ZF
Kaveh

Antworten:

13

Dies können sowohl Coq als auch Isabelle.

[Coq] In diesem Artikel wird erläutert, wie ZFC in CIC codiert wird, auf dem Coq basiert.

Benjamin Werner: Mengen in Typen, Typen in Mengen (1997). http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.1709

[Isabelle] Es gibt eine Bibliothek für ZF.

http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/ZF/index.html

yhirai
quelle
3
Obwohl dieses Papier sehr schön ist, halte ich es für pragmatischer, nur Arten (Typvariablen) und Axiome hinzuzufügen, um die Axiomatentheorie von ZF direkt zu kodieren, und dann die Beweise durch direkten Aufruf dieser Axiome zu erstellen. Die Kodierung soll eher zeigen, dass die Theorien in ihrer Ausdruckskraft miteinander verwandt sind.
Cody
2
Ich sollte hinzufügen, dass es eine Umsetzung dieser Ideen von Bruno Barras gibt: lix.polytechnique.fr/~barras/proofs/sets/index.html
cody
9

Verschoben vom Kommentar auf Kavehs Vorschlag

Zuerst müssen Sie einen Proof-Assistenten auswählen. Coq ist das, was ich benutze, aber es gibt viele andere . Coq basiert auf einer Logik höherer Ordnung (der sogenannten Berechnung induktiver Konstruktionen). Andere Proof-Assistenten basieren auf der Logik erster Ordnung und können daher besser auf Ihre Bedürfnisse zugeschnitten sein (Modulo die obigen Kommentare).

Dann müssen Sie sich darauf festlegen, den Proof-Assistenten zu erlernen. Das verknüpfte Dokument ist ein Tutorial, mit dem Sie sich mit Coq vertraut machen können. Ein Coq-Experte zu werden, erfordert jahrelange Hingabe und Übung, aber einfache Sätze können an einem Nachmittag bewiesen werden. Der Schlüssel zum Erlernen von Coq oder eines anderen Proof-Assistenten besteht darin, Proofs zu erstellen, wie z. B. die im verlinkten Artikel. Nur das Lesen der Zeitung hilft wenig, da die gesamte Erfahrung der Interaktion mit dem Proof-Assistenten nicht gut auf Papier übertragen werden kann.

Innerhalb weniger Tage sollten Sie in der Lage sein, einfache Sätze wie den obigen zu kodieren und sie zu beweisen. Erwarten Sie nicht, dass wir das für Sie tun. So lernst du nichts.

Wenn es Ihnen gelingt, diese Theoreme zu beweisen, können Sie Ihre Antworten hier posten und vielleicht ein paar Kommentare zu Ihren Erfahrungen hinterlassen.

Bist du bereit für die Herausforderung?

Dave Clarke
quelle
4
Coq ist eine vernünftige Wahl; Wenn xddz5 jedoch lieber in der ZF-Mengen- als in der Typentheorie arbeiten möchte, ist Mizar möglicherweise besser geeignet.
Timothy Chow
8

Es gibt viele mathematische Artikel, die mit dem Proof-Assistenten Mizar geschrieben wurden: http://mizar.org/fm/

Radu GRIGore
quelle
3
Wie sieht die Werkzeugunterstützung für Mizar aus?
Dave Clarke
Ich habe es nicht benutzt.
Radu GRIGore
5

Dave Clarke schlägt Coq vor, aber Isabelle scheint eine viel bessere Idee zu sein, da es eine Bibliothek für ZF gibt . Isabelle ist auch sehr ausgereift und beinhaltet eine Vielzahl von Taktiken und Erweiterungen.

Ich habe Mizar nicht persönlich benutzt, aber es kann auch gut sein.

Liam O'Connor
quelle
2

Wie könnte ich den folgenden Beweis schreiben?

In Isabelle / ZF kann man so etwas schreiben

theory csthquestion imports Main

begin

theorem empty_unique:
shows "\<forall> x.\<forall>y.(\<forall>z. (z\<notin>x)) \<and> (\<forall>z.(z\<notin>y)) \<longrightarrow> x=y"
    by auto

end

Wie Sie sehen, beweist Isabelle dies automatisch. Natürlich können Sie einen detaillierteren Beweis schreiben, wenn Sie es wirklich wollen.


quelle
2

Dieser Satz ist ein praktisches Beispiel (siehe Beispiel 11) in dem Tutorial, das in meiner DC Proof 2.0-Software enthalten ist. Laden Sie es kostenlos auf meiner Website http://www.dcproof.com herunter

Dan Christensen
quelle
1
Dies ist ein kleiner Verkaufsschlager für diese Site. Können Sie einige Informationen in einer ausgewogenen Art und Weise präsentieren, um zu sagen, in welcher Weise Ihre Software für das Problem gut geeignet ist? Vielleicht ein Link zu einem Video oder ein Screenshot dieser Ableitung?
Charles Stewart
1
Hier ist der Beweis: dcproof.com/EmptySetUnique.htm Auf meiner Website gibt es ein Video, das zeigt, wie das System funktioniert.
Dan Christensen