stringtranslate.com

Теорема Смна

В теории вычислимости S м
н
 
Теорема
, записанная также как « smn-теорема » или « smn-теорема » (также называемая леммой о переводе , теоремой о параметре и теоремой о параметризации ), является основным результатом о языках программирования (и, в более общем плане, о гёделевских нумерациях вычислимых функций ). (Соаре 1987, Роджерс 1967). Впервые это было доказано Стивеном Коулом Клини (1943). Имена м
н
 
происходит из-за появления буквы S с индексом n и верхним индексом m в исходной формулировке теоремы (см. ниже).

На практике теорема гласит, что для данного языка программирования и натуральных чисел m и n существует определенный алгоритм , который принимает на вход исходный код программы с m + n свободными переменными вместе с m значениями. Этот алгоритм генерирует исходный код, который эффективно заменяет значения первых m свободных переменных, оставляя остальные переменные свободными.

Теорема smn утверждает, что для данной функции двух аргументов, которая является вычислимой , существует полная и вычислимая функция, такая, что в основном «фиксирует» первый аргумент . Это похоже на частичное применение аргумента к функции. Это обобщено на кортежи для . Другими словами, он обращается к идее «параметризации» или «индексации» вычислимых функций. Это похоже на создание упрощенной версии функции, которая принимает дополнительный параметр (индекс) для имитации поведения более сложной функции.

Функция предназначена для имитации поведения при задании соответствующих параметров. По сути, выбрав правильные значения для и , вы можете заставить вести себя так же, как для конкретного вычисления. Вместо того, чтобы иметь дело со сложностью , мы можем работать с более простым , отражающим суть вычислений.

Подробности

Основная форма теоремы применима к функциям двух аргументов (Нис 2009, стр. 6). Учитывая гёделеву нумерацию рекурсивных функций, существует примитивно-рекурсивная функция s двух аргументов со следующим свойством: для каждого гёделева числа p частично вычислимой функции f с двумя аргументами выражения и определены для одних и тех же комбинаций натуральных чисел x и y , и их значения равны для любой такой комбинации. Другими словами, для каждого x имеет место следующее экстенсиональное равенство функций :

В более общем смысле, для любого m , n > 0 , существует примитивно-рекурсивная функция с m + 1 аргументами, которая ведет себя следующим образом: для каждого числа Гёделя p частично вычислимой функции с m + n аргументами и всеми значениями x 1 …, х м :

Описанную выше функцию s можно принять равной .

Официальное заявление

Учитывая арность m и n , для каждой машины Тьюринга арности и для всех возможных значений входных данных существует машина Тьюринга арности n такая, что

Более того, существует машина Тьюринга S , которая позволяет вычислять k по x и y ; оно обозначается .

Неформально, S находит машину Тьюринга , которая является результатом жесткого кодирования значений y в . Результат обобщается на любую Тьюринг-полную вычислительную модель.

Это также можно распространить на полные вычислимые функции следующим образом:

Учитывая полную вычислимую функцию и такую, что , :

Существует также упрощенная версия той же теоремы (фактически определяемая как « упрощенная smn-теорема », которая в основном использует полную вычислимую функцию в качестве индекса следующим образом:

Пусть – вычислимая функция. Там существует тотальная вычислимая функция такая, что , :

Пример

Следующий код Lisp реализует s 11 для Lisp.

( defun s11 ( f x ) ( let (( y ( gensym ))) ( list 'lambda ( list y ) ( list f x y ))))              

Например, оценивается как .(s11 '(lambda (x y) (+ x y)) 3)(lambda (g42) ((lambda (x y) (+ x y)) 3 g42))

Смотрите также

Рекомендации

Внешние ссылки