伊德里斯案/诱导策略

时间:2014-12-11 11:10:38

标签: algebraic-data-types idris formal-verification

它们在Idris 0.9.14中实现,我成功地使用induction进行了一些证明。但是,它们仅适用于某些库类型;例如,Vect支持它们,几乎同构All不支持:

-Main.h2> induction ys1 INTERNAL ERROR: induction needs an eliminator for Data.Vect.Quantifiers.All
This is probably a bug, or a missing error message.
Please consider reporting at https://github.com/idris-lang/Idris-dev/issues

遗憾的是,没有足够的语言文档,我也无法找到如何为自定义类型实现淘汰/案例分析。深入Prelude,我找到了%elim修饰符,但它没有帮助。有没有人举例说明前面提到的All

1 个答案:

答案 0 :(得分:2)

induction策略只能用于使用%elim声明的类型。有些人认为伊德里斯应尽可能自动生成消除器,但似乎有一些技术上的困难。

  

有人可以举例说明前面提到的All吗?

据我所知,将%elim添加到All的定义应该没有问题(只需编辑文件Quantifiers.idr并重新编译idris)。您可能想在Github上提交拉取请求。