Pairing Functions and G ö del Numbers

1 / 15

# Pairing Functions and G ö del Numbers - PowerPoint PPT Presentation

Pairing Functions and G ö del Numbers. This way the equation x, y = z defines functions x = l(z) and y = r(z). x, y = z also implies that x, y &lt; z + 1, and therefore l(z)  z, r(z)  z. Then we can write: l(z) = min xz [(y) z (z = x, y)], r(z) = min yz [(x) z (z = x, y)],

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about ' Pairing Functions and G ö del Numbers' - phoebe

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Pairing Functions and Gödel Numbers

This way the equation x, y = z defines functionsx = l(z) and y = r(z).

x, y = z also implies that x, y < z + 1, and therefore l(z)  z, r(z)  z.

Then we can write:

l(z) = minxz[(y)z(z = x, y)],

r(z) = minyz[(x)z(z = x, y)],

showing that l(z) and r(z) are primitive recursive functions.

It is also true that x, y = z  x = l(z) & y = r(z).

Theory of Computation Lecture 10: A Universal Program II

Pairing Functions and Gödel Numbers

Theorem 8.1 (Pairing Function Theorem):

The functions x, y, l(z) and r(z) have the following properties:

1. they are primitive recursive;

2. l(x, y) = x; r(x, y) = y;

3. l(z), r(z) = z;

4. l(z), r(z)  z.

Theory of Computation Lecture 10: A Universal Program II

Pairing Functions and Gödel Numbers

We now want to develop primitive recursive functions that encode and decode arbitrary finite sequences of numbers.

Our method (actually invented by Gödel) will be based on the prime power decomposition of integers.

We define the Gödel number of the sequence (a1, …, an) to be the number

For example, the Gödel number of the sequence (7, 6, 4, 4, 3) is

27  36  54  74  113.

Theory of Computation Lecture 10: A Universal Program II

Pairing Functions and Gödel Numbers

For each n, the function [a1, …, an] is clearly primitive recursive.

Gödel numbering satisfies the following uniqueness property:

Theorem 8.2:

If [a1, …, an] = [b1, …, bn] then ai = bi for i = 1, …, n.

This follows immediately from the fundamental theorem of arithmetic, i.e., the uniqueness of the factorization of integers into primes.

Theory of Computation Lecture 10: A Universal Program II

Pairing Functions and Gödel Numbers

However, it is important to note that

[a1, …, an] = [a1, …, an, 0],

because for any n+1, p0n+1 = 1.

Actually, we could add any number of 0s to the right end of a sequence without changing its Gödel number.

Since we have 1 = 20 = 2030 = 203050 = … ,

it is useful to define 1 as the Gödel number of the empty sequence of length 0.

Theory of Computation Lecture 10: A Universal Program II

Pairing Functions and Gödel Numbers

Obviously, adding a zero to the left of the sequence will lead to a Gödel number different from the initial one.

Examples:

[1, 4] = 21  34 = 162

[1, 4, 0] = 21  34  50 = 162

[0, 1, 4] = 20  31  54 = 1875

Theory of Computation Lecture 10: A Universal Program II

Pairing Functions and Gödel Numbers

We will now define a primitive recursive function (x)i so that if x = [a1, …, an], then (x)i = ai.

We set

(x)i = mintx(pit+1 | x).

Then we define the length Lt(x) of the sequence for the Gödel number x:

Lt(x) = minix((x)i  0 & (j)x(j  i  (x)j = 0)).

Example: If x = 20 = 22  51 = [2, 0, 1],

then (x)1 = 2, (x)2 = 0, (x)3 = 1, (x)4 = (x)5 = … 0,

Lt(x) = 3.

Theory of Computation Lecture 10: A Universal Program II

Pairing Functions and Gödel Numbers
• If x > 1 and Lt(x) = n, then pn divides x but no prime greater than pn divides x.
• Note that Lt([a1, …, an]) = n if and only if an  0.
• Theorem 8.3 (Sequence Number Theorem):
• ([a1, …, an])i = ai if 1  i  n
• ([(x)1, …, (x)n]) = x if n  Lt(x)

Theory of Computation Lecture 10: A Universal Program II

Coding Programs by Numbers

After having developed appropriate coding techniques, it will be our goal to enumerate all programs of the language L .

In other words, each program P of L will receive a number #(P ) so that the program can be retrieved from its number.

Let us first arrange the variables in the following order:

Y X1 Z1 X2 Z2 X3 Z3 …

And also the labels:

A1 B1 C1 D1 E1 A2 B2 C2 D2 E2 A3 …

Theory of Computation Lecture 10: A Universal Program II

Coding Programs by Numbers

We write #(V), #(L) for the position of a given variable or label in the appropriate ordering.

For example, #(X2) = 4, #(Z) = 3, #(C2) = 8.

Now let I be an instruction (labeled or unlabeled) of the language L .

Theory of Computation Lecture 10: A Universal Program II

Coding Programs by Numbers
• Then we write
• #(I) = a, b, c ,
• where
• if I is unlabeled, then a = 0; if I is labeled L, then a = #(L);
• if the variable V is mentioned in I, then c = #(V) – 1;
• if the statement in I is V  V, V  V+1, or V  V-1, then b = 0, 1, or 2, respectively;
• if the statement in I is IF V0 GOTO L’then b = #(L’) + 2.

Theory of Computation Lecture 10: A Universal Program II

Coding Programs by Numbers

Examples:

The number of the unlabeled instruction X  X-1 is

0, 2, 1 = 0, 11 = 22.

The number of the instruction [A] X  X-1 is

1, 2, 1 = 1, 11 = 45.

Theory of Computation Lecture 10: A Universal Program II

Coding Programs by Numbers

Note that for any given number q there is a unique instruction I with #(I) = q.

We first calculate l(q).

If l(q) = 0, I is unlabeled; otherwise I has the l(q)-th label in our list.

To find the variable mentioned in I, we computei = r(r(q)) + 1 and locate the i-th variable V in our list.

Then the statement will be V  V, V  V+1, or V  V-1, if l(r(q)) = 0, 1, or 2, respectively; otherwise, it will be the statement IF V0 GOTO L,where L is the j-th label in our list and j = l(r(q)) –2.

Theory of Computation Lecture 10: A Universal Program II

Coding Programs by Numbers

Finally, for a program P that consists of the instructions I1, I2, …, Ik, we set

#(P ) = [#(I1), #(I2), …, #(Ik)] – 1.

This way we associated every possible program in L with a unique number.

Theory of Computation Lecture 10: A Universal Program II

Coding Programs by Numbers

Gödel numbers are usually very large, even for small programs.

Let us look at the following example:

[A] X  X+1

IF X0 GOTO A

#(I1) = 1, 1, 1 = 1, 5 = 21

#(I2) = 0, 3, 1 = 0, 23 = 46

So the number of our small program is

221  346 – 1.

Theory of Computation Lecture 10: A Universal Program II