Система 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