Logic + control: On program construction and verification
W{\l}odzimierz Drabent

TL;DR
This paper demonstrates a formal, stepwise approach to constructing and verifying a Prolog SAT solver, emphasizing declarative correctness proofs and separation of logic and control aspects.
Contribution
It introduces a systematic refinement process for logic programs with correctness proofs that are independent of operational semantics, including control considerations.
Findings
Constructed a verified Prolog SAT solver through stepwise refinement.
Proved correctness, completeness, termination, and non-floundering of the program.
Separated logic and control to simplify reasoning and proof processes.
Abstract
This paper presents an example of formal reasoning about the semantics of a Prolog program of practical importance (the SAT solver of Howe and King). The program is treated as a definite clause logic program with added control. The logic program is constructed by means of stepwise refinement, hand in hand with its correctness and completeness proofs. The proofs are declarative - they do not refer to any operational semantics. Each step of the logic program construction follows a systematic approach to constructing programs which are provably correct and complete. We also prove that correctness and completeness of the logic program is preserved in the final Prolog program. Additionally, we prove termination, occur-check freedom and non-floundering. Our example shows how dealing with "logic" and with "control" can be separated. Most of the proofs can be done at the "logic" level,…
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.
