Download presentation
Presentation is loading. Please wait.
1
Some Primitive Recursive Functions
So we have learned that every primitive recursive function is computable. We will now look at some examples of primitive recursive functions. In order to prove that a function is primitive recursive, we have to show how that function can be derived from the initial functions by using composition and recursion. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
2
Some Primitive Recursive Functions
Remember? The recursive definition of a function looks like this: h(x1, …, xn, 0) = f(x1, …, xn) h(x1, …, xn, t + 1) = g(t, h(x1, …, xn, t), x1, …, xn) . If f is a function of k variables, g1, …, gk are functions of n variables, and h(x1, …, xn) = f(g1(x1, …, xn), …, gk(x1, …, xn)). Then h is said to be obtained from f and g1, …, gk by composition. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
3
Some Primitive Recursive Functions
We defined the following initial functions: s(x) = x + 1 n(x) = 0 uin(x1, …, xn) = xi , 1 ≤ i ≤ n. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
4
Some Primitive Recursive Functions
Example 1: f(x, y) = x + y We can transform this into a recursive definition: f(x, 0) = x f(x, y + 1) = f(x, y) + 1 This can be rewritten as: f(x, 0) = u11(x) f(x, y + 1) = g(y, f(x, y), x) where g(x1, x2, x3) = s(u23(x1, x2, x3)). Obviously, u11(x), u23(x1, x2, x3), and s(x) are primitive recursive functions – they are initial functions. g(x1, x2, x3) is obtained by composition of primitive recursive functions, so it is primitive recursive itself. Therefore, f(x, y) = x + y is primitive recursive. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
5
Some Primitive Recursive Functions
Example 2: h(x, y) = x y We can obtain the following recursive definition: h(x, 0) = 0 h(x, y + 1) = h(x, y) + x This can be rewritten as: h(x, 0) = n(x) h(x, y + 1) = g(y, h(x, y), x) where f(x1, x2) = x1 + x2 and g(x1, x2, x3) = f(u23(x1, x2, x3), u33(x1, x2, x3)). Obviously, these are all primitive recursive functions. Therefore, h(x, y) = x y is primitive recursive. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
6
Some Primitive Recursive Functions
Example 3: h(x) = x! Here are the recursion equations: h(0) = 1 h(t + 1) = h(t) s(t) This can be rewritten as: h(0) = s(n(t)) h(t + 1) = g(t, h(t)) where g(x1, x2) = s(x1) x2 , which can be written as: g(x1, x2) = s(u12(x1, x2)) u22(x1, x2). Multiplication is already known to be primitive recursive. Therefore, h(x) = x! is primitive recursive. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
7
Some Primitive Recursive Functions
In the following examples, we just show the recursive mechanism without developing the precise form of the recursion equations. Example 4: xy The recursion equations are: x = 1 xy+1 = xy x February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
8
Some Primitive Recursive Functions
Example 5: The predecessor function p(x) It is defined as follows: p(x) = x – 1 if x 0 = if x = 0 The recursion equations are: p(0) = 0 p(t + 1) = t February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
9
Some Primitive Recursive Functions
Example 6: x - y (monus) It is defined as follows: x - y = x – y if x y = if x < y The recursion equations are: x - = x x - (t + 1) = p(x - t) February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
10
Some Primitive Recursive Functions
Example 7: | x – y | The function | x – y | is defined as the absolute value of the difference between x and y. It can be written as follows: | x – y | = (x - y) + (y - x) Therefore, | x – y | is primitive recursive. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
11
Some Primitive Recursive Functions
Example 8: (x) (“negation”) The function (x) is defined as follows: (x) = 1 if x = 0 = 0 if x 0 (x) is primitive recursive, because: (x) = 1 - x If we prefer, we can just write down the recursion equations: (0) = 1 (t + 1) = 0 February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
12
Primitive Recursive Predicates
Example 9: x = y We can describe this predicate by the function d(x, y): d(x, y) = 1 if x = y = 0 if x y d(x, y) is primitive recursive because of the following equation: d(x, y) = (|x – y|) February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
13
Primitive Recursive Predicates
Example 10: x y Again, we can describe this predicate by the function d(x, y): d(x, y) = 1 if x y = 0 if x > y d(x, y) is primitive recursive because of the following equation: d(x, y) = (x – y) February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
14
Primitive Recursive Predicates
Theorem 5.1: Let C be a PRC class. If P, Q are predicates that belong to C , then so are P, PQ, and P&Q. Proof: Since P = (P), it follows that P belongs to C . Since P&Q = PQ, it follows that P&Q belongs to C . Since PQ = (P & Q), it follows that PQ belongs to C . February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
15
Primitive Recursive Predicates
We already know two different PRC classes, namely the class of all primitive recursive functions, and the class of all computable functions. Correspondingly, we have the following corollaries: Corollary 5.2: If P, Q are primitive recursive predicates, then so are P, PQ, and P&Q. Corollary 5.3: If P, Q are computable predicates, then so are P, PQ, and P&Q. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
16
Primitive Recursive Predicates
Example 11: x < y So far, we only know that x y and x = y are primitive recursive predicates (Examples 9 and 10). Since we have the tautology x < y x y & (x = y) or even simpler: x < y (y x) , according to Corollary 5.2, x < y is also a primitive recursive predicate. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
17
Primitive Recursive Predicates
Theorem 5.4: Let C be a PRC class. Let the functions g, h and the predicate P belong to C . Let f(x1, …, xn) = g(x1, …, xn) if P(x1, …, xn) = h(x1, …, xn) otherwise. Then f belongs to C . Proof: f obviously belongs to C , because it can be written as: f(x1, …, xn) = g(x1, …, xn)P(x1, …, xn) h(x1, …, xn)(P(x1, …, xn)) February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
18
Primitive Recursive Predicates
Corollary 5.5: Let C be a PRC class. Let n-ary functions g1, …, gm, h and predicates P1, …, Pm belong to C , and let Pi(x1, …, xn) & Pj(x1, …, xn) = 0 for all 1 i < j m and all x1, …, xn. If f(x1, …, xn) = g1(x1, …, xn) if P1(x1, …, xn) = g2(x1, …, xn) if P2(x1, …, xn) : : = gm(x1, …, xn) if Pm(x1, …, xn) = h(x1, …, xn) otherwise. Then f belongs to C . February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
19
Primitive Recursive Predicates
Proof: The idea is to use induction on the variable m. Theorem 5.4 provides the case for m = 1, so we just have to do the inductive step. Let f(x1, …, xn) = g1(x1, …, xn) if P1(x1, …, xn) : : = gm+1(x1, …, xn) if Pm+1(x1, …, xn) = h(x1, …, xn) otherwise, and let h’(x1, …, xn) = gm+1(x1, …, xn) if Pm+1(x1, …, xn) = h(x1, …, xn) otherwise. Then = gm(x1, …, xn) if Pm(x1, …, xn) = h’(x1, …, xn) otherwise. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
20
Primitive Recursive Predicates
The previous steps showed that f belongs to C for m = 1 whenever f belongs to C for a particular m, then f also belongs to C for m + 1. Conclusion: f belongs to C for any natural number m. February 26, 2019 Theory of Computation Lecture 7: Primitive Recursive Functions II
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.