Есть ли самая общая фиксированная точка? - PullRequest
0 голосов
/ 16 июня 2020

Мы можем писать индуктивные типы в терминах типа фиксированной точки:

Fix : (* -> *) -> *
In : (f : * -> *) -> f (Fix f) -> Fix f

NatF r = () + r
Nat = Fix NatF
Z = In NatF (InL ())
S n = In NatF (InR n)

Но этого типа исправления недостаточно для индексированных типов данных, и нам нужна индексированная фиксированная точка:

IFix : (I : *) -> ((I -> *) -> (I -> *)) -> I -> *
IIn : (I : *) -> (F : (I -> *) -> (I -> *)) -> (i : I) -> F (IFix I F) i -> IFix I F i

FinF r n = (n = Z) + ((m : Nat) ** r m ** (n = S m))
Fin = IFix Nat FinF

Используя IFix, мы можем получить Fix обратно, установив тип индекса на unit.

Какие типы данных мы не можем записать, используя IFix, есть ли более общая фиксированная точка, чем IFix?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...