Download Primitive Recursive Functions (Chapter 3)

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Primitive Recursive Functions
(Chapter 3)
1
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.
2
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)
3
Composition

Definition: Let g be a function containing k
variables and f1 ... fk be functions of n variables, so
the composition of g and f is defined as:
h(0) = k
Base step
h( x1, ... , xn) = g( f1(x1 ,..., xn), … , fk(x1 ,..., xn) )
Inductive step
Example: h(x , y) = g( f1(x , y), f2(x , y), f3(x , y) )


h is obtained from g and f1... fk by composition.
If g and f1...fk are (partially) computable, then h is
(partially) computable. (Proof by construction)
4
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(x1 , … , xn) = g( … , h(x1 , … , xn) )
Example: x + y
f( x , 0 ) = x
(1)
f(x , y+1 ) = f( x , y ) + 1
(2)
5
Input: f ( 3, 2 ) => f ( 3 , 1 ) + 1 => ( f ( 3 , 0 ) + 1 ) + 1 => ( 3 + 1 ) + 1 => 5
PRC: Initial functions

Primitive Recursively Closed (PRC) class of functions.

Initial functions:
s(x) = x + 1
n(x) = 0
ui (x1 , … , xn) = xi

Example of a projection function: u2 ( x1 , x2 , x3 , x4 , x5 ) = x2

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.
6
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.
7
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.
8
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)))
9
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))))
10
Primitive recursive functions:
power and predecessor
Power function
x0 = 1
x y+1 = x y * x
Predecessor
function
p (0) = 0
p(t+1)=t
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) ;
In LRR the predecessor is as follows:
pred(1) => 0 ;
pred(succ(x)) => x ;
11
Primitive recursive functions:
∸, | x – y | and α
x∸0=x
x ∸ ( t + 1) = p( x ∸ t )
|x–y|=(x∸y)+(y∸x)
α(x) = 1 ∸ x
if
x0
1
 ( x)  
0 otherwise
dotsub(x,x) => 0 ;
dotsub(x,succ(y)) => pred(dotsub(x,y)) ;
What would be the output?
 dotsub(succ(succ(succ(0))),succ(0))
abs(x,y) => sum(dotsub(x,y),dotsub(y,x)) ;
α(x) => dotsub(1,x) ;
Output for the following?
 a(succ(succ(0)))
 a(null(0))
12
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
x∸0=x
x ∸ ( t + 1) = p( x ∸ t )
if x ≥ y then x ∸ y = x – y; else x ∸ y = 0
|x–y|
α(x)
|x–y|=(x∸y)+(y∸x)
α(x) = 1 ∸ x
13
Bounded quantifiers

Theorem: Let C be a PRC class. If f( t , x1 , … ,
xn) belongs to C then so do the functions
y
g( y , x1 , ... , xn ) =  f( t , x1 , …, xn )
t 0 y
g( y , x1 , ... , xn ) =  f( t , x1 , …, xn )
t 0
14
Bounded quantifiers

Theorem: Let C be a PRC class. If f( t , x1 , … ,
xn) belongs to C then so do the functions
y
g( y , x1 , ... , xn ) =  f( t , x1 , …, xn )
t 0
y
g( y , x1 , ... , xn ) =  f( t , x1 , …, xn )
t 0

