Since primitive recursive function objects are not available in Nuprl , they have to be simulated. Consider the primitive recursive function
Shown below is a DEF that serves as a template for defining such
functions.
(F such that F(0,y)=(<G:base>)(y), F(n+1,y)=(<H:body>)(n,F(n,y),y) ) == \n.(\y.ind(n; u,v."?"; (\_y_.(<G>)(_y_)); u,v.(\_y_.(<H>)(u)(v(_y_))(_y_)) ) (y) )
The DEF above could be used to define an exponentiation DEF in the following way.
<y:int>**<n:int> == ((F such that F(0,y)=(\z.z)(y), F(n+1,y)=(\a.\b.\c.(b*c))(n,F(n,y),y) )(<n>) )(<y>)