Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 高阶统一_Algorithm_Artificial Intelligence_Logic_Unification - Fatal编程技术网

Algorithm 高阶统一

Algorithm 高阶统一,algorithm,artificial-intelligence,logic,unification,Algorithm,Artificial Intelligence,Logic,Unification,我正在研究一个高阶定理证明器,其中统一问题似乎是最困难的子问题 如果Huet的算法仍然被认为是最先进的,那么有没有人可以链接到程序员而不是数学家对它的解释 或者,即使是任何一阶算法有效而普通一阶算法无效的例子?最新技术-是的,据我所知,所有算法或多或少都与Huet的算法形状相同(我遵循逻辑编程理论,尽管我的专业知识是相切的)假设您需要完全的高阶匹配:子问题,如高阶匹配(一项闭合的统一)和Dale Miller的模式演算,是可判定的 请注意,Huet的算法在以下意义上是最好的——它就像一个半决策算

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

如果Huet的算法仍然被认为是最先进的,那么有没有人可以链接到程序员而不是数学家对它的解释


或者,即使是任何一阶算法有效而普通一阶算法无效的例子?

最新技术-是的,据我所知,所有算法或多或少都与Huet的算法形状相同(我遵循逻辑编程理论,尽管我的专业知识是相切的)假设您需要完全的高阶匹配:子问题,如高阶匹配(一项闭合的统一)和Dale Miller的模式演算,是可判定的

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

说明:科纳尔·埃利奥特博士论文的前四章应该符合要求。这一部分将近80页,有一些密集的类型理论,但它的动机很好,是我见过的最具可读性的描述


示例:Huet的算法将为这个示例提供商品:[X(o),Y(succ(0))];这必然会困扰一阶统一算法。

高阶统一(真正的二阶匹配)的一个例子是:
f3==3+3
,其中
==
是模α、β和eta转换(但不赋予“+”任何意义)。有四种解决方案:

\ x -> x + x
\ x -> x + 3
\ x -> 3 + x
\ x -> 3 + 3
相反,一阶统一/匹配不会给出解决方案

HOU与HOA(高阶抽象语法)一起使用时非常方便,可以使用变量绑定对语言进行编码,同时避免变量捕获等的复杂性


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

我想在阅读列表中增加一章,在 自动推理手册。这一章可能是 初学者更容易理解,以λ∏-演算结束,其中 科纳尔·艾略特的论文开始了

可在此处找到预印本:

高阶统一与匹配
吉勒斯·多威克,2001年

Conal Elliott的论文更正式,集中在一个变体上, 最后还介绍了λ∏∑-演算,该演算也有求和类型 除了产品类型


再见

还有Tobias Nipkow 1993年的论文(只有11页,其中4页是参考书目和代码附录)。摘要:

本文介绍了一种称为高阶模式的统一算法的完整开发,该算法是$\lambda$-项的一个子类。其出发点是通过转换统一公式,结果是一个可直接执行的功能程序。在最后的开发步骤中,结果被改编为de Bruijn符号中的$\lambda$-术语。这些算法适用于简单类型和非类型术语


其中一个罕见的例子是,有人问了一个真正好的(不可谷歌搜索或难以谷歌搜索)问题,却给出了一个来之不易的高质量答案。+1对你们两个来说——哈哈,这可能就是为什么你们的数据是300-600,而不是31.2K或类似的东西。你可能只回答很少有人能回答的问题。你引用的确切的科纳尔·艾略特提供了另一个答案:-D.嗨,查尔斯,你精通“洞”和更高阶的统一吗?见我在Conals答案上的评论。我不确定这些算法是否适用于“洞”。假设我有T==\f\x。(f x)=x+x。然后(T u),即原始的T带有一个用于f的“孔”,其形式为\x。(x)=x+x。但是由于捕获规则,现在还存在一个边约束,即x不应该出现在u中,因此唯一的解决方案是=\y.y+y,而不是\y.y+x、\y.x+y、\y.x+x。我还没有找到一篇这样显示“漏洞”的论文。自从我写这篇文章以来,我也发现了它的清晰性(Moore,Automatically Computing Functional Instances,ACL2'09)。