一句话:提出有限选择逻辑编程,用选择代替否定表达多解,并实现 Dusa 求解器。
逻辑编程(如 Datalog)通常以唯一最小模型定义程序含义,但许多问题需要在满足结构与逻辑约束下枚举多个模型,不存在单一规范模型。带否定的逻辑程序通过稳定模型语义刻画这类解集,形成答案集编程,但稳定模型的定义较为间接,尤其含自由变量时。本文提出有限选择逻辑编程(finite-choice logic programming),以选择而非否定允许多个解,覆盖稳定模型语义的表达力,并为新一类程序赋予意义;它在一种新域上具有最小不动点解释。作者给出解空间探索算法并证明其相对于该语义的正确性,还实现 Dusa 语言,性能与先进答案集求解器相当,且随问题规模扩展更可预测。
Logic programming, as exemplified by datalog, defines the meaning of a program as its unique smallest model: the deductive closure of its inference rules. However, many problems call for an enumeration of models that vary along some set of choices while maintaining structural and logical constraints—there is no single canonical model. The notion of stable models for logic programs with negation has successfully captured programmer intuition about the set of valid solutions for such problems, giving rise to a family of programming languages and associated solvers known as answer set programming. Unfortunately, the definition of a stable model is frustratingly indirect, especially in the presence of rules containing free variables. We propose a new formalism, finite-choice logic programming, that uses choice, not negation, to admit multiple solutions. Finite-choice logic programming contains all the expressive power of the stable model semantics, gives meaning to a new and useful class of programs, and enjoys a least-fixed-point interpretation over a novel domain. We present an algorithm for exploring the solution space and prove it correct with respect to our semantics. Our implementation, the Dusa logic programming language, has performance that compares favorably with state-of-the-art answer set solvers and exhibits more predictable scaling with problem size.
@article{paperbot3245,
title = {Finite-Choice Logic Programming},
author = {Chris Martens and Robert J. Simmons and Michael Arntzenius},
journal = {Proceedings of the ACM on Programming Languages},
volume = {9},
number = {POPL},
year = {2025},
doi = {10.1145/3704849}
}