Система F Церковные цифры в Агде - PullRequest
0 голосов
/ 06 июня 2019

Я хотел бы протестировать некоторые определения в системе F, используя Agda в качестве моего средства проверки типов и оценщика.

Моя первая попытка ввести натуральные числа в Церкви была написана

Num = forall {x} -> (x -> x) -> (x -> x)

Который будет использоваться как псевдоним обычного типа:

zero : Num
zero f x = x

Однако определение Num не проверяет тип (вид?). Каков наиболее подходящий способ заставить его работать и быть как можно ближе к системной нотации F?

1 Ответ

2 голосов
/ 07 июня 2019

Следующая проверка типа

Num : Set₁
Num = forall {x : Set} -> (x -> x) -> (x -> x)

zero : Num
zero f x = x

но, как вы видите Num : Set₁, это может стать проблемой, и вам понадобится --type-in-type

...