高阶统一

时间:2009-12-20 17:39:25

标签: algorithm artificial-intelligence logic unification

我正在研究一个更高阶的定理证明器,其中统一似乎是最困难的子问题。

如果Huet的算法仍然被认为是最先进的算法,那么是否有人有任何与其解释的链接,这些解释是由程序员而不是数学家理解的?

甚至它的工作原理和通常的一阶算法都没有?

4 个答案:

答案 0 :(得分:48)

最先进的技术 - 是的,据我所知,所有算法或多或少与Huet的形状相同(我遵循逻辑编程理论,尽管我的专业知识是切向的)提供你需要完全高阶匹配:子问题,如高阶匹配(一个术语被关闭的统一)和Dale Miller的模式演算,是可判定的。

请注意,Huet的算法在以下意义上是最好的 - 它就像一个半决策算法,因为它会在它们存在的情况下找到它们,但如果它们不存在则不能保证终止。既然我们知道高阶统一(实际上是二阶统一)是不可判定的,那么你就不能做得更好。

解释:Conal Elliott博士论文的前四章Extensions and Applications of Higher-Order Unification应符合该法案。这部分重约80页,有一些密集类型理论,但它的动机很好,是我见过的最易读的。

示例:Huet的算法将为此示例提供货物:[X(o),Y(succ(0))];哪一种必然会困扰一阶统一算法。

答案 1 :(得分:24)

高阶统一(实际上是二阶匹配)的一个例子是:f 3 == 3 + 3,其中==是模α,β和eta转换(但没有赋予“+”的任何含义“)。有四种解决方案:

\ x -> x + x
\ x -> x + 3
\ x -> 3 + x
\ x -> 3 + 3

相比之下,一阶统一/匹配将无法解决问题。

当与HOAS(高阶抽象语法)一起使用时,使用变量绑定编码语言,同时避免变量捕获等的复杂性,非常方便。

我第一次接触这个主题的是Gerard Huet和Bernard Lang撰写的“证明和应用二阶模式表达的程序转换”一文。我记得,这篇论文“是为了让程序员理解”。一旦你理解了二阶匹配,你就不会再进一步​​了。 Huet的一个关键结果是灵活/灵活的情况(作为一个术语的头部的变量,以及唯一没有出现在匹配中的情况)总是可以解决的。

答案 2 :(得分:7)

我会在阅读列表中添加第2卷的章节 自动推理手册。本章可能就是这样 初学者更容易接近,并以λΠ-演算结束 Conal Elliott的论文开始了。

此处可找到预印本:

高阶统一与匹配 Gilles Dowek,2001年
http://www.lsv.fr/~dowek/Publi/unification.ps

Conal Elliott论文更正式,更专注于一个变体, 并且最后还引入了一个λΠΣ演算,它也有和类型 除了产品类型。

再见

答案 3 :(得分:5)

还有Tobias Nipkow的1993年论文Functional Unification of Higher-Order Patterns(仅11页,其中4页是参考书目和代码附录)。摘要:

  

为所谓的高阶模式($ \ lambda $ -terms的子类)提供了统一算法的完整开发。起点是通过变换统一的表述,结果是可直接执行的功能程序。在最后的开发步骤中,结果适用于de Bruijn符号中的$ \ lambda $ -terms。这些算法适用于简单类型和非类型化术语。