Между конечными деревьями и конечными списками можно построить взаимооднозначное соответствие. Однако, потенциально бесконечные объекты уже не будут сопоставляться, вроде бы. Даже если вовлечь экспоненты, вроде
, задача построения биекции в разы усложнится.
Ну, если взять тот же Haskell, то там получится
(незавершающееся вычисление,
undefined),
,
и т.п.
В Haskell
в принципе является экземпляром некоторого типа, тем не менее, несколько ущербным, как бы так выразиться по-лучше. В вопросах вычислимости/невычислимости я не разбираюсь, но на интуитивном уровне понимаю так:
Можно написать несколько функций так, что на аргументах
и
они будут по-разному реагировать (имеется в виду, возвращать
или возвращать нормальное значение).
Не знаю, я читал только базовые книги типа Барендрегта и разные блоги по категории типов Haskell. Ничего такого я там не видел. Ну то есть есть
https://chris-taylor.github.io/blog/201 ... ata-types/ , но это в другую сторону.
Интересная ссылка. В начале автор делает некоторые рассуждения, как бы вводя алгебру, причём делает некоторые «дикие» шаги, вроде вычитания и деления. Как раз из этих общих рассуждений я и исходил, но интересует формализация, которая бы позволила автоматически выводить равенства, строго и формально.
Интересная ссылка на «Семь деревьев в одном».
В конце описываются производные типов. Кстати, не далее, как 2 недели назад, попалась статья Conor McBride
The Derivative of a Regular Type is its Type of One-Hole Contexts, где автор пробует формализовать однодырочный контекст и производную.
upd. Что интересно, в этой статье автор использует нотацию
для обозначения рекурсивного типа
, удовлетворяющего
. То есть он не вводит операторы над типами и оператор Fix, а как бы упрощённо вводит рекурсию в систему типов.
Есть еще Homotopy type theory, там это как раз можно выразить как равенство типов, но там все сложно, одними аксиомами с равенством не обойдешься.
Спасибо, посмотрю.
Одна аксиома
или
не задает тип однозначно. С помощью Выших аксиом мы можем доказать, что
удовлетворяет соотношению
, но не можем отождествить его с
. Я вообще плохо представляю, как выразить минимальность рекурсивного типа, используя только равенства.
Да, из
и
нельзя на основании имеющихся аксиом отождествить
и
. Поэтому система должна располагать каким-то механизмом, который позволил бы делать такие заключения. В данном случае это мне кажется правильным.
Или, например, из
и
отождествлять
и
при
.
А вот из
и
отождествление уже не уместно, разве что только при
(можно сократить). Хотя здесь всё только на словах.
В целом, думаю, Вы поняли суть моего вопроса. Особо меня интересует случай системы с операторами над типами.