Система F Церковные цифры в Агде

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

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

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

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

zero : Num
zero f x = x

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

1 ответ

Решение

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

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

zero : Num
zero f x = x

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

Другие вопросы по тегам