Foetusは、まだ聞いたことがない場合は、こちらで読むことができます。これは、関数の再帰呼び出しのすべての「再帰動作」を見つけるために、「呼び出し行列」と「呼び出しグラフ」のシステムを使用します。関数が終了することを示すには、関数に対して行われた再帰呼び出しのすべての再帰動作が特定の「辞書式順序」に従うことを示します。終了チェッカーは、すべてのプリミティブな再帰関数とアッカーマン関数などの関数を許可します。基本的に、これは複数引数のプリミティブ再帰を可能にします。これは基本的にAgdaの終了チェッカーでもあります。Coqにも同様の機能がいくつかあると思います。
DAターナーの論文「Total Functional Programming」を読んだところから。ゴデルが研究したシステムTに見られるように、彼の提案する言語はすべての「原始再帰関数」を表現できると彼は説明する。彼はさらに、このシステムは「全体が一次論理で証明できるすべての再帰関数を含むことが知られている」と述べています。
線量胎児はすべての基本的な再帰的機能を許可しますか?もしそうなら、それはプリミティブな再帰的関数ではない関数を許可しますか?これに対する回答を引用できますか?(私はただ興味があるので、これは実際には必要ではありません。それは、問題についてのいくつかの読書夫婦がいいだろうということだけです)
おまけの質問:プリミティブ再帰汎関数は、コンビネーターに関して非常に簡潔な定義を持っています。型付きのSおよびK(固定小数点コンビネーターを表現できない)、ゼロ、後続関数、および反復関数。それでおしまい。そのような簡潔な定義を持ち、すべての表現が終了する他のより一般的なそのような言語はありますか?