Foundations of logic programming
Foundations of logic programming
Journal of Logic Programming
New Generation Computing
Inductive assertion method for logic programs
Theoretical Computer Science - International Joint Conference on Theory and Practice of Software Development, P
Every logic program has a natural stratification and an iterated least fixed point model
PODS '89 Proceedings of the eighth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
Information Processing Letters
Declarative diagnosis of missing answers
New Generation Computing
The Go¨del programming language
The Go¨del programming language
Verification of logic programs and imperative programs
Constructing logic programs
Algorithmic Program DeBugging
Rational Debugging in Logic Programming
Proceedings of the Third International Conference on Logic Programming
Proving Correctness and Completeness of Normal Programs - A Declarative Approach
Proceedings of the 17th International Conference on Logic Programming
An Assertion Language for Constraint Logic Programs
Analysis and Visualization Tools for Constraint Programming, Constrain Debugging (DiSCiPl project)
Proving correctness and completeness of normal programs – a declarative approach
Theory and Practice of Logic Programming
Logic Programs under Three-Valued Łukasiewicz Semantics
ICLP '09 Proceedings of the 25th International Conference on Logic Programming
Declarative diagnosis of floundering in prolog
ACSC '12 Proceedings of the Thirty-fifth Australasian Computer Science Conference - Volume 122
Logic programming: from underspecification to undefinedness
CATS '12 Proceedings of the Eighteenth Computing: The Australasian Theory Symposium - Volume 128
Hi-index | 0.00 |
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.