Imagine you could only write programs that use bounded for-loops â loops where the number of iterations is fixed before the loop starts. No "while true", no recursion whose depth you can't predict. What could you compute?
The answer, worked out by logicians in the 1920s, is stunning: almost everything. Addition, multiplication, exponentiation, primality testing, sorting â all of these and the vast majority of functions mathematicians ever care about fall inside this one simple rule, called primitive recursion.
A function is primitive recursive if it can be built from two starting ingredients â the constant zero and the successor (add one) â using just two operations: composition (plug one function into another) and primitive recursion itself (run a bounded loop, carrying a running result forward at each step).
Yet the rule has a boundary. In 1928 Wilhelm Ackermann wrote down a function that is clearly computable â a computer can calculate any value you ask for â but that no finite stack of for-loops can express. That gap between "primitive recursive" and "all computable" is one of the first places in mathematics where a precise class turned out to be genuinely smaller than you'd expect.
Comments
Loading comments...