300 likes | 459 Views
Chapter 4: A Universal Program. 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 …
E N D
Coding programs • Example: For our programs P we have variables that are arranged in a certain order: Y1 X1 Z1 X2 Z2 X3 Z3 … Similarly labels are ordered: A1 B1 C1 D1 E1 A1 B1 C1 D1 … • Definition: #(V) is the position of a variable or label in the given ordering, where V is the label or variable. • Example:#(X3) = 6 #(C) = 3 #(X1) = #(X) = 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
Coding programs • Reminder from Chapter 3: • Given the following variable ordering: Y X1, Z1, X2, Z2 … • Provided the following label ordering: A1 B1 C1 D1 E1 .... • We have a program as follows: [A] X ← X + 1 IF X ≠ 0 GOTO A • The instruction numbers for this program are thus: #(I1) = < #(A) ,< 1, #(X) - 1>> = <1, < 1,1 >> = < 1,5 > = 21 #(I2) = <0,< #(A) + 2 , #(X) - 1 >> = <0, < 3 , 1 >> = < 0 , 23 > = 46 • Definition: The program P number is then calculated as: #(P) = [ #(I1), #(I2) , #(I3) , ... ] - 1 • 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,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 , 0 , 2 , 0 , 0 , 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,0>> , this will be unlabeled: Y ← Y • Empty program has the number 0.
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) = y0, then HALT( x, y0) ~HALT( x , x ) So we can set x=y0, thus HALT (y0,y0) ~HALT(y0,y0) Contradiction!
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 will ever halt.
Universality • Universality Theorem: For each n > 0, where For each n >0, the function is partially computable. • Step-Counter Theorem: For each n > 0, the • predicate is primitive recursive, where: ,where #(P)=y Program number y halts after t or fewer Steps on inputs x1, …, xn.
Normal Form Theorem • Normal Form Theorem: Let f( x1 ,…, xn) be a partially computable function. Then there is a primitive recursive predicate R( x1, …, 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
Normal Form Theorem • Normal Form Theorem Proof: • Let y0 be the program number for f(x1,…,xn). • when the right-hand side of the equation is defined, then there exists a number z: • For any z, the program with number y0 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 is false for all t i.e.
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: • Definition: The set is called recursively enumerable if there is a partially computable function g(x) such that: belongs to C
Recursively Enumerable Sets • If B is a recursive set, then B is recursively enumerable. • The set B is recursive iffB and are both recursively enumerable. • 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
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
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.
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 recursive function • S is the range of a partial recursive function
The Parameter Theorem • s-m-n Theorem: • For each n , m > 0 there is a primitive recursive function such that:
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 will be the number of the program, that will provide the variable before proceeding with P.
The Parameter Theorem • s-m-n proof: continued… • The instruction will have a number associated with it as follows:<0,<1,2m+1>> = 16m + 10 • Thus may be defined as a primitive recursive function: • Induction step: let n = k, then:
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 • Theorem: TOT is not recursively enumerable. ,s
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 • 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 enumerableand • For every recursively enumerable set B, B ≤m A
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 K0 are m-complete • K K0 • Theorem: EMPTY is not recursively enumerable, where
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.
Rice's Theorem • Proof (using recursion theorem): • Let f(x) and g(x) be partially computable functionssuch that: • f(x) Г • g(x) Г • Suppose is computable. Let • and • Then, since • - is partially computable. Iis not recursive
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, x1, …, 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 the 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 that it can computer its own encoding e from that description.
Let Q be the program: Z = Y = g(Z, X1, X2, …, 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.
The Recursion Theorem • Proof: Let g be a partially computable function such as: • is the function in the parameter theorem. Then for some z0 and using s-m-n theorem: • Set v = z0 and , then: • Contradiction!
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) =
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.