Es bien sabido que la recursión primitiva no es lo suficientemente potente para expresar todas las funciones, siendo la función de Ackermann probablemente el ejemplo conocido.
Ahora bien, en los cursos de lógica (que he hecho ver) siempre se procedía de la recursión primitiva a la mu-recursión. En términos de ciencias de la computación, esto significa básicamente que estamos saltando de un formalismo en el que se garantiza que los programas se detendrán a un formalismo Turing-completo en el que la detención es una propiedad no computable, es decir, no podemos decir para cada programa si finalmente se detendrá.
Tengo curiosidad por saber si hay alguna jerarquía entre la recursión primitiva y mu-recursión. Después de un tiempo encontré un lenguaje de programación llamado Charity. En Charity (según Wikipedia) todos los programas tienen la garantía de parar, por lo que no es Turing-completo, pero, por otro lado, es lo suficientemente expresivo para implementar la función de Ackermann.
Esto sugiere que hay al menos un nivel entre la mu-recursión y la recursión primitiva.
Mi pregunta es: ¿existe algún otro formalismo de parada segura que sea más expresivo que la recursión primitiva? O, mejor aún, ¿existen algunas jerarquías conocidas entre las funciones mu-recursivas y las recursivas primitivas? Tengo curiosidad por saber cuánto podemos calcular con un formalismo que garantice la parada.