Комбинаторы для примитивных рекурсивных функций


19

Хорошо известно, что комбинаторы S и K являются полными по Тьюрингу. Существуют ли комбинаторы, достаточные для получения (только) примитивных рекурсивных функций?


1
Это то, что вы спрашиваете? mathoverflow.net/questions/48006/…
Андрей Бауэр

Ответы:


17

Да, но вы должны рассмотреть типизированные комбинаторы. То есть вам нужно дать и K следующие схемы типов: K : A B A S : ( A B C ) ( A B ) ( A C ), где A , B и C являются мета-переменными, которые могут быть созданы для любого конкретного типа при каждом использовании.SК

К:AВAS:(AВС)(AВ)(AС)
A,ВС

Затем вы хотите добавить тип натуральных чисел к языку типов и добавить следующие комбинаторы: z : N s u c c : NN i t e r : N( NN ) NNN

Z:NsUсс:NNяTер:N(NN)NN

Правила равенства для дополнений:

яTеряеZзнак равнояяTеряе(sUссе)знак равное(яTеряее)

яTер:A(AA)NA
яTер

яTер

преd'знак равноλК,яTер(Z,Z)(λ(N,N'),(sUссN,N))Кпреdзнак равноλК,sNd(преd'К)

NN×N


Так что это меньше, чем полное по Тьюрингу в силу ограничения на типизированные комбинаторы? Могут ли переменные типа (рекурсивно) обозначать функции над переменными типа (например, A = D -> E для некоторых типов D и E)?
NietzscheanAI

2
SК

Нил, спасибо. Буду ли я прав, думая, что можно представить z, succ и iter в терминах S и K через цифровое кодирование Церкви?
NietzscheanAI

00(sUссИкс)Икс

@Xoff: функция предшественника имеет хорошо известное определение линейного времени в терминах iter. Это может быть предметом вопроса на cs.stackexchange.com ...
cody
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.