A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
Specification statements and refinements
IBM Journal of Research and Development
Procedures, parameters, and abstraction: separate concerns
Science of Computer Programming
A generalization of Dijkstra's calculus
ACM Transactions on Programming Languages and Systems (TOPLAS)
Logic programming: systematic program development
Logic programming: systematic program development
The Z notation: a reference manual
The Z notation: a reference manual
Constructing logic programs
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
Supporting contexts in program refinement
Science of Computer Programming
Journal of the ACM (JACM)
Introduction to Mathematical Theory of Computation
Introduction to Mathematical Theory of Computation
Translating refined logic programs to Mercury
ACSC '02 Proceedings of the twenty-fifth Australasian conference on Computer science - Volume 4
Unifying Theories for Parallel Programming
Euro-Par '97 Proceedings of the Third International Euro-Par Conference on Parallel Processing
Refining Specifications to Logic Programs
LOPSTR '96 Proceedings of the 6th International Workshop on Logic Programming Synthesis and Transformation
Calculating modules in contextual logic program refinement
Theory and Practice of Logic Programming
Refinement of higher-order logic programs
LOPSTR'02 Proceedings of the 12th international conference on Logic based program synthesis and transformation
Hi-index | 0.00 |
Existing refinement calculi provide frameworks for the stepwise development of imperative programs from specifications. This paper presents a refinement calculus for deriving logic programs. The calculus contains a wide-spectrum logic programming language, including executable constructs such as sequential conjunction, disjunction, and existential quantification, as well as specification constructs such as general predicates, assumptions and universal quantification. A declarative semantics is defined for this wide-spectrum language based on executions. Executions are partial functions from states to states, where a state is represented as a set of bindings. The semantics is used to define the meaning of programs and specifications, including parameters and recursion. To complete the calculus, a notion of correctness-preserving refinement over programs in the wide-spectrum language is defined and refinement laws for developing programs are introduced. The refinement calculus is illustrated using example derivations and prototype tool support is discussed.