- Smn theorem
In computability theory the smn theorem, (also called the translation lemma, parameter theorem, or parameterization theorem) is a basic result about
programming language s (and, more generally,Gödel numbering s of thecomputable function s) (Soare 1987, Rogers 1967). It was first proved byStephen Cole Kleene (Kleene 1943).In practical terms, the theorem says that for a given programming language and positive integers "m" and "n", there is a particular
algorithm that operates on thesource code of programs with "m"+"n"free variables . This algorithm effectively binds "m" given values to the first "m" free variables in the program and leaves the rest free.Details
The basic form of the theorem applies to functions of two arguments. Given a Gödel numbering φ of recursive functions, there is a
primitive recursive function "s" of two arguments with the following property: for every Gödel number "p" of a function "f" with two arguments, and are defined for the same combinations of x and y and equal for those combinations. In other words, the followingextensional equality of functions holds::
To generalize the theorem, choose a scheme for encoding "n" numbers as one number, so that the original numbers can be extracted by primitive recursive functions. For example, one might interleave the
bit s of the numbers. Then for any "m","n" > 0, there exists a primitive recursive function of "m"+1 arguments that behaves as follows: for every Gödel number "p" of a function with "m+n" arguments,:
is just the function "s" already described.
Example
The following Lisp code implements s11 for Lisp.
(defun s11 (f x) (list 'lambda '(y) (list f x 'y))
For example, (s11 '(lambda (x y) (+ x y)) 3) evaluates to (lambda (y) ((lambda (x y) (+ x y)) 3 y)).
ee also
*
Currying
*Kleene's recursion theorem
*Partial evaluation References
*
*
*
**mathworld|urlname=Kleeness-m-nTheorem|title=Kleene's s-m-n Theorem
Wikimedia Foundation. 2010.