Skip to main content
QUICK REVIEW

[论文解读] XSB: Extending Prolog with Tabled Logic Programming

Terrance Swift, David S. Warren|arXiv (Cornell University)|Dec 23, 2010
Logic, Reasoning, and Knowledge参考文献 54被引用 6
一句话总结

本文提出 XSB,一种扩展传统逻辑编程的 Prolog 系统,通过引入表格化逻辑编程(TLP)来确保递归和否定查询的终止性与最优时间复杂度。通过将表格化机制与动态代码、约束及多线程技术相结合,XSB 使得在语义网、程序分析和知识表示等复杂应用中实现高效、声明式的编程成为可能。

ABSTRACT

The paradigm of Tabled Logic Programming (TLP) is now supported by a number of Prolog systems, including XSB, YAP Prolog, B-Prolog, Mercury, ALS, and Ciao. The reasons for this are partly theoretical: tabling ensures termination and optimal known complexity for queries to a large class of programs. However the overriding reasons are practical. TLP allows sophisticated programs to be written concisely and efficiently, especially when mechanisms such as tabled negation and call and answer subsumption are supported. As a result TLP has now been used in a variety of applications from program analysis to querying over the semantic web. This paper provides a survey of TLP and its applications as implemented in XSB Prolog, along with discussion of how XSB supports tabling with dynamically changing code, and in a multi-threaded environment.

研究动机与目标

  • 将表格化逻辑编程(TLP)引入 Prolog,以解决递归和否定查询中的终止性与效率问题。
  • 通过在标准 Prolog 环境中集成表格化与动态代码、约束及多线程技术,实现实用、高效且声明式的编程。
  • 支持非单调推理、偏好表达以及与答案集编程(ASP)的集成等高级知识表示范式。
  • 提供一个稳健、符合标准的 Prolog 系统,支持程序分析、语义网和医学信息学等真实世界应用。

提出的方法

  • 使用 SLG 求解策略并缓存与重用表格化子目标的答案,防止递归查询中的无限循环。
  • 通过稳态语义(WFS)实现表格化否定,以一致且终止的方式处理否定。
  • 应用调用与答案的泛化机制,通过重用更一般的答案并避免冗余计算,优化表格化求值。
  • 支持增量表格化与动态代码修改,允许在运行时更新谓词与表格而无需重新编译。
  • 通过属性变量与约束逻辑编程集成,支持 CLP(R)、CLP(FD) 和约束处理规则(CHR)。
  • 通过线程安全的表格管理与线程间共享表格访问,支持多线程执行。

实验结果

研究问题

  • RQ1如何有效将表格化机制集成到 Prolog 中,以确保递归和否定查询的终止性与最优时间复杂度?
  • RQ2在表格化 Prolog 系统中,支持动态代码修改与增量表格化的机制需要哪些支持?
  • RQ3如何将表格化逻辑编程扩展以支持非单调推理、偏好表达以及与答案集编程(ASP)的集成?
  • RQ4在多线程与基于约束的编程环境中,表格化 Prolog 的性能与可扩展性特征如何?
  • RQ5如何利用表格化 Prolog 实现复杂的知识表示系统(如 Flora-2)与语义网应用?

主要发现

  • XSB 中的表格化逻辑编程可确保具有有界项大小性质的程序实现终止,从而可靠地执行递归查询。
  • 在稳态语义(WFS)下的表格化否定可正确且高效地评估否定子目标,即使在存在循环的情况下亦然。
  • 调用与答案的泛化机制通过重用更一般的答案并避免冗余推导,显著减少表格空间占用与计算时间。
  • XSB 支持动态代码修改与增量表格化,允许在不重新编译的情况下运行时更新谓词。
  • 通过属性变量实现的约束集成,使得 CLP(R)、CLP(FD) 和 CHR 可在表格化 Prolog 环境中无缝使用。
  • XSB 的多线程支持可实现可扩展的并发执行,提升现代并行架构上的性能表现。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。