A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
A calculus of refinements for program derivations
Acta Informatica
Logic programming: systematic program development
Logic programming: systematic program development
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
Refining Specifications to Logic Programs
LOPSTR '96 Proceedings of the 6th International Workshop on Logic Programming Synthesis and Transformation
A tool for developing correct programs by refinement
FAC-RW'96 Proceedings of the BCS-FACS 7th conference on Refinement
Refinement Calculus for Logic Programming in Isabelle/HOL
TPHOLs '01 Proceedings of the 14th International Conference on Theorem Proving in Higher Order Logics
Hi-index | 0.00 |
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.