A three-valued semantics for logic programmers
Lee Naish

TL;DR
This paper introduces a three-valued semantics for logic programming that better models programmer intentions by allowing an 'inadmissible' status for certain atoms, aiding correctness reasoning and debugging.
Contribution
It proposes a novel three-valued semantics for logic programs that captures inadmissible atoms, improving reasoning about correctness and debugging.
Findings
Provides a formal three-valued semantics for logic programs.
Offers tools for reasoning about program correctness without unnatural assumptions.
Enhances debugging by considering inadmissible calls.
Abstract
This paper describes a simpler way for programmers to reason about the correctness of their code. The study of semantics of logic programs has shown strong links between the model theoretic semantics (truth and falsity of atoms in the programmer's interpretation of a program), procedural semantics (for example, SLD resolution) and fixpoint semantics (which is useful for program analysis and alternative execution mechanisms). Most of this work assumes that intended interpretations are two-valued: a ground atom is true (and should succeed according to the procedural semantics) or false (and should not succeed). In reality, intended interpretations are less precise. Programmers consider that some atoms "should not occur" or are "ill-typed" or "inadmissible". Programmers don't know and don't care whether such atoms succeed. In this paper we propose a three-valued semantics for (essentially)…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, Reasoning, and Knowledge · Logic, programming, and type systems · Advanced Algebra and Logic
