Машиной (обычной) Минского обычно называют регистровую машину, у которой в регистрах натуральные числа (включая ноль) и две команды —
(инкрементировать значение в
и перейти в состояние
) и
(попробовать декрементировать значение в
, и если это был ноль (и не вышло), перейти в
, а если вышло, перейти в
).
По-моему это очень удобный формализм вычислимости, разве что он требует, чтобы мы приняли, что регистр может содержать неограниченные значения; лента машины Тьюринга многим кажется более приземлённой. Ещё кто-то может быть недоволен, что вычислимость сама по себе никак с натуральными числами не связана, и потому якобы ММ — и к примеру рекурсивные функции — хуже, хотя легко представить себе обобщение как ММ, так и рекурсивных функций на любое множество алгебраических типов. Я себе выписывал и то, и то, и это было довольно поучительным опытом (например оператор μ-рекурсии не обобщается натуральным образом, но можно на замену ему предложить куда более гибкий — если мы рассматриваем произвольную кучку типов — оператор поиска в произвольной последовательности
произвольного значения).
Сейчас я опишу, до какого определения обобщённой ММ дошёл, а вопрос темы в том, видели ли вы его уже в литературе и как такая машина там называлась. Скорее всего к нему уже давно пришли, просто я не видел, и хотелось бы знать более общеупотребительное название.
Сначала я в точности определю, что здесь понимается под алгебраическими типами, а точнее под отдельным небольшим самодостаточным «миром» алгебраических типов. Он задаётся множествами
названий типов и
конструкторов, сюръекцией
, задающей тип результата конструктора, и функцией
, задающей типы аргументов конструктора. Коротко это всё можно записать в виде набора определений вида
где
, например,
Множество значений
такого «мира» определяется индуктивно вместе с их типами
:
• если
,
,
,
, то
и
. Для конструктивности, запись
обозначает дерево с корнем
и непосредственными поддеревьями
.
Множество значений типов, описанных примером выше, можно понимать как натуральные числа (
) и конечные кортежи из них (
).
Обобщённой ММ для «мира» алгебраических типов
будет набор
, где
— конечное множество регистров;
— типы регистров;
— некоторый кортеж различных входных регистров машины;
— некоторый кортеж выходных регистров;
(в итоге машина понимается как реализация частичной функции )
— конечное множество состояний машины, включающее начальное состояние и состояние остановки ;
— функция перехода, сопоставляющая состояниям выполняемые при нахождении в них команды, множество которых состоит ровно из элементов такого вида:
• «конструкция» , где
• «деструкция/матчинг» , где
(Об их точном смысле см. ниже.)
При выполнении машины мы держим в памяти текущие состояние
и значения регистров
. Обозначим
функцию
, отличающуюся от
ровно тем, что
.
Выполнение машины
за один шаг определяется так:
• если
, тогда
и
;
• если
, то
и
;
• если
, то положим
таким, что
, и тогда
,
.
Обозначим транзитивное замыкание
как
. Определим множество результатов работы машины на входах
как
.
Наконец, машина реализует функцию
, если для любого набора аргументов
выполняется одно из следующего:
•
не определено и
;
•
и
.
Всё! Вопрос см. выше.