В математике нумерация Гёделя для последовательностей обеспечивает эффективный способ представления каждой конечной последовательности натуральных чисел как одного натурального числа. Хотя теоретико-множественное вложение, безусловно, возможно, акцент делается на эффективности функций, манипулирующих такими представлениями последовательностей: операции над последовательностями (доступ к отдельным членам, конкатенация) могут быть «реализованы» с использованием полных рекурсивных функций , а на самом деле — примитивных рекурсивных функций .
Обычно он используется для построения последовательных « типов данных » в арифметических формализациях некоторых фундаментальных понятий математики. Это частный случай более общей идеи нумерации Гёделя . Например, рекурсивную теорию функций можно рассматривать как формализацию понятия алгоритма , и ее можно рассматривать как язык программирования для имитации списков путем кодирования последовательности натуральных чисел в одно натуральное число. [1] [2]
Помимо использования нумерации Гёделя для кодирования уникальных последовательностей символов в уникальные натуральные числа (т.е. для размещения чисел во взаимоисключающем или однозначном соответствии с последовательностями), мы можем использовать ее для кодирования целых «архитектур» сложных «машин». Например, мы можем кодировать алгоритмы Маркова [3] или машины Тьюринга [4] в натуральные числа и тем самым доказать, что выразительная сила теории рекурсивных функций не меньше, чем у прежних машиноподобных формализаций алгоритмов.
Любое такое представление последовательностей должно содержать всю информацию, как в исходной последовательности — самое главное, каждый отдельный член должен быть извлекаемым. Однако длина не обязательно должна совпадать напрямую; даже если мы хотим обрабатывать последовательности разной длины, мы можем хранить данные о длине как избыточный член, [5] или как другой член упорядоченной пары, используя функцию сопряжения .
Мы ожидаем, что существует эффективный способ для этого процесса поиска информации в форме подходящей полной рекурсивной функции. Мы хотим найти полностью рекурсивную функцию f со свойством, что для всех n и для любой последовательности натуральных чисел длины n существует подходящее натуральное число a , называемое числом Гёделя последовательности, такое, что для всех i, где , .
Существуют эффективные функции, которые могут извлечь каждый член исходной последовательности из гёделевского номера последовательности. Более того, мы можем определить некоторые из них конструктивным образом , так что мы можем выйти далеко за рамки простых доказательств существования .
Благодаря гениальному использованию китайской теоремы об остатках мы можем конструктивно определить такую рекурсивную функцию (используя простые числовые теоретико-числовые функции, все из которых могут быть определены полностью рекурсивным способом), удовлетворяющую спецификациям, данным выше. Гёдель определил функцию, используя китайскую теорему об остатках в своей статье, написанной в 1931 году. Это примитивная рекурсивная функция . [6]
Таким образом, для всех n и для любой последовательности натуральных чисел длины n существует соответствующее натуральное число a , называемое числом Гёделя последовательности, такое, что . [7]
Наше конкретное решение будет зависеть от функции спаривания — существует несколько способов реализации функции спаривания, поэтому необходимо выбрать один метод. Теперь мы можем абстрагироваться от деталей реализации функции спаривания. Нам нужно только знать ее « интерфейс »: пусть , K и L обозначают функцию спаривания и ее две функции проекции , соответственно, удовлетворяющие спецификации :
Мы будем использовать другую вспомогательную функцию, которая вычислит остаток для натуральных чисел . Примеры:
Можно доказать, что эту функцию можно реализовать как рекурсивную функцию.
Используя китайскую теорему об остатках , мы можем доказать, что реализация в виде
будет работать, согласно спецификации, которую мы ожидаем удовлетворить. Мы можем использовать более краткую форму, злоупотребляя обозначениями (составляя своего рода сопоставление с образцом ):
Давайте добьемся еще большей читабельности за счет большей модульности и повторного использования (как эти понятия используются в информатике [8] ): определив последовательность , мы можем записать
Мы будем использовать это обозначение в доказательстве.
Для доказательства правильности приведенного выше определения функции мы воспользуемся несколькими леммами. Они имеют свои собственные предположения. Теперь мы попытаемся выяснить эти предположения, тщательно калибруя и настраивая их силу: они не должны быть сказаны ни в излишне резкой, ни в неудовлетворительно слабой форме.
Пусть будет последовательностью натуральных чисел. Пусть m выбрано так, чтобы удовлетворять
Первое предположение подразумевает, что
Это необходимо для выполнения предположения китайской теоремы об остатках (о том, что числа попарно взаимно просты ). В литературе это требование иногда заменяют более сильным, например, конструктивно построенным с помощью факториальной функции, [1], но для этого доказательства более сильная предпосылка не требуется. [2]
Второе предположение никак не касается китайской теоремы об остатках. Оно будет иметь значение для доказательства того, что спецификация для в конечном итоге будет выполнена. Оно гарантирует, что решение системы одновременных сравнений
также удовлетворяет
Более сильное предположение для m, требующее автоматически удовлетворяет второму предположению (если мы определим обозначения, как указано выше).
В разделе «Настраиваемые вручную предположения» мы потребовали, чтобы
Подробно:
помня, что мы определили .
Доказательство от противного; предположим отрицание исходного утверждения:
Мы знаем, что означает отношение «взаимной простоты» (к счастью, его отрицание можно сформулировать в краткой форме); поэтому сделаем соответствующую замену:
Используя «более» предваренную нормальную форму (но обратите внимание, что допускается запись, подобная ограничению, в квантификаторах):
Из-за теоремы о делимости , позволяет нам также сказать
Подставляя определения записи -последовательности , получаем , таким образом (поскольку аксиомы равенства постулируют тождество как отношение конгруэнтности [10] ) получаем
Поскольку p — простой элемент (обратите внимание, что используется свойство неприводимости элемента ), получаем
Теперь мы должны прибегнуть к нашему предположению
Предположение было выбрано тщательно, чтобы быть настолько слабым, насколько это возможно, но достаточно сильным, чтобы мы могли использовать его сейчас.
Предполагаемое отрицание исходного утверждения содержит соответствующее экзистенциальное утверждение с использованием индексов ; это влечет за собой , таким образом, указанное предположение может быть применено, поэтому выполняется.
Мы можем доказать несколькими способами [11], известными в исчислении высказываний, что
держится.
Так как , по свойству транзитивности отношения делимости , . Таким образом (поскольку аксиомы равенства постулируют, что тождество является отношением конгруэнтности [10] )
может быть доказано.
Отрицание исходного утверждения, содержащегося
и мы только что доказали
Таким образом,
также должно быть выполнено. Но после подстановки определения ,
Таким образом, суммируя три приведенных выше утверждения, в силу транзитивности равенства ,
также следует держать.
Однако в отрицании исходного утверждения p экзистенциально квантифицировано и ограничено простыми числами . Это устанавливает противоречие, которого мы хотели достичь.
Придя к противоречию с его отрицанием, мы только что доказали исходное утверждение:
Мы строим систему одновременных сравнений
Мы можем записать это более кратко:
Ниже будет сказано много утверждений, все они начинаются с " ". Для достижения более эргономичного обращения, отныне все утверждения следует читать как находящиеся в сфере квантификации . Таким образом, начинается здесь.
Давайте выберем решение для системы одновременных сравнений. По крайней мере одно решение должно существовать, поскольку являются попарно простыми, как доказано в предыдущих разделах, поэтому мы можем ссылаться на решение, гарантированное китайской теоремой об остатках. Таким образом, с этого момента мы можем считать удовлетворяющим
что означает (по определению модульной арифметики ), что
Вспомним второе предположение, « », и вспомним, что теперь мы находимся в области неявной квантификации для i , поэтому мы не повторяем ее квантификацию для каждого утверждения.
Второе предположение подразумевает, что
Теперь по транзитивности равенства получаем
Нашей первоначальной целью было доказать, что определение
подходит для достижения того, что мы заявили в спецификации : мы хотим сохранить.
Это можно увидеть теперь по транзитивности равенства , рассматривая три приведенных выше уравнения.
(Здесь заканчивается большая область действия i .)
Мы только что доказали правильность определения : его спецификация требует
выполнено. Хотя доказательство этого было наиболее важным для установления схемы кодирования последовательностей, нам еще предстоит заполнить некоторые пробелы. Это связанные понятия, подобные существованию и уникальности (хотя в отношении уникальности здесь следует подразумевать «не более одного», а соединение обоих задерживается как конечный результат).
Наш конечный вопрос: какое число должно обозначать кодировку последовательности ? Спецификация декларирует только экзистенциальную квантификацию, а не функциональную связь. Мы хотим конструктивную и алгоритмическую связь: (полную) рекурсивную функцию, которая выполняет кодировку.
Этот пробел можно заполнить простым способом: мы воспользуемся минимизацией , а полнота результирующей функции будет обеспечена всем, что мы доказали до сих пор (т.е. корректностью определения путем соответствия его спецификации). Фактически, спецификация
Здесь играет роль более общее понятие («специальная функция» [12] ). Важность этого понятия в том, что оно позволяет нам отделить (под)класс (полных) рекурсивных функций от (супер)класса частично рекурсивных функций. Короче говоря, спецификация говорит, что функция f [13], удовлетворяющая спецификации
— специальная функция; то есть для каждой фиксированной комбинации всех аргументов, кроме последнего, функция f имеет корень в своем последнем аргументе:
Итак, выберем минимально возможное число, которое хорошо вписывается в спецификацию функции : [5]
Можно доказать (используя понятия предыдущего раздела), что g является (полностью) рекурсивным.
Если мы используем вышеприведенную схему кодирования последовательностей только в контекстах, где длина последовательностей фиксирована, то никаких проблем не возникает. Другими словами, мы можем использовать их аналогичным образом , как массивы используются в программировании.
Но иногда нам нужны динамически растягивающиеся последовательности или нам нужно иметь дело с последовательностями, длина которых не может быть введена статически. Другими словами, мы можем кодировать последовательности аналогично спискам в программировании.
Для иллюстрации обоих случаев: если мы формируем нумерацию Геделя машины Тьюринга, то каждая строка в матрице «программы» может быть представлена кортежами, последовательностями фиксированной длины (таким образом, без сохранения длины), поскольку число столбцов фиксировано. [14] Но если мы хотим рассуждать о вещах, подобных конфигурации (машин Тьюринга), и в частности, если мы хотим закодировать значительную часть ленты работающей машины Тьюринга, то мы должны представлять последовательности вместе с их длиной. Мы можем имитировать динамически растягивающиеся последовательности, представляя конкатенацию последовательностей (или, по крайней мере, дополнение последовательности еще одним элементом) с помощью полностью рекурсивной функции. [15]
Длина может быть сохранена просто как избыточный член: [5]
Соответствующая модификация доказательства проста: нужно добавить излишек
к системе одновременных сравнений (при условии, что индекс избыточного члена выбран равным 0). Кроме того, предположения должны быть изменены соответствующим образом.