Primitive Recursive Functions (Chapter 3)

Slides:



Advertisements
Similar presentations
1 Turing Machines and Equivalent Models Section 13.2 The Church-Turing Thesis.
Advertisements

Thresholds for Ackermannian Ramsey Numbers Authors: Menachem Kojman Gyesik Lee Eran Omri Andreas Weiermann.
Recursive Definitions and Structural Induction
Introduction to CS Theory Lecture 2 – Discrete Math Revision Piotr Faliszewski
October 13, 2009Theory of Computation Lecture 11: A Universal Program III 1 Coding Programs by Numbers Gödel numbers are usually very large, even for small.
Copyright © Cengage Learning. All rights reserved. CHAPTER 5 SEQUENCES, MATHEMATICAL INDUCTION, AND RECURSION SEQUENCES, MATHEMATICAL INDUCTION, AND RECURSION.
Induction and recursion
Math 3121 Abstract Algebra I
Kavita Math231 Recursion and Iteration. Kavita Math231 We use Recursion when we have to perform a complex task that can be broken into the several subtasks.
Mu-Recursive Functions
Discrete Mathematics Lecture 4 Harper Langston New York University.
October 27, 2009Theory of Computation Lecture 12: A Universal Program IV 1Universality Then we append the following instruction: [C]IF K = Lt(Z) + 1 
CSE115/ENGR160 Discrete Mathematics 03/31/11
Computability and Complexity 10-1 Computability and Complexity Andrei Bulatov Gödel’s Incompleteness Theorem.
October 1, 2009Theory of Computation Lecture 8: Primitive Recursive Functions IV 1 Primitive Recursive Predicates Theorem 6.1: Let C be a PRC class. If.
1 Section 3.4 Recursive Definitions. 2 Recursion Recursion is the process of defining an object in terms of itself Technique can be used to define sequences,
1 Strong Mathematical Induction. Principle of Strong Mathematical Induction Let P(n) be a predicate defined for integers n; a and b be fixed integers.
Properties of the Integers: Mathematical Induction
Induction and recursion
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.
Lecture 18 Various TMs. Allow the head not move Theorem. If the head is allowed to stay at the cell in each move, then every function computed by the.
1 © 2010 Pearson Education, Inc. All rights reserved © 2010 Pearson Education, Inc. All rights reserved Chapter 10 Further Topics in Algebra.
1 1 CDT314 FABER Formal Languages, Automata and Models of Computation Lecture 14 School of Innovation, Design and Engineering Mälardalen University 2012.
Mathematical Maxims and Minims, 1988
Induction and recursion
9.1 Sequences. A sequence is a list of numbers written in an explicit order. n th term Any real-valued function with domain a subset of the positive integers.
Discrete Mathematics, 1st Edition Kevin Ferland
Mathematics Review Exponents Logarithms Series Modular arithmetic Proofs.
Great Theoretical Ideas in Computer Science.
MATH 224 – Discrete Mathematics
Prime Numbers A whole number greater than 1 whose only whole number factors are 1 and itself
The Integers. The Division Algorithms A high-school question: Compute 58/17. We can write 58 as 58 = 3 (17) + 7 This forms illustrates the answer: “3.
Reading and Writing Mathematical Proofs Spring 2015 Lecture 4: Beyond Basic Induction.
Advanced Counting Techniques CSC-2259 Discrete Structures Konstantin Busch - LSU1.
ICS 253: Discrete Structures I Induction and Recursion King Fahd University of Petroleum & Minerals Information & Computer Science Department.
Mathematical Preliminaries
Discrete Structure Li Tak Sing( 李德成 ) Lecture 13 1.
CS 103 Discrete Structures Lecture 13 Induction and Recursion (1)
Chapter 10 Computable Functions Copyright © 2011 The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 1.
September 29, 2009Theory of Computation Lecture 7: Primitive Recursive Functions III 1 Some Primitive Recursive Functions Example 3: h(x) = x! Here are.
Theory of Computation Lecture 5: Primitive Recursive Functions I
Computability Go over homework problems. Godel numbering. Homework: prepare for midterm.
Copyright © Cengage Learning. All rights reserved. CHAPTER 8 RELATIONS.
CompSci 102 Discrete Math for Computer Science March 13, 2012 Prof. Rodger Slides modified from Rosen.
Week 4 - Friday.  What did we talk about last time?  Floor and ceiling  Proof by contradiction.
Application: Algorithms Lecture 19 Section 3.8 Tue, Feb 20, 2007.
Fall 2002CMSC Discrete Structures1 Chapter 3 Sequences Mathematical Induction Recursion Recursion.
October 4, 2016Theory of Computation Lecture 9: A Universal Program I 1Minimalization Example 15: R(x, y) R(x, y) is the remainder when x is divided by.
Another Word on PRC Classes
Theory of Computation Lecture 10: A Universal Program I
Unit-III Algebraic Structures
Theory Of Computer Science
Theory of Computation Lecture 14: A Universal Program V
Mathematical Induction Recursion
Chapter 5 Induction and Recursion
Proving Properties of Recursive List Functions
Theory of Computation Lecture 6: Primitive Recursive Functions I
Induction: One Step At A Time
Induction: One Step At A Time
MA/CSSE 474 More Math Review Theory of Computation
Applied Discrete Mathematics Week 9: Integer Properties
Application: Algorithms
Primitive Recursive Predicates
Theory of Computation Lecture 9: A Universal Program I
Induction: One Step At A Time
Theory of Computation Lecture 6: Primitive Recursive Functions I
Some Primitive Recursive Functions
Theory of Computation Lecture 13: A Universal Program V
Theory of Computation Lecture 11: A Universal Program III
Recursion.
Presentation transcript:

