Ich habe über Beweise nachgedacht und bin auf eine interessante Beobachtung gestoßen. Beweise entsprechen also Programmen über den Curry-Howard-Isomorphismus, und Zirkelbeweise entsprechen einer unendlichen Rekursion. Aber wir wissen aus dem Problem des Stillstands, dass es im Allgemeinen unentscheidbar ist, zu testen, ob ein beliebiges Programm für immer wiederkehrt. Bedeutet das für Curry-Howard, dass es keinen "Proof Checker" gibt, der feststellen kann, ob ein Proof Zirkelschluss verwendet?
Ich war immer der Meinung, dass Beweise aus leicht überprüfbaren Schritten bestehen sollten (die der Anwendung von Inferenzregeln entsprechen). Wenn Sie alle Schritte überprüfen, können Sie sicher sein, dass die Schlussfolgerung folgt. Aber jetzt frage ich mich: Vielleicht ist es tatsächlich unmöglich, einen solchen Proof Checker zu schreiben, weil es keine Möglichkeit gibt, das Stopp-Problem zu umgehen und Zirkelschlussfolgerungen zu erkennen?
quelle
Function
oderProgram Fixpoint
Konstruktionen beweisen, dass eine Funktion total ist, wenn die Totalitätsprüfung fehlschlägt. Ein einfaches Beispiel ist die Zusammenführungssortierfunktion für Listen. Man muss manuell beweisen, dass wir Listen (mit einer Länge> 1) in streng kleinere Unterlisten aufteilen.Program
und dergleichen sind ein roter Hering. Sie ändern nichts an der Theorie. Was sie tun, ist syntaktischer Zucker, um ein Maß in einem Beweis zu verwenden: Anstatt zu argumentieren, dass das Objekt, an dem Sie interessiert sind, kleiner wird, fügen Sie eine Indirektionsebene hinzu: Berechnen Sie, dass ein anderes Objekt kleiner wird (z. B. eine bestimmte Größe), und beweisen Sie, dass es kleiner wird wird kleiner. Siehe dieWf
Bibliothek.