Several formal systems, such as resolution and minimal model semantics, provide a framework for logic programming. In this paper, we will survey the use of structural proof theory as an alternative foundation. Researchers have been using this foundation for the past 35 years to elevate logic programming from its roots in first-order classical logic into higher-order versions of both intuitionistic and linear logic. These more expressive logic programming languages allow for capturing stateful computations and rich forms of abstractions, including higher-order programming, modularity, and abstract data types. Term-level bindings are another kind of abstraction, and these are given an elegant and direct treatment within both proof theory and these extended logic programming languages. Logic programming has also inspired new results in proof theory, such as polarity and focused proofs. These recent results have also provided a high-level means for presenting the differences between forward-chaining and backward-chaining style inferences. Anchoring logic programming in proof theory has also helped identify its connections and differences with functional programming, deductive databases, and model checking.
翻译:一些正式系统,如分辨率和最小模型语义学,为逻辑编程提供了一个框架。在本文中,我们将调查结构证据理论作为一种替代基础的使用情况。在过去35年中,研究人员一直在利用这一基础,将一阶古典逻辑的逻辑编程根部提升为直觉逻辑和线性逻辑的较高层次版本。这些更显眼的逻辑编程语言可以捕捉有声的计算和丰富形式的抽象,包括更高阶编程、模块化和抽象数据类型。定期捆绑是另一种抽象形式,在证据理论和这些扩展逻辑编程语言中都给予优雅和直接的处理。逻辑编程也激发了证据理论方面的新结果,如极性和重点证据。这些近期的结果也为展示前链和后链风格的推理差异提供了高层次的手段。证据理论中的逻辑编程也有助于确定其与功能编程、推算数据库和模型校验之间的联系和差异。