Primitive recursive functions are functions which take one or several natural numbers as arguments and produce a natural number as value. A function which takes n arguments will be called n-ary. They are defined as follows.
Start with the following functions:
Now consider the following operations:
All functions that can be generated by repeated application of these rules to the basic functions defined above form the set of primitive recursive functions.
(Note that the projection functions allow us to get around the apparent rigidity in terms of the arity of the functions above, as via composition we can pass any subset of the arguments.)
===Example primitive recursive functions===
(need actual definitions)
===Primitive recursive functions are a subset of the recursive functions===
Primitive recursive functions tend to correspond very closely with our intuition of what a computable function must be. Certainly the initial set of functions are intuitively computable (in their very simplicity), and the two operations by which one can create new primitive recursive functions are also very straight-forward. However the set of primitive recursive functions does not include every possible computable function -- this can be seen with a variant of Cantor's diagonalization argument.
(need outline of proof)