Smn-теорема

Матеріал з testwiki
Версія від 22:27, 17 січня 2023, створена imported>Zviribot (Cat-a-lot: Moving from Category:Теореми to Category:Теореми інформатики за допомогою Cat-a-lot)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

В теорії обчислень smn-теорема (Шаблон:Lang-en; також відома як лема про трансляцію, теорема параметрів, чи теорема параметризації) — основне досягнення в сфері мов програмування (і, більш загально, Геделівських нумерацій обчислюваних функцій). Вперше була доведена Стівеном Коулом Кліні у 1943.

На практиці теорема означає, що для заданої мови програмування та додатних цілих m та n існує певний алгоритм, який оперує кодом програм з m+n вільними змінними. Цей алгоритм ефективно прив'язує m даних значень до перших m вільних змінних в програмі і залишає інші вільними.

Деталі

Найпростішою формою, до якої застосовна теорема, є функція двох аргументів. Маючи дану Геделівську нумерацію φ рекурсивних функцій, існує примітивно-рекурсивна функція s двох аргументів з такою властивістю: для кожного номера p часткової обчислюваної функції f з двома аргументами φs(p,x)(y) та f(x,y), визначені для однакових комбінацій x-ів та y-ків, однакові для тих комбінацій. Іншими словами, зберігається наступна зовнішня рівність функцій:

φs(p,x)λy.φp(x,y).

Щоб узагальнити теорему, виберіть схему для кодування n чисел як одне число, так що оригінальні числа можуть витягуватись примітивно рекурсивними функціями. Наприклад, одна може чергувати біти чисел. Тоді для будь-яких m, n > 0 існує примітивно рекурсивна функція snm m+1 аргументів, яка поводиться таким чином: для кожного Геделівського числа p частково обчислюваної функції з m+n аргументами:

φsnm(p,x1,,xm)λy1,,yn.φp(x1,,xm,y1,,yn).

s11 є лише функцією s, що вже була описана.

Приклад

Наступний код Lisp реалізує s11

 (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))

Посилання