Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Primitive Recursive Functions (Chapter 3). 2 Preliminaries: partial and total functions The domain of a partial function on set A contains the subset.

Similar presentations


Presentation on theme: "1 Primitive Recursive Functions (Chapter 3). 2 Preliminaries: partial and total functions The domain of a partial function on set A contains the subset."— Presentation transcript:

1 1 Primitive Recursive Functions (Chapter 3)

2 2 Preliminaries: partial and total functions The domain of a partial function on set A contains the subset of A. The domain of a total function on set A contains the entire set A. A partial function f is called partially computable if there is some program that computes it. Another term for such functions partial recursive. Similarly, a function f is called computable if it is both total and partially computable. Another term for such function is recursive.

3 3 Composition Let f : A → B and g : B → C Composition of f and g can then be expressed as: g f : A → C (g f)(x) = g(f(x)) h(x) = g(f(x)) NB: In general composition is not commutative: ( g f )(x) ≠ ( f g )(x)

4 4 Composition Definition: Let g be a function containing k variables and f 1... f k be functions of n variables, so the composition of g and f is defined as: h(0) = k Base step h( x 1,..., x n ) = g( f 1 (x 1,..., x n ), …, f k (x 1,..., x n ) )Inductive step Example: h(x, y) = g( f 1 (x, y), f 2 (x, y), f 3 (x, y) ) h is obtained from g and f 1... f k by composition. If g and f 1...f k are (partially) computable, then h is (partially) computable. (Proof by construction)

5 5 Recursion From programming experience we know that recursion refers to a function calling upon itself within its own definition. Definition: Let g be a function containing k variables then h is obtained through recursion as follows: h(x 1, …, x n ) = g( …, h(x 1, …, xn) ) Example: x + y f( x, 0 ) = x (1) f(x, y+1 ) = f( x, y ) + 1 (2) Input: f ( 3, 2 ) => f ( 3, 1 ) + 1 => ( f ( 3, 0 ) + 1 ) + 1 => ( ) + 1 => 5

6 6 PRC: Initial functions Primitive Recursively Closed (PRC) class of functions. Initial functions: Example of a projection function: u 2 ( x 1, x 2, x 3, x 4, x 5 ) = x 2 Definition: A class of total functions C is called PRC ² class if: The initial functions belong to C. Function obtained from functions belonging to C by either composition or recursion belongs to C. s(x) = x + 1 n(x) = 0 u i (x 1, …, x n ) = x i

7 7 PRC: primitive recursive functions There exists a class of computable functions that is a PRC class. Definition : Function is considered primitive recursive if it can be obtained from initial functions and through finite number of composition and recursion steps. Theorem : A function is primitive recursive iff it belongs to the PRC class. (see proof in chapter 3) Corollary : Every primitive recursive function is computable.

