
TL;DR
This paper investigates the concept of completeness in logic programming, providing sufficient conditions for ensuring programs produce all required answers and examining how pruning affects completeness, with practical implications for Prolog programming.
Contribution
It introduces new sufficient conditions for the completeness of definite logic programs and analyzes the preservation of completeness under pruning operations like cut.
Findings
Proposes simple, practical methods for reasoning about program completeness.
Identifies conditions under which completeness is preserved despite pruning.
Highlights the importance of approximate specifications in logic programming.
Abstract
Program correctness (in imperative and functional programming) splits in logic programming into correctness and completeness. Completeness means that a program produces all the answers required by its specification. Little work has been devoted to reasoning about completeness. This paper presents a few sufficient conditions for completeness of definite programs. We also study preserving completeness under some cases of pruning of SLD-trees (e.g. due to using the cut). We treat logic programming as a declarative paradigm, abstracting from any operational semantics as far as possible. We argue that the proposed methods are simple enough to be applied, possibly at an informal level, in practical Prolog programming. We point out importance of approximate specifications.
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.
