Le fœtus, si vous n'en avez pas entendu parler, peut être lu ici . Il utilise un système de «matrices d'appel» et de «graphiques d'appel» pour trouver tous les «comportements de récursivité» des appels récursifs dans une fonction. Pour montrer qu'une fonction se termine, cela montre que tous les comportements de récursivité des appels récursifs faits à une fonction obéissent à un certain «ordre lexicographique». Son vérificateur de terminaison permet toutes les fonctions récursives primitives et les fonctions telles que la fonction Ackermann. Fondamentalement, il permet une récursion primitive multi-arguments. C'est aussi fondamentalement le vérificateur de terminaison d'Agda; Je crois que Coq a des installations similaires aussi bien que peut-être plus générales.
De la lecture de l'article "Programmation fonctionnelle totale" par DA Turner . Il explique que le langage qu'il propose proposerait d'exprimer tous les "fonctionnels récursifs primitifs" comme on le voit dans le système T étudié par Godel. Il poursuit en disant que ce système est "connu pour inclure toutes les fonctions récursives dont la totalité peut être prouvée dans une logique de premier ordre".
Dose Foetus autorise toutes les fonctions récursives primitives? Si oui, autorise-t-il des fonctions qui ne sont pas des fonctionnelles récursives primitives? Une citation peut-elle être fournie pour la réponse à cela? (ce n'est pas vraiment nécessaire car je suis juste intéressé; c'est juste qu'une lecture conjugale sur le sujet serait bien)
Question bonus: les fonctionnelles récursives primitives ont une définition très concise en termes de combinateurs: typées S et K (qui ne peuvent pas exprimer les combinateurs à virgule fixe), zéro, la fonction successeur et la fonction d'itération; c'est ça. Existe-t-il d'autres langues plus générales qui ont une définition aussi concise et dans lesquelles toutes les expressions se terminent?