ACM Transactions on Programming Languages and Systems (TOPLAS)
Program development by stepwise refinement
Communications of the ACM
A Discipline of Programming
Real-Time Program Refinement Using Auxiliary Variables
FTRTFT '00 Proceedings of the 6th International Symposium on Formal Techniques in Real-Time and Fault-Tolerant Systems
Reasoning about Non-terminating Loops Using Deadline Commands
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
A predicative semantics for real-time refinement
Programming methodology
Coercing real-time refinement: a transmitter
1FACS'96 Proceedings of the 1st BCS-FACS conference on Northern Formal Methods
Electronic Notes in Theoretical Computer Science (ENTCS)
The miracle of reactive programming
UTP'08 Proceedings of the 2nd international conference on Unifying theories of programming
Hi-index | 0.00 |
The real-time refinement calculus is an extension of the standard refinement calculus in which programs are developed from a precondition plus post-condition style of specification. In addition to adapting standard refinement rules to be valid in the real-time context, specific rules are required for the timing constructs such as delays and deadlines. Because many real-time programs may be nonterminating, a further extension is to allow nonterminating repetitions.A real-time specification constrains not only what values should be output, but when they should be output. Hence for a program to implement such a specification, it must guarantee to output values by the specified times. With standard programming languages such guarantees cannot be made without taking into account the timing characteristics of the implementation of the program on a particular machine. To avoid having to consider such details during the refinement process, we have extended our real-time programming language with a deadline command. The deadline command takes no time to execute and always guarantees to meet the specified time; if the deadline has already passed the deadline command is infeasible (miraculous in Dijkstra's terminology). When such a real-time program is compiled for a particular machine, one needs to ensure that all execution paths leading to a deadline are guaranteed to reach it by the specified time. We consider this checking as part of an extended compilation phase. The addition of the deadline command restores for the real-time language the advantage of machine independence enjoyed by non-real-time programming languages.