Fetus, wenn Sie nicht davon gehört haben, können bis zu lesen hier . Es verwendet ein System von 'Aufrufmatrizen' und 'Aufrufdiagrammen', um alle 'Rekursionsverhalten' von rekursiven Aufrufen in einer Funktion zu finden. Um zu zeigen, dass eine Funktion beendet wird, zeigt sie, dass alle Rekursionsverhalten von rekursiven Aufrufen einer Funktion einer bestimmten 'lexikografischen Reihenfolge' entsprechen. Der Terminierungsprüfer ermöglicht alle primitiven rekursiven Funktionen und Funktionen wie die Ackermann-Funktion. Grundsätzlich erlaubt es eine primitive Rekursion mit mehreren Argumenten. Dies ist im Grunde auch der Terminierungsprüfer von Agda; Ich glaube, dass Coq auch einige ähnliche Einrichtungen hat, wenn auch vielleicht allgemeiner.
Aus dem Artikel "Total Functional Programming" von DA Turner . Er erklärt, dass seine vorgeschlagene Sprache in der Lage sein würde, alle "primitiven rekursiven Funktionale" auszudrücken, wie sie in dem von Godel untersuchten System T zu sehen sind. Er fährt fort, dass dieses System "bekanntermaßen jede rekursive Funktion umfasst, deren Gesamtheit in der Logik erster Ordnung bewiesen werden kann".
Dosis Fötus alle primitiven rekursiven Funktionen zulassen? Wenn ja, erlaubt es Funktionen, die keine primitiven rekursiven Funktionale sind? Kann ein Zitat für die Antwort darauf gegeben werden? (Dies ist eigentlich nicht notwendig, da ich nur interessiert bin; es ist nur so, dass eine Leseehe in dieser Angelegenheit nett wäre)
Bonusfrage: Primitive rekursive Funktionale haben eine sehr präzise Definition in Bezug auf Kombinatoren: Typ S und K (die die Festkomma-Kombinatoren nicht ausdrücken können), Null, die Nachfolgerfunktion und die Iterationsfunktion; das ist es. Gibt es andere allgemeinere solche Sprachen, die eine so präzise Definition haben und in denen alle Ausdrücke enden?