8 8 Primitive recursive functions: sum We have already seen the addition function, which can be rewritten in LRR as follows: sum( x, succ(y) ) => succ( sum( x, y)) ; sum( x, 0 ) => x ; Example: sum(succ(0),succ(succ(succ(0)))) => succ(sum(succ(0),succ(succ(0)))) => succ(succ(sum(succ(0),succ(0)))) => succ(succ(succ(sum(succ(0),0) => succ(succ(succ(succ(0))) => succ(succ(succ(1))) => succ(succ(2)) => succ(3) => 4 NB: To prove that a function is primitive recursive you need show that it can be obtained from the initial functions using only concatenation and recursion.

9 9 Primitive recursive functions: multiplication h( x, 0 ) = 0 h( x, y + 1) = h( x, y ) + x In LRR this can be written as: mult(x,0) => 0 ; mult(x,succ(y)) => sum(mult(x,y),x) ; What would happen on the following input? mult(succ(succ(0)),succ(succ(0)))

10 10 Primitive recursive functions: factorial 0! = 1 ( x + 1 ) ! = x ! * s( x ) LRR implementation would be as follows: fact(0) => succ(null(0)) ; fact(succ(x)) => mult(fact(x),succ(x)) ; Output for the following? fact(succ(succ(null(0))))

11 11 Primitive recursive functions: power and predecessor In LRR the power function can be expressed as follows: pow(x,0) => succ(null(0)) ; pow(x,succ(y)) => mult(pow(x,y),x) ; p (0) = 0 p ( t + 1 ) = t Power function Predecessor function In LRR the predecessor is as follows: pred(1) => 0 ; pred(succ(x)) => x ;

12 12 Primitive recursive functions: ∸, | x – y | and α x ∸ 0 = x x ∸ ( t + 1) = p( x ∸ t ) | x – y | = ( x ∸ y ) + ( y ∸ x ) α(x) = 1 ∸ x dotsub(x,x) => 0 ; dotsub(x,succ(y)) => pred(dotsub(x,y)) ; abs(x,y) => sum(dotsub(x,y),dotsub(y,x)) ; α(x) => dotsub(1,x) ; What would be the output? dotsub(succ(succ(succ(0))),succ(0)) Output for the following? a(succ(succ(0))) a(null(0))

13 13 Primitive recursive functions x + y f( x, 0 ) = x f( x, y + 1 ) = f( x, y ) + 1 x * y h( x, 0 ) = 0 h( x, y + 1 ) = h( x, y ) + x x! 0! = 1 ( x + 1 )! = x! * s(x) x^y x^0 = 1 x^( y + 1 ) = x^y * x p(x) p( 0 ) = 0 p( x + 1 ) = x x ∸ y if x ≥ y then x ∸ y = x – y; else x ∸ y = 0 x ∸ 0 = x x ∸ ( t + 1) = p( x ∸ t ) | x – y | | x – y | = ( x ∸ y ) + ( y ∸ x ) α(x) α(x) = 1 ∸ x

14 14 Bounded quantifiers Theorem : Let C be a PRC class. If f( t, x 1, …, x n ) belongs to C then so do the functions g( y, x 1,..., x n ) = f( t, x 1, …, x n )

15 15 Bounded quantifiers Theorem : Let C be a PRC class. If f( t, x 1, …, x n ) belongs to C then so do the functions g( y, x 1,..., x n ) = f( t, x 1, …, x n ) Theorem: If the predicate P( t, x 1, …, x n ) belongs to some PRC class C, then so do the predicates: ( t) ≤y P(t, x 1, …, x n ) ( ∃ t) ≤y P(t, x 1, …, x n )

16 16 Primitive recursive predicates x = y d( x, y ) = α( | x – y | ) x ≤ y α ( x ∸ y ) ~P α( P ) P & Q P * Q P v Q ~ ( ~P & ~Q ) y | x y | x = ( ∃ t) ≤x { y * t = x } Prime(x) Prime(x) = x > 1 & ( t) ≤x { t = 1 v t = x v ~( t | x ) } Exercises for Chapter 3: page 62 Questions 3,4 and 5. Fibonacci function

17 17 Bounded minimalization Let P(t, x 1, …,x n ) be in some PRC class C and we can define a function g as follows:

18 18 Bounded minimalization Let P(t, x 1, …,x n ) be in some PRC class C and we can define a function g as follows:,where

19 19 Bounded minimalization Let P(t, x 1, …,x n ) be in some PRC class C and we can define a function g as follows:,where Function g also belongs to C as it is attained from composition of primitive recursive functions.

20 20 Bounded minimalization Let P(t, x 1, …,x n ) be in some PRC class C and we can define a function g as follows:,where Function g also belongs to C as it is attained from composition of primitive recursive functions. t 0 is the least value for for which the predicate P is true (1).

21 21 Bounded minimalization Let P(t, x 1, …,x n ) be in some PRC class C and we can define a function g as follows:,where Function g also belongs to C as it is attained from composition of primitive recursive functions. t 0 is the least value for for which the predicate P is true (1).

22 22 Bounded minimalization Let P(t, x 1, …,x n ) be in some PRC class C and we can define a function g as follows:,where Function g also belongs to C as it is attained from composition of primitive recursive functions. t 0 is the least value for for which the predicate P is true (1).

23 23 Bounded minimalization Let P(t, x 1, …,x n ) be in some PRC class C and we can define a function g as follows:,where Function g also belongs to C as it is attained from composition of primitive recursive functions. t 0 is the least value for for which the predicate P is true (1).

24 24 Bounded minimalization Let P(t, x 1, …,x n ) be in some PRC class C and we can define a function g as follows:,where Function g also belongs to C as it is attained from composition of primitive recursive functions. t 0 is the least value for for which the predicate P is true (1). g( y, x 1,..., x n ) produces the least value for which P is true. Finally the definition for bounded minimalization can be given as:

25 25 Bounded minimalization Let P(t, x 1, …,x n ) be in some PRC class C and we can define a function g as follows:,where Function g also belongs to C as it is attained from composition of primitive recursive functions. t 0 is the least value for for which the predicate P is true (1). g( y, x 1,..., x n ) produces the least value for which P is true. Finally the definition for bounded minimalization can be given as: Theorem: If P(t,x 1, …,x n ) belongs to some PRC class C and there is function g that does the bounded minimalization for P, then f belongs to C.

26 26 Unbounded minimalization Definition: y is the least value for which predicate P is true if it exists. If there is no value of y for which P is true, the unbounded minimalization is undefined.

27 27 Unbounded minimalization Definition: y is the least value for which predicate P is true if it exists. If there is no value of y for which P is true, the unbounded minimalization is undefined. We can then define this as a non-total function in the following way:

28 28 Unbounded minimalization Definition: y is the least value for which predicate P is true if it exists. If there is no value of y for which P is true, the unbounded minimalization is undefined. We can then define this as a non-total function in the following way: Theorem: If P(x 1, …, x n, y) is a computable predicate and if then g is a partially computable function. (Proof by construction)

29 29 Additional primitive recursive functions [ x / y ], the whole part of the division i.e. [10/4]=2 R(x,y), remainder of the division of x by y. p n, nth prime number i.e p 1 =2, p 2 =3 etc.

30 30 Pairing functions Let us consider the following primitive recursive function that provides a coding for two numbers x and y.

31 31 Pairing functions Let us consider the following primitive recursive function that provides a coding for two numbers x and y. Example: = 2 * ( ) ∸ 1 = 6 ∸ 1 = 5 = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9

32 32 Pairing functions Let us consider the following primitive recursive function that provides a coding for two numbers x and y. Example: = 2 * ( ) ∸ 1 = 6 ∸ 1 = 5 = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9

33 33 Pairing functions Let us consider the following primitive recursive function that provides a coding for two numbers x and y. Example: = 2 * ( ) ∸ 1 = 6 ∸ 1 = 5 = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9 Define z to be as: = z Then for any z there is always a unique solution x and y.

34 34 Pairing functions Let us consider the following primitive recursive function that provides a coding for two numbers x and y. Example: = 2 * ( ) ∸ 1 = 6 ∸ 1 = 5 = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9 Define z to be as: = z Then for any z there is always a unique solution x and y.

35 35 Pairing functions Let us consider the following primitive recursive function that provides a coding for two numbers x and y. Example: = 2 * ( ) ∸ 1 = 6 ∸ 1 = 5 = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9 Define z to be as: = z Then for any z there is always a unique solution x and y. Thus we have the solutions for x and y which can then be defined using the following functions:

36 36 Pairing functions More formally this can written as: Pairing Function Theorem: functions, l(z), r(z) have the following properties: are primitive recursive l( ) = x and r( ) = y = z l(z), r(z)≤ z

37 37 Gödel numbers Let (a 1, …, a n ) be any sequence, then the Gödel number is computed as follows:

38 38 Gödel numbers Let (a 1, …, a n ) be any sequence, then the Gödel number is computed as follows: Example: Take a sequence (1,2,3,4), t he Gödel number will be computed as follows:

39 39 Gödel numbers Let (a 1, …, a n ) be any sequence, then the Gödel number is computed as follows: Example: Take a sequence (1,2,3,4), t he Gödel number will be computed as follows: Gödel numbering has a special uniqueness property: If [a 1, …, a n ] = [ b 1, …, b n ] then a i = b i, where i = 1, …, n

40 40 Gödel numbers Let (a 1, …, a n ) be any sequence, then the Gödel number is computed as follows: Example: Take a sequence (1,2,3,4), t he Gödel number will be computed as follows: Gödel numbering has a special uniqueness property: If [a 1, …, a n ] = [ b 1, …, b n ] then a i = b i, where i = 1, …, n Also notice: [ a 1, …, a n ] = [ a 1, …, a n, 0 ]

41 41 Gödel numbers Given that x = [a 1, …, a n ], we can now define two important functions:

42 42 Gödel numbers Given that x = [a 1, …, a n ], we can now define two important functions: Example: Let x = [ 4, 3, 2, 1 ], then (x) 2 = 3 and (x) 4 =1 and (x) 0 = 0

43 43 Gödel numbers Given that x = [a 1, …, a n ], we can now define two important functions: Example: Let x = [ 4, 3, 2, 1 ], then (x) 2 = 3 and (x) 4 =1 and (x) 0 = 0 Lt(10) = will be the length of the sequence derived using Gödel numbering

44 44 Gödel numbers Given that x = [a 1, …, a n ], we can now define two important functions: Example: Let x = [ 4, 3, 2, 1 ], then (x) 2 = 3 and (x) 4 =1 and (x) 0 = 0 Lt(10) = will be the length of the sequence derived using Gödel numbering So: 10 = 2^1 * 3^0 * 5^1 = [ 1, 0, 1 ] => Lt(10) = 3

45 45 Gödel numbers Given that x = [a 1, …, a n ], we can now define two important functions: Example: Let x = [ 4, 3, 2, 1 ], then (x) 2 = 3 and (x) 4 =1 and (x) 0 = 0 Lt(10) = will be the length of the sequence derived using Gödel numbering So: 10 = 2^1 * 3^0 * 5^1 = [ 1, 0, 1 ] => Lt(10) = 3 Sequence Number Theorem: (1)

46 46 Gödel numbers Given that x = [a 1, …, a n ], we can now define two important functions: Example: Let x = [ 4, 3, 2, 1 ], then (x) 2 = 3 and (x) 4 =1 and (x) 0 = 0 Lt(10) = will be the length of the sequence derived using Gödel numbering So: 10 = 2^1 * 3^0 * 5^1 = [ 1, 0, 1 ] => Lt(10) = 3 Sequence Number Theorem: (1) (2)


Download ppt "1 Primitive Recursive Functions (Chapter 3). 2 Preliminaries: partial and total functions The domain of a partial function on set A contains the subset."

Similar presentations


Ads by Google