On correctness and completeness of an n queens program
This work addresses the need for precise declarative reasoning about logic program semantics, primarily for researchers in logic programming, but it is incremental as it focuses on a specific example.
The paper tackles the problem of verifying the correctness and completeness of a tricky Prolog program for the n queens problem by providing declarative proofs using standard semantics, without describing the program's exact operational details.
Thom Frühwirth presented a short, elegant and efficient Prolog program for the n queens problem. However the program may be seen as rather tricky and one may not be convinced about its correctness. This paper explains the program in a declarative way, and provides proofs of its correctness and completeness. The specification and the proofs are declarative, i.e. they abstract from any operational semantics. The specification is approximate, it is unnecessary to describe the program's semantics exactly. Despite the program works on non-ground terms, this work employs the standard semantics, based on logical consequence and Herbrand interpretations. Another purpose of the paper is to present an example of precise declarative reasoning about the semantics of a logic program. Under consideration in Theory and Practice of Logic Programming (TPLP).