为什么Agda typechecker在该程序上崩溃

时间:2019-12-10 23:24:29

标签: typechecking agda type-theory

考虑以下(无效的)Agda代码

data Example : Example ex → Set where
  ex : Example ex

可以使用以下方法在Agda中有效地写出这种类型,即利用Agda的功能,即允许将值先给定类型,再给后给定值

exampleex : Set
ex' : exampleex

data Example : exampleex → Set where
  ex : Example ex'

exampleex = Example ex'
ex' = ex

全部编译,Agda正确知道ex : Example ex

但是,尝试使用示例模式来定义示例之外的函数会导致编译器崩溃

test : (e : Example ex) → Example e → ℕ
test ex x = 0

当我将此功能添加到文件中并运行“ agda main.agda”时,agda会显示“ Checking main”,但从未完成运行。不是应该在Agda中进行类型检查吗?

还有,有什么办法可以解决这个问题,并使测试功能可以定义?

1 个答案:

答案 0 :(得分:2)

这是Agda中的一个已知问题。您可以在https://github.com/agda/agda/issues/1556的Agda github上找到相应的问题。