stringtranslate.com

Теорема Smn

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

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

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

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

Подробности

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

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

Функцию 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))

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

Ссылки

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