-
0 votesanswersviews
在Idris中使用间接相互递归数据类型进行总体检查
我正在使用抽象语法树,我想给 Binders 提供他们自己的类型 . 这似乎给伊德里斯的整体检查带来了问题...... 有一个典型的自我参照 Tree 伊德里斯完全检查完成 . data TreeShape = Last | More TreeShape TreeShape Show TreeShape where show Last = "Leaf" show (M... -
1 votesanswersviews
证明函数的总体最多需要n个递归调用
假设我们正在编写lambda演算的实现,作为其中的一部分,我们希望能够选择一个新的非冲突名称: record Ctx where constructor MkCtx bindings : List String emptyCtx : Ctx emptyCtx = MkCtx [] addCtx : String -> Ctx -> Ctx addCtx name = rec... -
0 votesanswersviews
这个递归函数不是完全的,还是编译器无法证明它?如何将其重写为总计?
出现以下代码时: module TotalityOrWhat %default total data Instruction = Jump Nat | Return Char | Error parse : List Char -> Instruction parse ('j' :: '1' :: _) = Jump 1 parse ('j' :: '2' :: _) = Jump 2... -
7 votesanswersviews
如果伊德里斯认为事情可能完全没有,那么伊德里斯可以用于证明吗?
http://docs.idris-lang.org/en/v0.99/tutorial/theorems.html#totality-checking-issues指出: 其次,到目前为止,目前的实施工作投入有限,因此可能仍然存在这样的情况:它认为功能是总的而不是 . 不要依赖它来证明你的证明! 这是否意味着不能依赖Idris作为证据,或者有没有办法创建不需要整体检查的证明? -
2 votesanswersviews
Idris:尝试从Intete for Nat重新实现整体检查失败
我有以下代码: module Test data Nat' = S' Nat' | Z' Num Nat' where x * y = ?hole x + y = ?hole fromInteger x = if x < 1 then Z' else S' (fromInteger (x - 1)) 我收到有关最后一行的错误消息: Test.idr:6:5:...