Next: Motivation and background
Up: A three-valued semantics for
Previous: Introduction
The theoretical results in this paper show you can establish that a program
- returns no wrong answers, and
- misses no answers in all solutions computations which terminate
normally,
using the following verification method:
- You must decide whether each ground atomic goal is true (should
succeed), false (should fail) or inadmissible (should not
occur; any behaviour is acceptable).
- For each true atom there must be a ground matching clause instance
with a true body (all conjuncts are true).
- For each false atom, all ground matching clause instances
must have false bodies (at least one conjunct is false).
Note that separate reasoning must be used to show the program terminates
normally (answers may be missed due to non-termination or runtime errors).
Also, there are several assumptions about the program/system:
- Only ``pure'' Prolog is used -- there are no uses of cut,
var/1, et cetera.
- Negated calls are ground when they are selected (this is checked at
runtime or compile time in some logic programming systems; others provide
no support for checking).
- The execution doesn't violate the ``occurs check'' (again, some
systems provide support for this but most do not -- occurs check
violations are very rare).
Next: Motivation and background
Up: A three-valued semantics for
Previous: Introduction
2005-08-02