primitive recursive functions without primitive recursion
What sorts of functions![]()
can be built from the simplest primitive recursive functions
![]()
(the initial functions) using functional
composition
![]()
alone? In this entry, we list some useful examples:
To begin with, we list the initial functions:
- 1.
(zero function) ,
- 2.
(successor function) ,
- 3.
(projection functions) for ; in particular, we have the identity function

, which is just .
With the help of functional composition, more functions can be derived:
- 1.
(addition
by a fixed number ) , which can be obtained by repeated application of the successor function :
- 2.
(constant functions

) , which is just ; more generally, is , where is defined previously.
Next, we list some properties derivable using functional composition which are preserved by primitive recursiveness.
- 1.
(permutation

of variables) if is primitive recursive, then so is any function obtained from by permuting the variables :
where is a permutation on ;
- 2.
(removing a variable) if is primitive recursive, then so is defined by
- 3.
(adding a variable) if is primitive recursive, then so is defined by
Proof.
All of the above can be proved by appropriately substituting the suitable projection functions:
- 1.
For each , let . Then each is primitive recursive, and therefore is primitive recursive also.
- 2.
For each , let , and . Then each is primitive, and therefore is primitive recursive also.
- 3.
For each , let . Then each is primitive recursive, and therefore is primitive recursive also.
∎
As a corollary, we see that primitive recursiveness is preserved under generalized composition, in the following sense:
Corollary 1.
If , where , and are primitive recursive, then the function , given by
where each is a function on , and , is also primitive recursive.
Proof.
Define . Then by repeated applications of the properties listed above, we see that is primitive recursive. Hence is also primitive recursive. ∎