So hatte ich vor einiger Zeit zum ersten Mal jemanden, der mir sagte, dass call / cc Beweisobjekte für klassische Beweise durch Anwendung des Peirce-Gesetzes erlauben könnte. Ich habe in letzter Zeit ein wenig über das Thema nachgedacht und kann anscheinend keinen Fehler darin finden. Allerdings kann ich anscheinend niemanden sehen, der darüber spricht. Es scheint keine Diskussion zu geben. Was gibt?
Es scheint mir, dass, wenn Sie in einem bestimmten Kontext eine Konstruktion wie 1 von zwei Dingen wahr ist. Entweder haben Sie Zugriff auf eine Instanz irgendwie im aktuellen Kontext , in dem Fall Steuerfluss hier nie erreichen würde , und wir sind sicher davon ausgehen , was auch immer OR gegeben , dass Mittel der einzige Weg zurückkehren kann ist durch eine Instanz des Konstruierens und zwei es das Argument (eine Instanz der Anwendung . In einem solchen Fall gab es bereits einige Möglichkeiten, eine Instanz von konstruieren; Es scheint vernünftig für call / cc, diese Konstruktion für mich herauszuziehen. Meine Argumentation hier scheint mir etwas suspekt, aber meine Verwirrung bleibt bestehen. Wenn call / cc nicht einfach eine Instanz von aus dem Nichts erstellt (ich verstehe nicht, wie es ist), worum geht es dann?
Haben einige gut typisierte Begriffe, die call / cc nicht enthalten, keine normalen Formen? Gibt es eine andere Eigenschaft solcher Ausdrücke, die sie verdächtig macht? Gibt es einen bekannten Grund, warum Konstruktivisten call / cc nicht mögen sollten?
Antworten:
Konstruktive Mathematik ist nicht nur ein formales System, sondern ein Verständnis dafür, worum es in der Mathematik geht. Anders ausgedrückt, nicht jede Art von Semantik wird von einem konstruktiven Mathematiker akzeptiert.
Ein konstruktiver Mathematikerp∨¬p
call/cc
sieht aus wie Schummeln. Überlegen Sie, wie wir Zeuge mit :call/cc
call/cc
Das konstruktive Verständnis von Disjunktion ist algorithmische Entscheidbarkeit , aber das oben Gesagte trifft kaum Entscheidungen. Als Test kann ein konstruktiver Mathematiker Sie fragen, wie sich
call/cc
beweisen lässt, dass jede Turing-Maschine anhält oder auseinander läuft. Und wie sieht das Programm aus? (Es sollte das Orakel der Ewigkeit sein.)quelle
Wie Sie bemerken, gibt es eine mögliche konstruktive Interpretation der klassischen Logik in diesem Sinne. Dass klassische Logik mit intuitionistischer Logik (etwa Heyting-Arithmetik) übereinstimmt , ist schon seit geraumer Zeit bekannt (bereits 1933, z. B. Gödel ).
Durch ein differenzierteres Argument kann gezeigt werden, dass Peano Arithmetic gegenüber HA für Π 0 2 -Anweisungen konservativ ist . Die Essenz des Ergebnisses ist, dass die klassischen Beweise von Π 0 2 mit c a l l / c c den gleichen Recheninhalt haben wie eine Aussage ohne dieses Konstrukt (durch eine CPS- Transformation).Π02 Π02 call/cc
Dies gilt jedoch nicht für Aussagen über : Aussagen in Σ 0 3 , die in PA nachweisbar sind, haben möglicherweise keine normale Form, die für die Zeugenaussage geeignet ist! Informatiker interessieren sich vielleicht nicht für das Rechnen mit Beweisen auf dieser Ebene, aber für philosophische Überlegungen ist es etwas unpraktisch : Haben wir die Existenz von etwas bewiesen oder nicht?Π02 Σ03
Ich denke, dies fasst zusammen, warum das "Fixieren" nichtkonstruktiver Logik durch Addition von unbefriedigend sein kann.call/cc
Abgesehen davon gibt es eine Menge Arbeit, die die rechnerischen Aspekte der Berechnung innerhalb des "klassischen Curry-Howard" -Rahmenwerks untersucht, z. B. die Krivine Machine, die Parigot-Rechnung ( ) und viele andere. Sehen Sie hier für einen Überblick.λμ¯¯¯μ~
Abschließend sei angemerkt, dass die Situation zwar im Prädikatenkalkül und in arithmetischen Fällen recht gut verstanden wird, leistungsfähigere Theorien jedoch weitaus weniger erforscht sind. Zum Beispiel ist IIRC, ZFC gegenüber IZF auch für Sätze konservativ (ZFC gegenüber ZF für arithmetische Sätze konservativ und ZF gegenüber IZF konservativ), was darauf hindeutet, dass es eine rechnerische Bedeutung für das Axiom der Wahl gibt. Dies ist jedoch ein sehr aktives Forschungsgebiet ( Krivine , Berardi et al. )Π02
Bearbeiten: Eine sehr relevante Frage zu Mathoverflow erscheint hier: /mathpro/29577/solved-sequent-calculus-as-programming-language
quelle
inr (fun x -> callcc(...))
Ich stimme der Antwort von Andrej und Cody zu. Ich halte es jedoch auch für erwähnenswert, warum Konstruktivisten sich für Steueroperatoren interessieren sollten (call / cc).
quelle