На этом шаге мы рассмотрим примитивно рекурсивный предикат.
Как нам известно, предикатом называют логическую функцию определенную на заданном множестве объектов. Будем рассматривать в качестве области определения предиката конечный набор, состоящий из натуральных чисел. Таким образом, рассматриваемые предикаты представляют логические функции вида:
В качестве примера предикатов можно привести следующие логические функции:
;
;
.
Определение. Функция φ(x1, ..., xn) называется представляющей функцией для предиката p(x1, ..., xn), если выполняются следующие условия:
(17)
Определение. Предикат р(х) называется примитивно рекурсивным, если его представляющая функция является примитивно рекурсивной функцией.
Например, следующие предикаты p1(x,y) = (x=y); p2(x,y) = (x<y) являются примитивно рекурсивными, так как их представляющие функции являются ПРФ.
Действительно, в качестве представляющей функции первого предиката можно взять функцию вида φ1(x) = sg|x-y|, (18) где
является ПРФ. Покажем, что данная функция - ПРФ.
По определению операции примитивной рекурсии получаем, что:
Следовательно, ПРО данной функции является последовательность функций:
Функция f(x,y) = |x-y| определяется следующим образом:
(19)
Прежде чем доказать, что функция f(x,y) = |x-y| является примитивно рекурсивной, рассмотрим следующие функции:
1) (20)
2) (21)
Покажем, что эти функции являются ПРФ.
1) Рассмотрим функцию (20). По определения операции примитивной рекурсии получаем, что
Следовательно, ПРО для данной функции является последовательность функций:
2) Рассмотрим теперь функцию (21). По определения операции примитивной рекурсии получаем, что:
где в последнем равенстве f(x,y) = i(f(x,y)), т.е. получили функцию сходную с функцией в первом случае, следовательно, в качестве ПРО данной функции можно взять последовательность функций:
Исходя из последнего примера, функцию (19), будем представлять следующим образом:
Очевидно, данная функция является ПРФ.
Теперь можно говорить, что выбранная представляющая функция (18), т.е. φ1(x) = sg|x-y| для предиката p1(x,y) = (x=y) является ПРФ и удовлетворяет исходным условиям, т.е.
Для предиката p2(x,y) = (x<y) в качестве представляющей функции можно брать
и очевидно, она удовлетворяет исходным условиям и является ПРФ.
Определение. Функция f(x1, ..., xn) называется ПРФ относительно совокупности функций и предикатов Ψ = {φ1, ..., φm, p1, ..., pk}, если она ПРФ относительно совокупности функций φ1, ..., φm, Ψ1, ..., Ψk, где Ψi, 1<=i<=k - представляющая функция предиката pi.
Определение. Предикат p(x1, ..., xn) называется ПРФ относительно совокупности функций и предикатов Ψ = {φ1, ..., φm, p1, ..., pk}, если представляющая функция предиката p является примитивно рекурсивной относительно совокупности функций φ1, ..., φm, Ψ1, ..., Ψk, где Ψi, 1<=i<=k - представляющая функция предиката pi.
p(x) | q(x) | p(x)∧q(x) | p(x)Vq(x) | p(x)->q(x) | |
0 | 1 | 0 | 0 | 0 | 1 |
0 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 1 | 1 | 1 |
Пусть φp(x) - представляющая функция предиката р(х); φq(x) - представляющая функция предиката q(x), где в общем случае x = (x1, ..., xn).
Тогда нетрудно проверить, что следующие функции являются представляющими функциями для соответствующих логических операций относительно предикатов, представленных в таблице 1:
(23)
(24)
(25)
(26)
В качестве упражнения, проверьте самостоятельно, что представленные функции действительно удовлетворяют требуемому условию как представляющие функции предиката.
На следующем шаге мы рассмотрим операцию навешивания ограниченного квантора над предикатами.