Reference. Finite-Choice Logic Programming
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.
Cite
Cited by (1)
CounterChoice: Counterpoint Composition in Dusa with a Firmus Foundation erdem-2026-counterchoice
Cites 71 works (1 here)
With notes (1)
Exploring Consequences of Privacy Policies with Narrative Generation via Answer Set Programming dabral-2022-exploring
Informed consent has become increasingly salient for data privacy and its regulation. Entities from governments to for-profit companies have addressed concerns about data privacy with policies that enumerate the conditions for personal data storage and transfer. However, increased enumeration of and transparency in data privacy policies has not improved end-users’ comprehension of how their data might be used: not only are privacy policies written in legal language that users may struggle to understand, but elements of these policies may compose in such a way that the consequences of the policy are not immediately apparent. We present a framework that uses Answer Set Programming (ASP) – a type of logic programming – to formalize privacy policies. Privacy policies thus become constraints on a narrative planning space, allowing end-users to forward-simulate possible consequences of the policy in terms of actors having roles and taking actions in a domain. We demonstrate through the example of the Health Insurance Portability and Accountability Act (HIPAA) how to use the system in various ways, including asking questions about possibilities and identifying which clauses of the law are broken by a given sequence of events.
External (70)
- Dusa benchmarking datasets (2024)
- Dusa implementation, examples, and benchmarking (2024)
- Domain-specific heuristics in answer set programming: a declarative non-monotonic approach (2023)
- Time-and-Space-Efficient Weighted Deduction (2023)
- Answer Set Programming Made Easy (2023)
- Reflecting on Random Generation (2023)
- Better Together: Unifying Datalog and Equality Saturation (2023)
- Parsing randomness (2022)
- Computing correctly with inductive relations (2022)
- Automating defeasible reasoning in law with answer set programming (2022)
- The Choice Construct in the Souffle Language (2021)
- Generating Explorable Narrative Spaces with Answer Set Programming (2020)
- Non-monotonic Spatial Reasoning for Safety Analysis in Construction (2020)
- Fixpoints for the masses: programming with first-class Datalog constraints (2020)
- CatSAT: A Practical, Embedded, SAT Language for Runtime PCG (2018)
- Gemini: Bidirectional Generation and Analysis of Games via ASP (2018)
- Multi-shot ASP solving with clingo (2017)
- Generating good generators for inductive relations (2017)
- Procedural Generation in Game Design (2017)
- Blending Lazy-Grounding and CDNL Search for Answer-Set Solving (2017)
- ASPeRiX, a first-order forward chaining approach for answer set computing (2017)
- Benchmark results (Alpha ASP solver) (2017)
- Grounding and Solving in Answer Set Programming (2016)
- Procedural Content Generation in Games (2016)
- Design and Implementation of the LogicBlox System (2015)
- Procedural level generation with answer set programming for general Video Game playing (2015)
- Type Targeted Testing (2014)
- A logical approach to building dungeons: Answer set programming for hierarchical procedural content generation in roguelike games (2014)
- Basic modeling in ASP and more via the n-Queens puzzle (2014)
- Quantifying over play: Constraining undesirable solutions in puzzle design (2013)
- Logic and lattices for distributed programming (2012)
- Conflict-driven answer set solving: From theory to practice (2012)
- OMiGA: an open minded grounding on-the-fly answer set solver (2012)
- QuickCheck: a lightweight tool for random testing of Haskell programs (2011)
- Generating Missions and Spaces for Adaptable Play Experiences (2011)
- #ifdef confirmed harmful: Promoting understandable software variation (2011)
- Answer Set Programming for Procedural Content Generation: A Design Space Approach (2011)
- Potassco: The Potsdam Answer Set Solving Collection (2011)
- A map generation speedrun with answer set programming (2011)
- Dedalus: Datalog in Time and Space (2010)
- GASP: Answer Set Programming with Lazy Grounding (2009)
- Answer Set Programming without Unstratified Negation (2008)
- Linear Logical Algorithms (2008)
- Sound and Complete SLD-Resolution for Bilattice-Based Annotated Logic Programs (2006)
- Compiling Comp Ling: practical weighted dynamic programming and the Dyna language (2005)
- Staged Configuration Using Feature Models (2004)
- Generative Programming (2002)
- Semantics and Expressive Power of Nondeterministic Constructs in Deductive Databases (2001)
- Greedy algorithms in Datalog (2001)
- Extending and implementing the stable model semantics (2000)
- On the complexity analysis of static analyses (1999)
- Disjunctive datalog (1997)
- Disjunctive Stable Models: Unfounded Sets, Fixpoint Semantics, and Computation (1997)
- A Statistical Learning Method for Logic Programs with Distribution Semantics (1995)
- The Family of Stable Models (1993)
- Theory of Generalized Annotated Logic Programming and its Applications (1992)
- Monotonic aggregation in deductive databases (1992)
- Bilattices and the Semantics of Logic Programming (1991)
- Uniform Proofs as a Foundation for Logic Programming (1991)
- Stable semantics for disjunctive programs (1991)
- The well-founded semantics for general logic programs (1991)
- Stable models and non-determinism in logic programs with negation (1990)
- Non-Deterministic Choice in Datalog (1988)
- The stable model semantics for logic programming (1988)
- Domains for Denotational Semantics (1982)
- A Theory of Nondeterminism (1980)
- Negation as Failure (1978)
- A Powerdomain Construction (1976)
- Powerdomains (1976)
- A LATTICE-THEORETICAL FIXPOINT THEOREM AND ITS APPLICATIONS (1955)