The refinement calculus provides a method for transforming specifications to executable code, maintaining the correctness of the code with respect to its specification. In the original refinement calculus, the target language is an imperative programming language, but more recently a refinement calculus for deriving logic programs has been proposed. Due to the amount of detail involved, the manual refinement of programs is a tedious and time- consuming task, and is therefore an obvious candidate for tool support. Several tools exist for the imperative refinement calculus, and in this paper we describe a prototype tool to support the recently developed refinement calculus for logic programs. The tool was developed using Ergo, an interactive theorem prover. To provide tool support for the calculus, its underlying semantic model was defined within Ergo, and the laws of the calculus were proven in that framework. We illustrate the tool using a simple example refinement.
Author and article information
Software Verification Research Centre
School of Information Technology
University of Queensland, Brisbane, 4072, Australia