The Computer Journal
The logic of programming
A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
Specification statements and refinements
IBM Journal of Research and Development
ACM Transactions on Programming Languages and Systems (TOPLAS)
A calculus of refinements for program derivations
Acta Informatica
Procedures, parameters, and abstraction: separate concerns
Science of Computer Programming
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
Assignment and Procedure Call Proof Rules
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program development by stepwise refinement
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
The Science of Programming
A Discipline of Programming
Informal Strategies in Design by Refinement
FME '94 Proceedings of the Second International Symposium of Formal Methods Europe on Industrial Benefit of Formal Methods
Deriving Programs by Combining and Adapting Refinement Scripts
APSEC '95 Proceedings of the Second Asia Pacific Software Engineering Conference
Report on the programming language Euclid
ACM SIGPLAN Notices
Chapter I: Notes on structured programming
Structured programming
An Introduction to the Construction and Verification of Alphard Programs
IEEE Transactions on Software Engineering
Procedures and parameters in the real-time program refinement calculus
Science of Computer Programming
Hi-index | 0.00 |
We examine the use of procedures in the refinement calculus and show that the traditional approach leads to certain problems when programs are not constructed in a strictly top-down manner. These problems arise because a procedure name becomes associated with the implementation when the procedure body is refined, and we examine some ways in which they may be avoided. We argue that, because procedures are not required in order to express procedural abstractions, the primary purpose of using procedures in program refinement is to do with packaging the final program, and that decisions about how a program is packaged into procedures should be made separately from algorithm design decisions. We present an alternative approach based on this rationale which avoids the aforementioned problems, and discuss ways in which it can be supported by a refinement tool.