← 最新论文
💻 computer science

Non-Termination of Logic Programs Using Patterns

本文通过引入一种能够生成代表无限有限重写序列模式的新型展开技术,将一种用于检测非循环非终止的项重写方法应用于逻辑编程,并使用 NTI 工具对其进行了实验评估。

原作者: Etienne Payet

发布于 2026-08-10
📖 1 分钟阅读☕ 轻松阅读

原作者: Etienne Payet

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在观察一个机器人尝试解决谜题。有时,机器人会陷入一个循环:它执行步骤 A,然后执行步骤 B,接着又执行步骤 A,如此循环往复,永无止境。这就像仓鼠在转轮上奔跑;它在移动,但哪儿也没去。在计算机科学的一个被称为**逻辑编程(Logic Programming)**的领域中,这些机器人就是试图通过遵循一套规则来回答问题的程序。如果一个程序陷入循环,它就永远无法完成任务,这通常是程序员想要捕捉到的漏洞(bug)。

但有一种更棘手的类型。有时,程序并不会陷入一个整齐的、重复的圆圈。相反,它走了一步,然后是略有不同的一步,接着是看起来几乎一样但不完全一样的另一部,并以此持续进行下去,永不停歇,且从未重复过完全相同的模式。这就像一位舞者,她从未重复过同一个动作,但也从未停止跳舞。这被称为非循环非终止(non-looping non-termination)。由于没有明显的“循环”可以指认,这种现象极难被发现。检测这些无限的、非重复的序列是计算机科学家面临的一大挑战,他们希望能够证明一个程序最终会停止,或者找到导致其永不停歇的具体起始点。

这篇论文介绍了一种巧妙的新方法,用来捕捉这些难以捉摸的、非重复性的无限循环。作者埃蒂安·帕耶(Etienne Payet)构建了一个名为 NTI 的工具,它就像是一个针对逻辑程序的超级侦探。该工具并没有尝试观察程序如何一步步运行(因为那会耗时永远),而是使用了一种叫做**展开(unfolding)**的技术。把“展开”想象成将一只复杂的折纸鹤压平,以观察底层的折痕模式。通过展开程序的规则,该工具创建了“模式(patterns)”——即抽象的蓝图,它们描述的不只是某一条特定的路径,而是一系列可能的路径构成的无限家族。

该论文的主要发现是,通过使用这些蓝图,特别是被称为“简单模式(simple patterns)”的简化版本,该工具可以从数学上证明一个程序将会永远运行下去,且不会陷入简单的循环。作者在 41 个已知具有挑战性的逻辑程序上对该工具进行了测试。该工具成功识别了其中许多程序中的无限、非重复路径,其中包括四个此前没有任何现有工具能够证明其为非终止状态的程序。然而,论文也诚实地说明了它的局限性:该工具并没有解决所有的案例,对于某些程序,它在运行 10 秒后便卡住或超时了。作者指出,虽然他们的方法是侦探工具箱中一个强大的新成员,但它还不是能解决所有谜团的魔杖。他们计划在未来使该工具变得更加聪明,希望能捕捉到更多这类棘手的、非重复性的无限循环。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →