Чи існують мови програмування (або логіка), які можуть реалізовувати (або виражати) функцію якщо і лише якщо - обчислювані біективні функції?
Чи існують мови програмування (або логіка), які можуть реалізовувати (або виражати) функцію якщо і лише якщо - обчислювані біективні функції?
Відповіді:
Немає такої мови.
Однак погляньте на Бумеранг . Це мова для написання біекцій між рядками. Я не знаю, наскільки широкий клас карт виражається в ньому, але я впевнений, що ви зможете дізнатися, якщо трохи пошукати.
Доцільно вимагати від мови програмування, щоб набір дійсних програм був розпізнаваний інтерпретатором або компілятором, тобто, щоб це був обчислювальний набір. Припустимо, тоді у нас була мова програмування, набір дійсних програм, який був обчислимо численним і який реалізував саме всі обчислювані біекції . Це означає, що ми можемо обчислити всі обчислювані біекції (просто перерахувати всі дійсні програми на цій мові програмування), але це неможливо наступною теоремою.
Теорема: Припустимо, що - це обчислювана послідовність обчислюваних біекцій. Тоді відбувається обчислювальна біекція, яка не в послідовності.
Доказ. Побудуємо біекцію наступним чином. Щоб визначити значення і , подивимося на :
Очевидно, що для будь-якого , відрізняється від тому , що . Крім того, обчислюється, і це біекція, оскільки це своя власна інверсія. QED.