Double recursion
In recursive function theory, double recursion is an extension of primitive recursion which allows the definition of non-primitive recursive functions like the Ackermann function.
Raphael M. Robinson called functions of two natural number variables G(n, x) double recursive with respect to given functions, if
- G(0, x) is a given function of x.
- G(n + 1, 0) is obtained by substitution from the function G(n, ·) and given functions.
- G(n + 1, x + 1) is obtained by substitution from G(n + 1, x), the function G(n, ·) and given functions.{{cite journal | author=Raphael M. Robinson | title=Recursion and Double Recursion | journal=Bulletin of the American Mathematical Society | year=1948 | volume=54 | issue=10 | pages=987–93 | url=http://projecteuclid.org/DPubS?verb=Display&version=1.0&service=UI&handle=euclid.bams/1183512393&page=record | doi=10.1090/S0002-9904-1948-09121-2| doi-access=free }}
Robinson goes on to provide a specific double recursive function (originally defined by Rózsa Péter)
- G(0, x) = x + 1
- G(n + 1, 0) = G(n, 1)
- G(n + 1, x + 1) = G(n, G(n + 1, x))
where the given functions are primitive recursive, but G is not primitive recursive. In fact, this is precisely the function now known as the Ackermann function.