Smn theorem

From Wikipedia, the free encyclopedia
(Redirected from Parameterization theorem)

Template:Short description

Page Module:Hatnote/styles.css has no content.

Script error: No such module "Correct title categories".

In computability theory the S m
n
 
theorem
, written also as "smn-theorem" or "s-m-n theorem" (also called the translation lemma, parameter theorem, and the parameterization theorem) is a basic result about programming languages (and, more generally, Gödel numberings of the partial computable functions) (Soare 1987, Rogers 1967). It was first proved by Stephen Cole Kleene (1943). The name S m
n
 
comes from the occurrence of an S with subscript n and superscript m in the original formulation of the theorem (see below).

In practical terms, the theorem says that for a given programming language and positive integers m and n, there exists a particular algorithm that accepts as input the source code of a program with m + n free variables, together with m values. This algorithm generates source code that in essence substitutes the values for the first m free variables, leaving the rest of the variables free.

Details

The basic form of the theorem applies to functions of two arguments (Nies 2009, p. 6). Given a Gödel numbering φ of partial computable functions, there is a primitive recursive function s of two arguments with the following property: for every Gödel number e of a partial computable function f with two arguments, the expressions φs(e,x)(y) and f(x,y) are defined for the same combinations of natural numbers x and y, and their values are equal for any such combination. In other words, the following extensional equality of functions holds for every x:

φs(e,x)λy.φe(x,y).

More generally, for any m, n > 0, there exists a primitive recursive function Snm of m + 1 arguments that behaves as follows: for every Gödel number e of a partial computable function with m + n arguments, and all values of x1, …, xm:

φSnm(e,x1,,xm)λy1,,yn.φe(x1,,xm,y1,,yn).

The function s described above can be taken to be S11.

Formal statement

Given arities m and n, for every Turing Machine TMx of arity m+n and for all possible values of inputs y1,,ym, there exists a Turing machine TMk of arity n, such that

z1,,zn:TMx(y1,,ym,z1,,zn)=TMk(z1,,zn).

Furthermore, there is a Turing machine S that allows k to be calculated from x and y; it is denoted k=Snm(x,y1,,ym).

Informally, S finds the Turing Machine TMk that is the result of hardcoding the values of y into TMx. The result generalizes to any Turing-complete computing model.

Example

The following Lisp code implements s11 for Lisp.

(defun s11 (f x)
  (let ((y (gensym)))
    (list 'lambda (list y) (list f x y))))

For example, (s11 '(lambda (x y) (+ x y)) 3) evaluates to (lambda (g42) ((lambda (x y) (+ x y)) 3 g42)), where g42 is a "fresh" symbol.

See also

References

  • Script error: No such module "Template wrapper".