We weaken the notion of "not subject to occur-check" (NSTO), on which most known results on avoiding the occur-check in logic programming are based. NSTO means that unification is performed only on such pairs of atoms for which the occur-check never succeeds in any run of a nondeterministic unification algorithm. Here we show that "any run" can be weakened to "some run". We present some related sufficient conditions under which the occur-check may be safely omitted. We show examples for which the proposed approach provides more general results than the approaches based on well-moded and nicely moded programs (this includes cases to which the latter approaches are inapplicable). We additionally present a sufficient condition based on NSTO, working for arbitrary selection rules.
翻译:我们弱化了“不须进行检查”的概念(NSTO),这是在逻辑编程中避免进行检查的最已知结果的基础。NSTO的意思是,只有在对原子进行统一时,在非决定性的统一算法的任何运行中,发生检查永远不会成功。我们在这里表明,“任何运行”都可以被“某种运行”削弱。我们提出了一些相关的充分条件,可以安全地省略这种检查。我们举例说明了拟议方法所提供的一般结果比基于完善和完善的编程的方法(这包括后一种方法不适用的案例)更普遍的结果。我们还提出了以NSTO为基础的充分条件,以任意选择规则为基础。