阿格达系统F教堂数字

时间:2019-06-06 13:55:31

标签: agda lambda-calculus church-encoding system-f typed-lambda-calculus

我想使用Agda作为类型检查器和评估器来测试系统F中的一些定义。

我第一次尝试引入教会自然数是通过写作

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

将与常规类型别名一样使用

zero : Num
zero f x = x

但是Num的定义没有键入(种类?)检查。使它工作并尽可能接近系统F符号的最合适方法是什么?

1 个答案:

答案 0 :(得分:2)

以下内容将进行类型检查

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

zero : Num
zero f x = x

但是如您所见Num : Set₁,这可能会成为问题,您将需要--type-in-type