A three-valued semantics for logic programmers
Lee Naish
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) pure Prolog programs with (ground) negation as failure which reflects this. The semantics of Fitting is similar but only associates the third truth value with non-termination. We provide tools to reason about correctness of programs without the need for unnatural precision or undue restrictions on programming style. As well as theoretical results, we provide a programmer-oriented synopsis. This work has come out of work on declarative debugging, where it has been recognised that inadmissible calls are important. This paper has been accepted to appear in Theory and Practice of Logic Programming.
Create a lesson
Related papers
String Diagrams for Process Mining
Antony R. Lee, Peter Tiňo, Iain B. Styles
Rich Sequences and Decidability of Arithmetic Theories
Toghrul Karimov, Joris Nieuwveld, Joël Ouaknine
An Explicit Ordinal Bound for System T Dialogue Trees
MingKun Xiao, YiXuan Sun
Concurrency, Causality and Conflict via Independence in Reversible Calculi
Clément Aubert, Gabriele Cecilia, Iain C. C. Phillips et al.
A Theory of a Two-Dimensional Typed Lambda Calculus
Daniel O. Martínez-Rivillas, Arthur F. Ramos, Ruy J. G. B. de Queiroz
FloatLib: Verified Floating-Point Arithmetic in Lean
Robert Joseph George, Will Adkisson, Anima Anandkumar