Примеры

  1. Доказать, что если функция примитивно рекурсивна, то следующие функции примитивно рекурсивны:

    1. (перестановка аргументов);

    2. (циклическая перестановка аргументов);

    3. (введение фиктивного аргумента);

    4. (отождествление аргументов).

  2. Доказать, что следующие функции примитивно рекурсивны:

    1. (здесь );

    2. (здесь ).

  3. Доказать, что следующие функции примитивно рекурсивны:

    1. , где - сигнум или знак

  4. Доказать следующие равенства:

    1. ‪‫∸

    2. ‪‫∸

  5. Доказать, что если получается из примитивно рекурсивных функцийис помощью ограниченного- оператора, то- примитивно рекурсивна.

  6. Доказать, что если получается из примитивно рекурсивных функцийис помощью ограниченного- оператора, то- примитивно рекурсивная.

    1. Функции Аккермана

Пора уже задать вопрос: все ли функции являются примитивно рекурсивными? Простые теоретико-множественные соображения показывают, что нет. Множество функций типа несчетно, тем более это верно для функций типа. Каждая примитивно рекурсивная функция имеет конечное описание, то есть задается конечным словом в некотором (фиксированным для всех функций) алфавите. Множество всех конечных слов счетно, поэтому примитивно рекурсивные функции образуют не более чем счетное подмножество несчетного множества функций типа.

В действительности здесь рассматривается более узкий вопрос, все ли вычислимые функции можно записать как примитивно рекурсивные? Чтобы показать, что ответ на этот вопрос также является отрицательным, построим пример вычислимой функции, не являющейся примитивно рекурсивной. Идея примера в том, чтобы построить последовательность функций, каждая из которых растет существенно быстрее предыдущей, сконструировать с ее помощью функцию, которая растет быстрее любой примитивно рекурсивной функции.

Начнем с построения последовательности функций

Положим и т.д. Эти функции связаны между собой следующими рекурсивными соотношениями:

Продолжим эту последовательность, положив, по определению

Эта схема имеет вид примитивной рекурсии, следовательно, все функции примитивно рекурсивные. Растут они крайне быстро, например,

Зафиксируем теперь значение . Получим последовательность одинаковых одноместных функций. Определим теперь функцию, которая перечисляет эту последовательность:, то естьи так далее, а так же диагональную функцию.

Эти функции называются функциями Аккермана.

Из соотношений следует, что

Эти соотношения позволяют вычислять значения функций и, следовательно,, причем для вычисления функций в данной точке, нужно обратится к значению функции в предшествующей точке - совсем как в схеме примитивной рекурсии. Однако здесь рекурсия ведется сразу по двум переменным (также рекурсия называется двойной, двукратной или рекурсией 2-й ступени) и это существенно усложняет характер упорядочения точек, а, следовательно, и понятие предшествования точек также усложняется. Например,, а так как, то вычислениюв точкепо схемедолжно предшествовать вычислениев точке. Вычислениюв точкедолжно предшествовать вычисление в точке. Важно отметить, что это предшествование не определено заранее, как в схеме примитивной рекурсии, гдевсегда предшествует, а вычисляется в ходе вычислений и для исходной схемы вида вообще говоря различно. Поэтому схему двойной рекурсии (в отличии от рассматриваемой ранее одномерной рекурсии) не всегда удается свести к схеме примитивной рекурсии.

Теорема 2. Функция Аккерманарастет быстрее, чем любая примитивно рекурсивная функция и, следовательно, не является примитивно рекурсивной. Более того, для любой одноместной примитивно рекурсивной функции -, найдется такое, что для любого.

Ограничимся наброском доказательства, опустив некоторые выкладки.

  1. Вначале доказываются два свойства функции :

  1. Назовем функцию - мажорируемой, если существует натуральноетакое, что для любых, удовлетворяющих условию

Покажем, что все примитивно рекурсивные функции - мажорируемы:

    1. для простейших функций их- мажорируе­мость очевидна;

    2. рассмотрим оператор суперпозиции, причем для простоты выкладок ограничимся функцией .

Пусть функции - мажорируемы с числамисоответственно. Положим. Тогда по определению- мажоририуемости и свойствам,:

и, следовательно, с учетом и

т.е. - мажорируема;

    1. рассмотрим теперь оператор примитивной рекурсии, ограничившись для простоты схемой:

Пусть - мажорируема, т.е.при. Докажем индукцией по, что- мажорируема.

Учитывая условие в определении - мажорируемости, индукцию надо начинать с. Пусть.

Из ,следует, что, поэтому найдется такая величина, что.

Положим . Очевидно, что.

Пусть теперь.

Тогда .

Если , то используя- и то, что, имеем

Если же , то в силу-, что и завершит индукцию.

Из п. (а), (б) и (в) следует, что все примитивно рекурсивные функции - мажорируемы.

  1. Пусть - примитивно рекурсивная функция. В силу п. 2 для некоторогои. Но тогда, то есть, начиная, по крайней мере, с.