Kleene's Normal Form Theorem

From ProofWiki
Jump to navigation Jump to search


Theorem

For each integer $k \ge 1$, there exists:

a primitive recursive $k + 1$-ary relation $T_k$
a primitive recursive function $U: \N \to \N$

such that a partial function $f: \N^k \to \N$ is recursive if and only if, for some $e \in \N$ and all $\tuple {n_1, n_2, \ldots, n_k} \in \N^k$:

$\map f {n_1, n_2, \ldots, n_k} \approx \map U {\mu z \ \map {T_k} {e, n_1, n_2, \ldots, n_k, z} }$


Proof

See the proof of URM Computable Function is Recursive for an explanation of the symbols used here.


Necessary Condition

Suppose $e = \map \gamma P$ codes a URM program $P$ which computes $f$.

Suppose the computation using $P$ with input $\tuple {n_1, n_2, \ldots, n_k}$ halts at stage $t_0$ with output $q$.

Let $t > t_0$, that is, we "wait till after $P$ has finished".

Then $\map f {n_1, n_2, \ldots, n_k} = q$.

Since $P$ has halted at stage $t_0$:

$\paren {\map {S_k} {e, n_1, n_2, \ldots, n_k, t} }_1 > \map \len e$

where:

$\map {S_k} {e, n_1, n_2, \ldots, n_k, t}$ is the state code at stage $t$ of the computation of $P$ with input $\tuple {n_1, n_2, \ldots, n_k}$
$ \map \len e$ is the length of $e$
the number $\paren {\map {S_k} {e, n_1, n_2, \ldots, n_k, t} }_1$ is the value of the instruction pointer to the instruction about to be carried out at stage $t$
$\tuple z_j$ is the prime exponent function.


Since the output is $q$:

$\paren {\map {S_k} {e, n_1, n_2, \ldots, n_k, t} }_2 = q$

Let us put $z_0 = 2^q 3^{t_0}$.

Then:

$\tuple {z_0}_2 = t_0$ and $\tuple {z_0}_1 = q$

Thus:

$\paren {\map {S_k} {e, n_1, n_2, \ldots, n_k, \tuple {z_0}_2} }_1 > \map \len e$

and

$\tuple {z_0}_1 = \paren {\map {S_k} {e, n_1, n_2, \ldots, n_k, \tuple z_2} }_2$

Now $z_0$ is the smallest integer with these properties, because $\tuple {z_0}_2 = t_0$ is the stage at which $P$ halts.

Thus we have:

$\map f {n_1, n_2, \ldots, n_k} = q = \tuple {z_0}_1$


Now we let $\map {T_k} {e, n_1, n_2, \ldots, n_k, z}$ be the relation defined as:

\(\ds \map {T_k} {e, n_1, n_2, \ldots, n_k, z}\) \(\iff\) \(\ds \tuple {\map {S_k} {e, n_1, n_2, \ldots, n_k, t} }_1 > \map \len e\)
\(\ds \) \(\text { and }\) \(\ds \tuple z_1 = \paren {\map {S_k} {e, n_1, n_2, \ldots, n_k, \tuple z_2} }_2\)

Then $T_k$ is a primitive recursive $k + 1$-ary relation.

Also, we can take $U: \N \to \N$ to be the primitive recursive function given by $\map U z = \tuple z_1$.

$\Box$


Sufficient Condition

Now let $f$ be a recursive function.

Then by Recursive Function is URM Computable, there exists some URM program which computes $f$.

Let $P$ be the URM program with the smallest code number that computes $f$.

Let $e = \map \gamma P$ be the code number of $P$.


Suppose $\map f {n_1, n_2, \ldots, n_k}$ is defined.

Then from the above, we deduce that $\mu z \ \map {T_k} {e, n_1, n_2, \ldots, n_k, z}$ is defined.

Let $z_0 = \mu z \ \map {T_k} {e, n_1, n_2, \ldots, n_k, z}$.

Then:

$\tuple {z_0}_1 = \map f {n_1, n_2, \ldots, n_k}$

That is:

$\map U {z_0} = \map f {n_1, n_2, \ldots, n_k}$

Hence:

$\map f {n_1, n_2, \ldots, n_k} = \map U {\mu z \ \map {T_k} {e, n_1, n_2, \ldots, n_k, z} }$

as required.


On the other hand, suppose $\map f {n_1, n_2, \ldots, n_k}$ is undefined.

Then the computation using $P$ with input $\tuple {n_1, n_2, \ldots, n_k}$ does not halt.

So there is no $z$ such that $\map {T_k} {e, n_1, n_2, \ldots, n_k, z}$.

So $\map U {\mu z \ \map {T_k} {e, n_1, n_2, \ldots, n_k, z} }$ is undefined.

Thus:

$\map f {n_1, n_2, \ldots, n_k} \approx \map U {\mu z \ \map {T_k} {e, n_1, n_2, \ldots, n_k, z} }$

as defined in partial function equality.

$\blacksquare$


Source of Name

This entry was named for Stephen Cole Kleene.