如果我理解正确(主要来自applyTactic
函数的存在),就可以为Idris中的定理证明者编写自定义策略。我可以用什么(或在哪里)学习如何做到这一点?
答案 0 :(得分:7)
在伊德里斯有两种编写自定义策略的机制:高级和低级反思。
使用高级反射,您可以编写一个在语法而不是在评估数据上运行的函数 - 它不会减少其参数。这些功能返回了一种新的策略,使用伊德里斯现有的战术定义。如果您想直接返回证明词,可以随时使用Exact
。这种反射的一个例子可以在the effects library中找到。在证明模式下使用byReflection
调用高级反射策略。
在低级反思中,您直接使用Idris的核心类型理论中的引用术语。然后,策略是TT -> List (TTName, TT) -> Tactic
中的函数,其中第一个参数是目标类型,第二个是本地证明上下文,返回结果与高级反射中的相同。这就是laughadelic与above有关。这些是在证明模式下使用applyTactic
调用的。