Chapter 4 A Universal Program 1 Coding programs






























- Slides: 30
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 Z 2 X 3 Z 3 … Similarly labels are ordered: A 1 B 1 C 1 D 1 E 1 A 1 B 1 C 1 D 1 … Definition: #(V) is the position of a variable or label in the given ordering, where V is the label or variable. Example: #(X 3) = 6 #(C) = 3 #(X 1) = #(X) = 2 2
Coding programs Definition: Let I be (labeled or unlabeled) instruction of the language L. Thus: , where the following points are satisfied: If I is unlabeled, then a = 0; if I is labeled with L, then a = #(L). If the variable V is mentioned in I, then c = #(V) – 1. If the statement in I is either: V←V , then b=0 V ← V + 1, b=1 V ← V – 1, b=2 If the statement in I is IF V ≠ 0 GOTO L', then b = #(L') + 2 3
Coding programs Reminder from Chapter 3: Given the following variable ordering: Y X 1, Z 1, X 2, Z 2 … Provided the following label ordering: A 1 B 1 C 1 D 1 E 1. . We have a program as follows: [A] X←X+1 IF X ≠ 0 GOTO A The instruction numbers for this program are thus: #(I 1) = < #(A) , < 1, #(X) - 1>> = <1, < 1, 1 >> = < 1, 5 > = 21 #(I 2) = <0, < #(A) + 2 , #(X) - 1 >> = <0, < 3 , 1 >> = < 0 , 23 > = 46 Definition: The program P number is then calculated as: #(P) = [ #(I 1), #(I 2) , #(I 3) , . . . ] - 1 4 In the program above: #(P) = 2^21 * 3^46 – 1;
Coding programs In order to avoid ambiguity of unlabeled Y ← Y instruction, which is <0, 0>> an additional rule is imposed: The final instruction in a program is not permitted to be the unlabeled statement Y ← Y. N. B: The program number thus determines a unique program, which can reconstructed. Example: Given #(P) = 576 = 575 + 1 575 = 5^2 + 23^1 = [ 0 , 2 , 0 , 0 , 0 , 1 ] – 9 instructions For 2 = <0, 1> = <0, <1, 0>> so unlabeled: Y ← Y + 1 For 1 = <1, 0> = <1, <0, 0>> so labeled: [A] Y ← Y For 0 = <0, 0>> , this will be unlabeled: Y ← Y Empty program has the number 0. 5
The Halting Problem Definition: For a given y, let P be the program such that #(P) = y. Then HALT(x , y) is true if is defined and false if is undefined, so: HALT( x , y ) program number y eventually halts on input x • Theorem: HALT( x , x ) is not a computable predicate. • Proof: Construct a program P: [A] IF HALT( X , X ) GOTO A Let #(P) = y 0, then HALT( x, y 0) So we can set x=y 0, thus ~HALT( x , x ) HALT (y 0, y 0) Contradiction! ~HALT(y 0, y 0) 6
Insolvability of Halting Problem • • • “There is no algorithm that, given a program of P and an input to that program, can determine whether or not the given program will eventually halt on the given input” (Chapter 4, page 68) Church’s Thesis: Any algorithm for computing on numbers can be carried out by a program of P. See Golbach’s conjecture (every even number greater or equal to 4 is the sum of two prime numbers) for an example of computable program for which it is hard to determine whether it 7 will ever halt.
Universality • Universality Theorem: For each n > 0, where #(P)=y For each n >0, the function • is partially computable. Step-Counter Theorem: For each n > 0, the predicate is primitive recursive, where: Program number y halts after t or fewer Steps on inputs x 1, …, xn. 8
Normal Form Theorem • Normal Form Theorem: Let f( x 1 , …, xn) be a partially computable function. Then there is a primitive recursive predicate R( x 1, …, xn, y ) such that: • Theorem: A function is computable iff can be obtained from the initial functions by a finite number of applications of composition, recursion and (proper ) minimalization 9
Normal Form Theorem • Normal Form Theorem Proof: Let y 0 be the program number for f(x 1, …, xn). when the right-hand side of the equation is defined, then there exists a number z: For any z, the program with number y 0 has reached a terminal snapshot in r(z) or fewer steps and l(z) is in output variable Y. • If the right side is undefined, then all t i. e. is false for 10
Recursively Enumerable Sets • Theorem: Let the sets B , C belong to some PRC class C. Then so do the sets (prove using predicate union and intersection) • Theorem: Let C be a PRC class, and let B be a subset of. Then B belongs to C iff: belongs to C • Definition: The set is called recursively enumerable if there is a partially computable function g(x) such that: 11
Recursively Enumerable Sets • If B is a recursive set, then B is recursively enumerable. • The set B is recursive iff B and enumerable. are both recursively • If B and C are recursively enumerable sets so are • Enumeration Theorem: A set B is recursively enumerable iff there is an n for which B = Wn 12
Recursively Enumerable Sets • Definition: K is a set of all numbers n such that program number n eventually halts on input n. K is recursively enumerable but not recursive. • Theorem: Let B be a recursively enumerable set. Then there is a primitive recursive predicate R(x, t) such that 13
Recursively Enumerable Sets • Theorem: Let S be a nonempty recursively enumerable set. Then there is a primitive recursive function f(u) such that S = { f(n) | n ϵ N} = { f(0) , f(1) , … } , where S is the range of f. • Theorem: Let f(x) be a partially computable function and let S = { f(x) | f(x) ↓} , where S is the range. Then S is recursively enumerable. 14
Recursively Enumerable Sets • Theorem: Suppose that , then the following statements are all equivalent: – S is recursively enumerable – S is the range of a primitive recursive function – S is the range of a partial recursive function 15
The Parameter Theorem • s-m-n Theorem: For each n , m > 0 there is a primitive recursive function such that: 16
The Parameter Theorem • s-m-n proof: using induction on n. Base case: For program P take n = 1, then the following must be shown to be true: • should be the number of the program with m inputs , which must be the same as program number y having m + 1 inputs. • #(P) = y • So provide the will be the number of the program, that will variable before proceeding with P. 17
The Parameter Theorem • s-m-n proof: continued… • The instruction will have a number associated with it as follows: <0, <1, 2 m+1>> = 16 m + 10 • Thus function: may be defined as a primitive recursive • Induction step: let n = k, then: 18
Diagonalization and Reducibility • Definition: Let TOT be the set of all numbers p such that p is the number of a program that computes a total function f(x) of one variable. That is, , where , s • Theorem: TOT is not recursively enumerable. 19
Diagonalization and Reducibility • Theorem: TOT is not recursively enumerable. • Proof: Assume that TOT is recursively enumerable. Then given that , then there is a computable function g(x): and let: • Since g(x) is the number of a program that computes a total function, thus h is a computable function. Let P be the program that computes h and p=#(P). Then 20 Contradiction!
Diagonalization and Reducibility • Theorem: Suppose A ≤m B, then: – If B is recursive, then A is recursive. – If B is recursively enumerable, then A is as well. • Definition: A set A is m-complete if: – A is recursively enumerable and – For every recursively enumerable set B, B ≤m A 21
Diagonalization and Reducibility • If A ≤m B and B ≤m C, then A ≤m C (transitivity) • If A is m-complete, B is recursively enumerable and A ≤m B then B is m-complete. • Definition: A B means that A ≤m B and B ≤m A • Theorem: • K and K 0 are m-complete • K • Theorem: K 0 EMPTY is not recursively enumerable, where 22
Rice's Theorem Examples: • Г is the set of computable functions • Г is the set of primitive recursive functions • Г is the set of partially computable functions that are defined for all but a finite number of values of x • Rice’s Theorem: Let Г be a collection of partially computable functions of one variable, such that there are functions f(x), g(x) with f(x) in Г, g(x) not in Г. Then RГ is not recursive. • Corollary: There are no algorithms for testing a given program P of the language L to determine whether belongs to any of the classes described in the above examples. • What does it mean? If Г is a non-trivial property of functions, then Г is undecidable. 23
Rice's Theorem Proof (using recursion theorem): Let f(x) and g(x) be partially computable functions such that: • f(x) Г • g(x) Г Suppose Iis not recursive is computable. Let and Then, since - is partially computable.
Rice's Theorem Proof (cont’d): Since is partially computable, by recursion theorem there is a number e s. t. : As and : Contradiction!
The Recursion Theorem • Recursion Theorem: Let g(z, x 1, …, xm) be a partially computable function of m + 1 variables. Then, there is a number e such that: • Discussion: Given a partially computable function g, we must produce a “program” e that is supplied m arguments and one of the implicit arguments is its own encoding e. • We may attempt to prove theorem by first incrementing a variable e times. But then the problem is that the encoding of such a program will be larger than e! • The program P with #(P) = e must contain a “partial description” of itself built-in so that it can computer its own encoding e from that description. 26
Let Q be the program: Z= Y = g(Z, X 1, X 2, …, Xm) Now, the program P will consist of #(Q) copies of the instruction Xm+1 = Xm+1 + 1, followed by the program Q. After executing the first #(Q) increments as well as the instruction Z = …, Z holds the number of the program consisting of the #(Q) copies of the instruction followed by the program Q (Remember that as defined in the proof of the parameter theorem computes the # of the program consisting of #(Q) copies of the increment instruction Xm+1 = Xm+1 + 1 followed by program Q). But this is exactly the program P. 27
The Recursion Theorem Proof: Let g be a partially computable function such as: is the function in the parameter theorem. Then for some z 0 and using s-m-n theorem: Set v = z 0 and , then: Contradiction! 28
The Recursion Theorem • Corollary: There is a number e such that for all x: • Proof: Let g be a computable function: Using the recursion theorem: • Fixed Point Theorem: Let f(z) be a computable function. Then there is a number e such that: Take g(z, x) = 29
Computable functions that are not primitive recursive • The primitive recursive functions are precisely the functions from the initial functions (see Chapter 3) • Theorem: The unary primitive recursive functions are precisely those obtained from the initial functions s(x) = x + 1, n(x) = 0, l(x) , r(x) by applying the following three operations on unary functions: – To go from f(x) and g(x) to f(g(x)) – To go from f(x) and g(x) to < f(x) , g(x) > – To go from f(x) and g(x) to the function defined by the recursion • Theorem: The function f( x , x ) + 1 is a computable function that is not primitive recursive. 30