O feto, se você nunca ouviu falar, pode ser lido aqui . Ele usa um sistema de 'matrizes de chamada' e 'gráficos de chamada' para encontrar todos os 'comportamentos de recursão' de chamadas recursivas em uma função. Para mostrar que uma função termina, mostra que todos os comportamentos de recursão das chamadas recursivas feitas a uma função obedecem a uma certa "ordem lexicográfica". Seu verificador de terminação permite todas as funções recursivas primitivas e funções como a função Ackermann. Basicamente, permite recursão primitiva com vários argumentos. Este também é basicamente o verificador de rescisão da Agda; Acredito que a Coq também tenha algumas instalações semelhantes, embora talvez mais gerais.
Da leitura do artigo "Programação Funcional Total", de DA Turner . Ele explica que sua linguagem proposta seria capaz de expressar todos os "funcionais recursivos primitivos", como visto no Sistema T estudado por Godel. Ele continua dizendo que esse sistema "é conhecido por incluir todas as funções recursivas cuja totalidade pode ser provada na lógica de primeira ordem".
O Dose Fetus permite todos os funcionais recursivos primitivos? Em caso afirmativo, ele permite funções que não são funcionais recursivas primitivas? Pode ser fornecida uma citação para a resposta? (isso não é realmente necessário, pois estou apenas interessado; apenas algumas leituras conjugais sobre o assunto seriam boas)
Pergunta do bônus: Os funcionais recursivos primitivos têm uma definição muito concisa em termos de combinadores: digitados S e K (que não podem expressar os combinadores de ponto fixo), zero, a função sucessora e a função de iteração; é isso aí. Existem outras linguagens mais gerais que possuem uma definição concisa e em que todas as expressões terminam?