当前位置: X-MOL 学术J. ACM › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Deciding Context Unification
Journal of the ACM ( IF 2.3 ) Pub Date : 2019-10-16 , DOI: 10.1145/3356904
Artur Jeż 1
Affiliation  

In first-order term unification, variables represent well-formed terms over a given signature, and we are to solve equations built using function symbols from the signature and such variables; this problem is well-known to be decidable (in linear time). In second-order term unification, the variables take arguments (i.e., other terms) and a substitution uses those arguments an arbitrary number of times; for instance, an equation f ( X ( c ), X ( c )) = X ( f ( c , c )) has a solution X = •, where • is a special symbol denoting the place in which the argument is substituted. Under this substitution, both sides evaluate to f ( c , c ). There are other solutions, for instance X = f (•,•), which evaluates both sides to f ( f ( c , c ), f ( c , c )); in general, a solution that evaluates both sides to full binary tree of arbitrary height is easy to construct. Second-order unification is in general undecidable. Context unification is a natural problem in between first- and second-order unification—we deal with equations over terms, the variables take arguments, but we restrict the set of solutions: The argument is used exactly once. Formally, contexts are terms with exactly one occurrence of the special symbol • and in context unification, we are given an equation over terms with variables representing contexts and ask about the satisfiability of this equation. For instance, when the aforementioned equation f ( X ( c ), X ( c )) = X ( f ( c , c )) is treated as a context unification problem, then it has exactly one solution: X = •. Other substitutions that are solutions of it as an instance of the second-unification problem, say X = f (•, •), are not valid, as • is used more than once. Context unification also generalizes satisfiability of word equations, which is decidable (in PSPACE). The decidability status of context unification remained unknown for almost two decades. In this article, we show that context unification is in PSPACE (in EXPTIME , when tree regular constraints are also allowed). Those results are obtained by extending the recently developed recompression technique, which was previously defined for strings and used to obtain a new PSPACE algorithm for satisfiability of word equations. In this article, the technique is generalized to trees, and the corresponding algorithm is generalized from word equations to context unification. The idea of recompression is to apply simple compression rules (replacing pairs of neighboring function symbols) to the solution of the context equation; to this end, we appropriately modify the equation (without the knowledge of the actual solution) so compressing the solution can be simulated by compressing parts of the equation. It is shown that if the compression operations are appropriately chosen, then the size of the instance is polynomial during the whole algorithm, thus giving a PSPACE-upper bound.

中文翻译:

决定上下文统一

在一阶项统一中,变量表示给定签名上的格式良好的项,我们将求解使用来自签名和此类变量的函数符号构建的方程;众所周知,这个问题是可判定的(在线性时间内)。在二阶术语统一中,变量接受参数(即其他术语),并且替换使用这些参数任意次数;例如,一个方程F(X(C),X(C)) =X(F(C,C)) 有一个解决方案X= •,其中 • 是一个特殊符号,表示参数被替换的位置。在这种替换下,双方评估为F(C,C)。还有其他解决方案,例如X=F(•,•),将双方计算为F(F(C,C),F(C,C)); 一般来说,将两边评估为任意高度的完整二叉树的解决方案很容易构建。二阶统一通常是不可判定的。上下文统一是一阶和二阶统一之间的一个自然问题——我们在项上处理方程,变量接受参数,但我们限制解集:参数只使用一次。形式上,上下文是恰好出现一次特殊符号 • 的术语,在上下文统一中,我们给出了一个包含表示上下文的变量的术语的方程,并询问该方程的可满足性。例如,当上述等式F(X(C),X(C)) =X(F(C,C)) 被视为上下文统一问题,那么它只有一个解决方案:X= •。作为第二统一问题的一个例子的其他替代解决方案,比如X=F(•, •) 无效,因为 • 被多次使用。上下文统一还概括了单词方程的可满足性,这是可判定的(在 PSPACE 中)。近二十年来,上下文统一的可判定性状态仍然未知。在本文中,我们展示了 PSPACE 中的上下文统一(在 EXPTIME 中,也允许树规则约束)。这些结果是通过扩展最近开发的再压缩技术获得的,该技术以前是为字符串定义的,并用于获得一种新的 PSPACE 算法来满足词方程的可满足性。在本文中,该技术被推广到树,相应的算法从词方程推广到上下文统一。再压缩的思想是将简单的压缩规则(替换成对的相邻函数符号)应用于上下文方程的解;为此,我们适当地修改方程(在不知道实际解的情况下),因此可以通过压缩方程的部分来模拟压缩解。结果表明,如果适当地选择了压缩操作,那么在整个算法过程中实例的大小是多项式的,从而给出了 PSPACE 上限。
更新日期:2019-10-16
down
wechat
bug