Primitive Recursive Functions (Chapter 3)

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.

Composition Let f : A → B and g : B → C g ͦ f : A → 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)

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)

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) 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: 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. s(x) = x + 1 n(x) = 0 ui (x1 , … , xn) = xi

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.

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.

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

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

Primitive recursive functions: power and predecessor Power function 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) ; Predecessor function In LRR the predecessor is as follows: pred(1) => 0 ; pred(succ(x)) => x ; p (0) = 0 p ( t + 1 ) = t

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

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

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

Bounded quantifiers Theorem: Let C be a PRC class. If f( t , x1 , … , xn) belongs to C then so do the functions g( y , x1 , ... , xn ) = f( t , x1 , …, xn ) g( y , x1 , ... , xn ) = f( t , x1 , …, xn ) 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 )

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

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

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

Bounded minimalization Let P(t, x1, … ,xn) 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.

Bounded minimalization Let P(t, x1, … ,xn) 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. t0 is the least value for for which the predicate P is true (1).

Bounded minimalization Let P(t, x1, … ,xn) 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. t0 is the least value for for which the predicate P is true (1).

Bounded minimalization Let P(t, x1, … ,xn) 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. t0 is the least value for for which the predicate P is true (1).

Bounded minimalization Let P(t, x1, … ,xn) 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. t0 is the least value for for which the predicate P is true (1).

Bounded minimalization Let P(t, x1, … ,xn) 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. t0 is the least value for for which the predicate P is true (1). g( y , x1 , ... , xn ) produces the least value for which P is true. Finally the definition for bounded minimalization can be given as:

Bounded minimalization Let P(t, x1, … ,xn) 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. t0 is the least value for for which the predicate P is true (1). g( y , x1 , ... , xn ) produces the least value for which P is true. Finally the definition for bounded minimalization can be given as: Theorem: If P(t,x1, … ,xn) belongs to some PRC class C and there is function g that does the bounded minimalization for P, then f belongs to C.

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.

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:

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(x1, … , xn, y) is a computable predicate and if then g is a partially computable function. (Proof by construction)

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. pn , nth prime number i.e p1=2 , p2=3 etc.

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

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

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

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

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

Pairing functions Let us consider the following primitive recursive function that provides a coding for two numbers x and y. Example: <1,1> = 2 * ( 2 + 1 ) ∸ 1 = 6 ∸ 1 = 5 <1,2> = 2 * ( 2*2 + 1) ∸ 1 = 10 ∸ 1 = 9 Define z to be as: < x , y > = 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:

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

Gödel numbers Let (a1, … , an) be any sequence, then the Gödel number is computed as follows:

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

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

Gödel numbers Let (a1, … , an) be any sequence, then the Gödel number is computed as follows: Example: Take a sequence (1,2,3,4), the Gödel number will be computed as follows: 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 ]

Gödel numbers Given that x = [a1, … , an ], we can now define two important functions:

Gödel numbers Given that x = [a1, … , an ], 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

Gödel numbers Given that x = [a1, … , an ], 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

Gödel numbers Given that x = [a1, … , an ], 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

Gödel numbers Given that x = [a1, … , an ], 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)

Gödel numbers Given that x = [a1, … , an ], 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)