Вот и я спрашиваю, можно ли принципиально всю Computability theory перевести на "функциональный язык" (который избавлен от понятий машин и машинных тактов).
А я Вам и отвечаю, абсолютно по теме. Да, можно. Но не нужно, поскольку за деревьями не станет видно леса. Ровно то же самое, что переводить программы с языков высокого уровня на ассемблер. В связи с излишней элементарностью операций перестаёт быть виден смысл кода. И понять по тексту такой программы, всё ли в ней корректно, станет неимоверно сложной задачей.
Всё равно что если меня бабушка на остановке спросит, как пройти на почту, а я ей вместо указания общего направления начну объяснять, в какой последовательности ей при походе на почту следует переставлять ноги и делать вдохи-выдохи. А ведь она именно этим и будет заниматься, если пойдёт: передвигать ногами и дышать!
Итак, в приводимом мною ранее примере с объединением перечислимых множеств использовалось следующее определение:
множество называется перечислимым, если существует такая рекурсивная функция, которая на этом множестве всюду принимает значение 1, а в остальных точках она либо не определена, либо принимает значение 0.
Ок, замечательно. Что Вы теперь ходите доказывать: перечислимость объединения или перечислимость пересечения?
С пересечением Вы уже вроде как разобрались. А с объединением, увы, всё сложнее: придётся сначала доказывать, что перечислимое множество - это не только область определения, но и множество значений. Можно, конечно, попробовать поизвращаться, но... это будет примерно как разгружать весь день вагоны, чтобы получить пачку денег, чтобы потом голыми руками изловить в лесу оленя и жарить мясо на костре, а заработанными купюрами этот костёр разжигать. Если уж хочется поработать, не лучше ли будет на заработанные деньги купить готовый шашлык?
Тут ведь видите, в чём сложность... Вот есть у Вас две частично рекурсивные функции, где-то не определённые, а где-то принимающие значения
. Если Вы включите эти функции в какую-то суперпозицию, не важно в какую, у Вас эта суперпозиция окажется определённой
лишь тогда, когда будут определены значения обоих функций. То есть как ни вертите, ничего шире пересечения не получите! А требуется объединение.
Стандартное доказательство выглядит так: при данном
по очереди выполняем шаги вычисления первой и второй функций, ждём: как только вычислилось хотя бы одно значение, кричим "ура" и полагаем значение новой, определяемой специально для объединения функции равным
. А если ничего так никогда и не вычислится, то значит элемент, на котором мы пытаемся параллельно вычислять два значения, в объединение не попал и ничего вычислять на нём не надо! Всё Ок. Но вам не нравится делать шаги вычислений и ждать, Вы вообще считаете, что вычислений никаких в природе не бывает. Значит что?..
А ничё!!! Не получится тут нихрена, как не извращайся! По крайней мере, у меня фантазии не хватает! Да и желание заниматься маразмом как нахлынуло, так и пропало. Время, между прочим, 4 часа ночи!!!
К тому же я не знаю, что про частично рекурсивные функции Вам известно, а чего Вы не знаете и знать не хотите. К примеру, тот факт, что они вычисляются на машинах, Вы знать не желаете. Если к завтрашнему утру Вы чётко очертите список признаваемых Вами фактов о частично рекурсивных функциях, я сооружу либо какое-нибудь вымороченное доказательство, либо контрпример. Причём, подозреваю, что скорее всего будет иметь место второе.