Theorem: If the predicate P( t, x1 , … , xn ) belongs to some
PRC class C, then so do the predicates:
(t)≤y P(t, x1, … , xn )
(∃t)≤y P(t, x1, … , xn )
15
Primitive recursive predicates
x=y
d( x , y ) = α( | x – y | )
x≤y
α(x∸y)
~P
α( P )
P&Q
P*Q
PvQ
~ ( ~P & ~Q )
y|x
Prime(x)
y | x = (∃t)≤x { y * t = 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
16
Bounded minimalization
Let P(t, x1, … ,xn) be in some PRC class C and we can define a function g as follows:
g t, x1,..., xn  =  Pt, x1,..., xn 
y
u
u=0 t=0
17
Bounded minimalization
Let P(t, x1, … ,xn) be in some PRC class C and we can define a function g as follows:
g t, x1,..., xn  =  Pt, x1,..., xn 
y
u
u=0 t=0
,where
P (t,x 1, . . . ,xn )= 0 for t<t 0
P (t 0, x 1, . .. ,x n )= 1
18
Bounded minimalization
Let P(t, x1, … ,xn) be in some PRC class C and we can define a function g as follows:
g t, x1,..., xn  =  Pt, x1,..., xn 
y
u
u=0 t=0

,where
P (t,x 1, . . . ,xn )= 0 for t<t 0
P (t 0, x 1, . .. ,x n )= 1
Function g also belongs to C as it is attained from composition of primitive
recursive functions.
19
Bounded minimalization
Let P(t, x1, … ,xn) be in some PRC class C and we can define a function g as follows:
g t, x1,..., xn  =  Pt, x1,..., xn 
y
u
u=0 t=0


,where
P (t,x 1, . . . ,xn )= 0 for t<t 0
P (t 0, x 1, . .. ,x n )= 1
Function g also belongs to C as it is attained from composition of primitive
recursive functions.
t0 is the least value for for which the predicate P is true (1).
20
Bounded minimalization
Let P(t, x1, … ,xn) be in some PRC class C and we can define a function g as follows:
g t, x1,..., xn  =  Pt, x1,..., xn 
y
u
u=0 t=0


,where
P (t,x 1, . . . ,xn )= 0 for t<t 0
P (t 0, x 1, . .. ,x n )= 1
Function g also belongs to C as it is attained from composition of primitive
recursive functions.
t0 is the least value for for which the predicate P is true (1).
t < t0 :  P t, x1,..., xn  = 1  True
t  t0 :  P t, x1,..., xn  = 0  False
21
Bounded minimalization
Let P(t, x1, … ,xn) be in some PRC class C and we can define a function g as follows:
g t, x1,..., xn  =  Pt, x1,..., xn 
y
u
,where
u=0 t=0


P (t,x 1, . . . ,xn )= 0 fort<t 0
P (t 0, x1, . . . ,x n )= 1
Function g also belongs to C as it is attained from composition of primitive
recursive functions.
t0 is the least value for for which the predicate P is true (1).
  Pt, x
u
t < t0 :  P t, x1,..., xn  = 1  True
t  t0 :  P t, x1,..., xn  = 0  False
1,.
.., xn  = 1if u < t0
t =0
  Pt, x
u
1,.
.., xn  = 0if u  t0
t =0
22
Bounded minimalization
Let P(t, x1, … ,xn) be in some PRC class C and we can define a function g as follows:
g t, x1,..., xn  =  Pt, x1,..., xn 
y
u
,where
u=0 t=0


P (t,x 1, . . . ,xn )= 0 for t<t 0
P (t 0, x 1, . .. ,x n )= 1
Function g also belongs to C as it is attained from composition of primitive
recursive functions.
t0 is the least value for for which the predicate P is true (1).
  Pt, x
u
t < t0 :  P t, x1,..., xn  = 1  True
t  t0 :  P t, x1,..., xn  = 0  False
1,.
.., xn  = 1if u < t0
t =0
  Pt, x
u
1,.
g (y,x 1, . . . ,xn )= ∑ 1= 1=t 0 for u<t 0
.., xn  = 0if u  t0
t =0
23
Bounded minimalization
Let P(t, x1, … ,xn) be in some PRC class C and we can define a function g as follows:
g t, x1,..., xn  =  Pt, x1,..., xn 
y
u
,where
u=0 t=0


P (t,x 1, . . . ,xn )= 0 for t<t 0
P (t 0, x 1,. .. ,x n )= 1
Function g also belongs to C as it is attained from composition of primitive
recursive functions.
t0 is the least value for for which the predicate P is true (1).
  Pt, x
u
t < t0 :  P t, x1,..., xn  = 1  True
t  t0 :  P t, x1,..., xn  = 0  False
1,.
.., xn  = 1if u < t0
t= 0
  Pt, x
u
1,.
g (y,x 1, . . . ,xn )= ∑ 1= 1=t 0 for u<t 0
.., xn  = 0if u  t0
t= 0

g( y , x1 , ... , xn ) produces the least value for which P is true. Finally the
definition for bounded minimalization can be given as:
min
t y
Pt, x1,. .., xn = g  y, x1,. .., xn  if t t  y Pt, x1,. .., xn 
min
t y
Pt, x1,. .., xn = 0otherwise
24
Bounded minimalization
Let P(t, x1, … ,xn) be in some PRC class C and we can define a function g as follows:
g t, x1,..., xn  =  Pt, x1,..., xn 
y
u
,where
u=0 t=0
P (t,x 1, . . . ,xn )= 0 for t<t 0
P (t 0, x 1, . .. ,x n )= 1
Function g also belongs to C as it is attained from composition of primitive
recursive functions.
t0 is the least value for for which the predicate P is true (1).


  Pt, x
u
t < t0 :  P t, x1,..., xn  = 1  True
t  t0 :  P t, x1,..., xn  = 0  False
1,.
.., xn  = 1if u < t0
t= 0
  Pt, x
u
1,.
g (y,x 1, . . . ,xn )= ∑ 1= 1=t 0 for u<t 0
.., xn  = 0if u  t0
t= 0
g( y , x1 , ... , xn ) produces the least value for which P is true. Finally the
definition for bounded minimalization can be given as:

min
t y
Pt, x1,. .., xn = g  y, x1,. .., xn  if t t  y Pt, x1,. .., xn 
min
t y

Pt, x1,. .., xn = 0otherwise
Theorem: If P(t,x1, … ,xn) belongs to some PRC class C and there is function g 25
that does the bounded minimalization for P, then f belongs to C.
Unbounded minimalization
min P ( x1,. .. , x n , y )
y

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.
26
Unbounded minimalization
min P ( x1,. .. , x n , y )
y


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:
x− y= min [ y+ z= x ]
z
27
Unbounded minimalization
min P ( x1,. .. , x n , y )
y


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:
x− y= min [ y+ z= x ]
z

Theorem: If P(x1, … , xn, y) is a computable predicate and if
g ( x1,. .. , xn )= min P (x1,. .. , x n , y)
y
then g is a partially computable function.
28
(Proof by construction)
Additional primitive recursive functions

[ x / y ] , the whole part of the division i.e. [10/4]=2
x / y= mt inx t +1* y > x

R(x,y) , remainder of the division of x by y.
Rx, y  = x -  y * x / y

pn , nth prime number i.e p1=2 , p2=3 etc.
p0 = 0,
pn+ 1= min [ Prime(t)& t> pn ]
t < p n! + 1
29
Pairing functions
Let us consider the following primitive recursive function that provides a
coding for two numbers x and y.

< x, y >= 2 x 2y +1 - 1
30
Pairing functions
Let us consider the following primitive recursive function that provides a
coding for two numbers x and y.

< x, y >= 2 x 2y +1 -1
Example: <1,1> = 2 * ( 2 + 1 ) ∸ 1 = 6 ∸ 1 = 5
<1,2> = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9
31
Pairing functions
Let us consider the following primitive recursive function that provides a
coding for two numbers x and y.

< x, y >= 2 x 2y +1 -1
Example: <1,1> = 2 * ( 2 + 1 ) ∸ 1 = 6 ∸ 1 = 5
<1,2> = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9
Note that 2 x 2y +1  0 , so
we can rearrange
as
follows : < x, y > +1= 2 x 2y +1
32
Pairing functions
Let us consider the following primitive recursive function that provides a
coding for two numbers x and y.

< x, y >= 2 x 2y +1 -1
Example: <1,1> = 2 * ( 2 + 1 ) ∸ 1 = 6 ∸ 1 = 5
<1,2> = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9
Note that 2 x 2y +1  0 , so we can rearrange

as
follows : < x, y > +1= 2 x 2y +1
Define z to be as: < x , y > = z
Then for any z there is always a unique solution x and y.
33
Pairing functions
Let us consider the following primitive recursive function that provides a
coding for two numbers x and y.

< x, y >= 2 x 2y +1 -1
Example: <1,1> = 2 * ( 2 + 1 ) ∸ 1 = 6 ∸ 1 = 5
<1,2> = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9
Note that 2 x 2y +1  0 , so

we can rearrange
as
follows : < x, y > +1= 2 x 2y +1
Define z to be as: < x , y > = z
Then for any z there is always a unique solution x and y.
Given that
z +1= 2 x 2y +1 , then 2 x is the divisor of
z +1
Then 2y +1= z +1 / 2 x
34
Pairing functions
Let us consider the following primitive recursive function that provides a
coding for two numbers x and y.

< x, y >= 2 x 2y +1 -1
Example: <1,1> = 2 * ( 2 + 1 ) ∸ 1 = 6 ∸ 1 = 5
<1,2> = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9
Note that 2 x 2y +1  0 , so

we can rearrange
as
follows : < x, y > +1= 2 x 2y +1
Define z to be as: < x , y > = z
Then for any z there is always a unique solution x and y.
Given that
z +1= 2 x 2y +1 , then 2 x is the divisor of
z +1
Then 2y +1= z +1 / 2 x

Thus we have the solutions for x and y which can then be defined using
the following functions:
x = l z   z
y = r z   z
35
Pairing functions
x = l z   z
y = r z   z

More formally this can written as:
l z  = xminz [y 
r z  = my inz [x 

z =< x, y > ]
z  z =< x, y > ]
 z

Pairing Function Theorem: functions <x,y>, l(z), r(z) have the
following properties:

are primitive recursive

l(<x,y>) = x

< l(z) , r(z) > = z

l(z) , r(z)≤ z
and r(<x,y>) = y
36
Gödel numbers

Let (a1, … , an) be any sequence, then the Gödel
number is computed as follows:
[a ... , a ]= ∏ p a
n
1,
n
i
i
i= 1
37
Gödel numbers

Let (a1, … , an) be any sequence, then the Gödel
number is computed as follows:
[a ... , a ]= ∏ p a
n
1,
n
i
i
i= 1

Example: Take a sequence (1,2,3,4), the Gödel number
1
2
3
4
will be computed as follows: 1,2,3,4= 2  3  5  7
38
Gödel numbers

Let (a1, … , an) be any sequence, then the Gödel
number is computed as follows:
[a ... , a ]= ∏ p a
n
1,
n
i
i
i= 1


Example: Take a sequence (1,2,3,4), the Gödel number
1
2
3
4
will be computed as follows: 1,2,3,4= 2  3  5  7
Gödel numbering has a special uniqueness property:
If [a1, … , an ] = [ b1, … , bn ] then
ai = bi , where i = 1, … , n
39
Gödel numbers

Let (a1, … , an) be any sequence, then the Gödel
number is computed as follows:
[a ... , a ]= ∏ p a
n
1,
n
i
i
i= 1


Example: Take a sequence (1,2,3,4), the Gödel number
1
2
3
4
will be computed as follows: 1,2,3,4= 2  3  5  7
Gödel numbering has a special uniqueness property:
If [a1, … , an ] = [ b1, … , bn ] then
ai = bi , where i = 1, … , n

Also notice: [ a1, … , an ] = [ a1, … , an, 0 ]
40
Gödel numbers

Given that x = [a1, … , an ], we can now define two important functions:
x i = ai = mt inx ~ pi t 1 | x 
Lt x  = miinx x i  0j  x  j  i  x  j = 0
41
Gödel numbers

Given that x = [a1, … , an ], we can now define two important functions:
x i = ai = mt inx ~ pi t 1 | x 
Lt x  = miinx x i  0j  x  j  i  x  j = 0

Example: Let x = [ 4 , 3 , 2 , 1 ], then (x)2 = 3 and (x)4=1 and (x)0 = 0
42
Gödel numbers

Given that x = [a1, … , an ], we can now define two important functions:
x i = ai = mt inx ~ pi t 1 | x 
Lt x  = miinx x i  0j  x  j  i  x  j = 0

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
43
Gödel numbers

Given that x = [a1, … , an ], we can now define two important functions:
x i = ai = mt inx ~ pi t 1 | x 
Lt x  = miinx x i  0j  x  j  i  x  j = 0

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
44
Gödel numbers

Given that x = [a1, … , an ], we can now define two important functions:
x i = ai = mt inx ~ pi t 1 | x 
Lt x  = miinx x i  0j  x  j  i  x  j = 0

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)
 ai if 1  i  n


...
,
a
=


1,
n
 0 otherwise 
a
45
Gödel numbers

Given that x = [a1, … , an ], we can now define two important functions:
x i = ai = mt inx ~ pi t 1 | x 
Lt x  = miinx x i  0j  x  j  i  x  j = 0

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:
 ai if 1  i  n


...
,
a
=


1,
n
 0 otherwise 
(1)
a
(2)
x  ...,x  = x
1,
n
if
n  Lt x 
46
Related documents