Abstraction and specification in program development
Abstraction and specification in program development
Specification of computer programs
Specification of computer programs
A calculus of refinements for program derivations
Acta Informatica
The family of concurrent logic programming languages
ACM Computing Surveys (CSUR)
Data refinement by calculation
Acta Informatica
Specification and transformation of programs: a formal approach to software development
Specification and transformation of programs: a formal approach to software development
The Go¨del programming language
The Go¨del programming language
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
Supporting contexts in program refinement
Science of Computer Programming
A Discipline of Programming
Translating refined logic programs to Mercury
ACSC '02 Proceedings of the twenty-fifth Australasian conference on Computer science - Volume 4
Forms of Logic Specifications: A Preliminary Study
LOPSTR '96 Proceedings of the 6th International Workshop on Logic Programming Synthesis and Transformation
Refining Specifications to Logic Programs
LOPSTR '96 Proceedings of the 6th International Workshop on Logic Programming Synthesis and Transformation
Specware: Formal Support for Composing Software
MPC '95 Mathematics of Program Construction
A refinement calculus for logic programs
Theory and Practice of Logic Programming
Hi-index | 0.00 |
The refinement calculus for logic programs is a framework for deriving logic programs from specifications. It is based on a wide-spectrum language that can express both specifications and code, and a refinement relation that models the notion of correct implementation. In this paper we extend and generalise earlier work on contextual refinement. Contextual refinement simplifies the refinement process by abstractly capturing the context of a subcomponent of a program, which typically includes information about the values of the free variables. This paper also extends and generalises module refinement. A module is a collection of procedures that operate on a common data type; module refinement between a specification module A and an implementation module C allows calls to the procedures of A to be systematically replaced with calls to the corresponding procedures of C. Based on the conditions for module refinement, we present a method for calculating an implementation module from a specification module. Both contextual and module refinement within the refinement calculus have been generalised from earlier work and the results are presented in a unified framework.