Procedures, parameters, and abstraction: separate concerns
Science of Computer Programming
Essays in computing science
Reasoning About Time in Higher-Level Language Software
IEEE Transactions on Software Engineering
The Z notation: a reference manual
The Z notation: a reference manual
A practical theory of programming
A practical theory of programming
Predicting program execution times by analyzing static and dynamic program paths
Real-Time Systems - Special issue: Real-time languages and language-level timing tools and analysis
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
Refinement Calculus: A Systematic Introduction
Refinement Calculus: A Systematic Introduction
Specification Case Studies
An Accurate Worst Case Timing Analysis for RISC Processors
IEEE Transactions on Software Engineering
The Ravenscar Tasking Profile for High Integrity Real-Time Programs
Ada-Europe '98 Proceedings of the 1998 Ada-Europe International Conference on Reliable Software Technologies
Proceedings of the International Conference on Mathematics of Program Construction, 375th Anniversary of the Groningen University
A predicative semantics for real-time refinement
Programming methodology
Reasoning about real-time programs using idle-invariant assertions
APSEC '00 Proceedings of the Seventh Asia-Pacific Software Engineering Conference
A theory for execution-time derivation in real-time programs
Theoretical Computer Science - Quantitative aspects of programming languages (QAPL 2004)
Procedures in the refinement calculus: a new approach?
FAC-RW'96 Proceedings of the BCS-FACS 7th conference on Refinement
Unifying theories of programming that distinguish nontermination and abort
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Hi-index | 0.00 |
The real-time refinement calculus is a formal method for the systematic derivation of real-time programs from real-time specifications in a style similar to the non-real-time refinement calculi of Back and Morgan. In this paper we extend the real-time refinement calculus with procedures and provide refinement rules for refining real-time specifications to procedure calls. A real-time specification can include constraints on, not only what outputs are produced, but also when they are produced. The derived programs can also include time constraints on when certain points in the program must be reached; these are expressed in the form of deadline commands. Such programs are machine independent. An important consequence of the approach taken is that, not only are the specifications machine independent, but the whole refinement process is machine independent. To implement the machine independent code on a target machine one has a separate task of showing that the compiled machine code will reach all its deadlines before they expire. For real-time programs, externally observable input and output variables are essential. These differ from local variables in that their values are observable over the duration of the execution of the program. Hence procedures require input and output parameter mechanisms that are references to the actual parameters so that changes to external inputs are observable within the procedure and changes to output parameters are externally observable. In addition, we allow value and result parameters. These may be auxiliary parameters, which are used for reasoning about the correctness of real-time programs as well as in the expression of timing deadlines, but do not lead to any code being generated for them by a compiler.