Pairing Functions and Gödel Numbers

Slides:



Advertisements
Similar presentations
October 13, 2009Theory of Computation Lecture 11: A Universal Program III 1 Coding Programs by Numbers Gödel numbers are usually very large, even for small.
Advertisements

Copyright © Cengage Learning. All rights reserved. CHAPTER 5 SEQUENCES, MATHEMATICAL INDUCTION, AND RECURSION SEQUENCES, MATHEMATICAL INDUCTION, AND RECURSION.
October 27, 2009Theory of Computation Lecture 12: A Universal Program IV 1Universality Then we append the following instruction: [C]IF K = Lt(Z) + 1 
November 10, 2009Theory of Computation Lecture 16: Computation on Strings I 1Diagonalization Another example: Let TOT be the set of all numbers p such.
CSE115/ENGR160 Discrete Mathematics 03/31/11
October 8, 2009Theory of Computation Lecture 10: A Universal Program II 1 Pairing Functions and Gödel Numbers This way the equation  x, y  = z defines.
September 17, 2009Theory of Computation Lecture 4: Programs and Computable Functions III 1 Macros Now we want to use macros of the form: W  f(V 1, …,
October 1, 2009Theory of Computation Lecture 8: Primitive Recursive Functions IV 1 Primitive Recursive Predicates Theorem 6.1: Let C be a PRC class. If.
November 3, 2009Theory of Computation Lecture 14: A Universal Program VI 1 Recursively Enumerable Sets Definition: We write: W n = {x  N |  (x, n) 
Chapter 4: A Universal Program 1. Coding programs Example : For our programs P we have variables that are arranged in a certain order: Y 1 X 1 Z 1 X 2.
(CSC 102) Discrete Structures Lecture 10.
Induction and recursion
Mathematics Review Exponents Logarithms Series Modular arithmetic Proofs.
Mathematical Induction. F(1) = 1; F(n+1) = F(n) + (2n+1) for n≥ F(n) n F(n) =n 2 for all n ≥ 1 Prove it!
DECIDABILITY OF PRESBURGER ARITHMETIC USING FINITE AUTOMATA Presented by : Shubha Jain Reference : Paper by Alexandre Boudet and Hubert Comon.
Great Theoretical Ideas in Computer Science.
December 1, 2009Theory of Computation Lecture 21: Turing Machines II 1 Simulation of L n in T We will now construct a Post-Turing program Q that simulates.
Chapter 2 Logic 2.1 Statements 2.2 The Negation of a Statement 2.3 The Disjunction and Conjunction of Statements 2.4 The Implication 2.5 More on Implications.
CS 103 Discrete Structures Lecture 13 Induction and Recursion (1)
Theory of Computation Lecture 5: Primitive Recursive Functions I
November 12, 2009Theory of Computation Lecture 17: Calculations on Strings II 1 Numerical Representation of Strings First, we define two primitive recursive.
CompSci 102 Discrete Math for Computer Science March 13, 2012 Prof. Rodger Slides modified from Rosen.
October 4, 2016Theory of Computation Lecture 9: A Universal Program I 1Minimalization Example 15: R(x, y) R(x, y) is the remainder when x is divided by.
CMSC Discrete Structures
Theory of Computation Lecture 10: A Universal Program I
Direct Proof and Counterexample III: Divisibility
Applied Discrete Mathematics Week 11: Relations
EQUATION IN TWO VARIABLES:
Theory of Computation Lecture 12: A Universal Program III
Number Theory and the Real Number System
Dr. Clincy Professor of CS
Theory Of Computer Science
Chapter 3 The Real Numbers.
Diagonalization and Reducibility
Theory of Computation Lecture 23: Turing Machines IV
Theory of Computation Lecture 14: A Universal Program V
Recursively Enumerable Sets
Numerical Representation of Strings
Theory of Computation Lecture 22: Turing Machines III
Mathematical Induction Recursion
Number Theory and the Real Number System
Theory of Computation Lecture 16: A Universal Program VII
Theory of Computation Lecture 5: Programs and Computable Functions III
Interpolation.
Theory of Computation Lecture 6: Primitive Recursive Functions I
Quantum Two.
Theory Of Computer Science
Direct Proof and Counterexample III
The Programming Language L
Applied Discrete Mathematics Week 9: Integer Properties
CMSC Discrete Structures
Pairing Functions and Gödel Numbers
Theory of Computation Lecture 21: Turing Machines II
Diagonalization and Reducibility
Recursively Enumerable Sets
CMSC Discrete Structures
Primitive Recursive Predicates
Recurrence Relations Discrete Structures.
The Programming Language L
Numerical Representation of Strings
Numerical Representation of Strings
Theory of Computation Lecture 4: Programs and Computable Functions II
Theory of Computation Lecture 9: A Universal Program I
Number Theory.
Theory of Computation Lecture 6: Primitive Recursive Functions I
Theory of Computation Lecture 13: A Universal Program V
Theory of Computation Lecture 17: Calculations on Strings II
Theory of Computation Lecture 12: A Universal Program IV
Theory of Computation Lecture 11: A Universal Program III
Theory of Computation Lecture 23: Turing Machines III
Presentation transcript:

Pairing Functions and Gödel Numbers x, y + 1 = 2x(2y + 1). Examples: x, y = 41 x = 1 y = 10 x, y = 31 x = 5 y = 0 x, y = 36 x = 0 y = 18 x, y = 0 y = 0 March 7, 2019 Theory of Computation Lecture 10: A Universal Program II

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 < 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). March 7, 2019 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. March 7, 2019 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. March 7, 2019 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. March 7, 2019 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. March 7, 2019 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 March 7, 2019 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. March 7, 2019 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) March 7, 2019 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 … March 7, 2019 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 . March 7, 2019 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. March 7, 2019 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. March 7, 2019 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 compute i = 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. March 7, 2019 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. March 7, 2019 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. March 7, 2019 Theory of Computation Lecture 10: A Universal Program II

Coding Programs by Numbers Note that the number of the unlabeled instruction Y  Y is 0, 0, 0 = 0, 0 = 0. Thus, the number of a program will be unchanged if an unlabeled instruction Y  Y is appended to it. Although this ambiguity is harmless, we avoid it by adding a sentence to our definition of programs of L : The final instruction in a program is not permitted to be the unlabeled statement Y  Y. March 7, 2019 Theory of Computation Lecture 10: A Universal Program II

Coding Programs by Numbers Then each number determines a unique program. As an example, let us determine the program whose number is 199: 199 + 1 = 200 = 23  30  52 = [3, 0, 2]. So if #(P ) = 199, P consists of 3 instructions, the second of which is the unlabeled statement Y  Y. 3 = 2, 0 = 2, 0, 0 2 = 0, 1 = 0, 1, 0 Thus, the program is: [B] Y  Y Y  Y Y  Y+1 March 7, 2019 Theory of Computation Lecture 10: A Universal Program II