0% found this document useful (0 votes)
182 views13 pages

Ms Primitive Recursive

The document discusses primitive recursive functions and the primitive recursive class (PRC) of functions. It defines several basic primitive recursive functions including addition, multiplication, factorial, exponentiation, predecessor, subtraction, and absolute value. It also defines the PRC class as the smallest class containing initial functions and closed under composition and recursion. Finally, it states that a function is primitive recursive if it can be obtained from initial functions using finite composition and recursion, and that every primitive recursive function is computable.

Uploaded by

mansha99
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
182 views13 pages

Ms Primitive Recursive

The document discusses primitive recursive functions and the primitive recursive class (PRC) of functions. It defines several basic primitive recursive functions including addition, multiplication, factorial, exponentiation, predecessor, subtraction, and absolute value. It also defines the PRC class as the smallest class containing initial functions and closed under composition and recursion. Finally, it states that a function is primitive recursive if it can be obtained from initial functions using finite composition and recursion, and that every primitive recursive function is computable.

Uploaded by

mansha99
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 13

1

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.

Let f : A B and g : B C

Composition of f and g can then be expressed as:


g f:AC
(g f)(x) = g(f(x))

h(x) = g(f(x))

NB: In

general composition is not commutative:


( g f )(x) ( f g )(x)

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
h( x1, ... , xn) = g( f1(x1 ,..., xn), , fk(x1 ,..., xn) )

Base step
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)

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
(1)

f( x , 0 ) = x
f(x , y+1 ) = f( x , y ) + 1

(2)

Input: f ( 3, 2 ) => f ( 3 , 1 ) + 1 => ( f ( 3 , 0 ) + 1 ) + 1 => ( 3 + 1 ) + 1 =>


5

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.

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.

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

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)))

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

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

x0=x
x ( t + 1) = p( x t )
|xy|=(xy)+(yx)

(x) = 1 x
if
x0
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

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

xy

x0=x
x ( t + 1) = p( x t )

if x y then x y = x y; else x y = 0

|xy|
(x)

|xy|=(xy)+(yx)
(x) = 1 x
13

You might also like