| [1] | Brijesh Dongol and Ian J. Hayes. Enforcing safety and progress properties: An approach to concurrent program derivation. In Colin Fidge, editor, Australian Software Engineering Conference 2009. IEEE Computer Society, 2009. Accepted. [ bib ] |
| [2] | Robert Colvin and Ian J. Hayes. CSP with hierarchical state. In Integrated Formal Methods 2009, Lecture Notes in Computer Science. Springer Verlag, 2009. Accepted. [ bib ] |
| [3] |
Ian Hayes.
Dynamically detecting faults via integrity constraints.
In Michael Butler, Cliff Jones, Alexander Romanovsky, and Elena
Troubitsyna, editors, Methods, Models, and Tools for Fault Tolerance,
volume 5454 of Lecture Notes in Computer Science. Springer Verlag,
2008.
[ bib ]
Control programs for safety-critical systems are required to tolerate faults in the devices they control. In this paper we examine a systematic approach to devising code to detect faulty devices at runtime. The approach is centred around the use of integrity constraints, which are invariants on the state of a system's variables, including its inputs and outputs. Under normal operation s should always hold, but they are designed to fail to hold if there is a fault. By adding variables to capture the previous state of variables or the time of significant events, additional integrity constraints can be devised to check for faults in state transitions or faults with the rate of progress of the system. We discuss techniques for devising integrity constraints as well as efficiently evaluating the constraints. When an error is detected via the failure of an integrity constraint, the integrity constraint(s) that failed can help diagnose the likely fault. We illustrate the approach using controller software written in the action system style, but it is equally applicable to other state machine approaches such as Event-B and TLA.
|
| [4] | Ian J. Hayes. Towards reasoning about teleo-reactive programs for robust real-time systems. In SERENE '08: Proceedings of the 2008 RISE/EFTS Joint International Workshop on Software Engineering for Resilient Systems, pages 87-94, New York, NY, USA, 2008. ACM. [ bib | DOI ] |
| [5] |
Larissa Meinicke and Ian J. Hayes.
Probabilistic choice in refinement algebra.
In Philippe Audebaud and Christine Paulin-Mohring, editors,
Mathematics of Program Construction (MPC), volume 5133 of Lecture Notes
in Computer Science, pages 243-267. Springer Verlag, 2008.
[ bib |
DOI ]
The term refinement algebra refers to a set of abstract algebra, similar to Kleene algebra with tests, that are suitable for reasoning about programs in a total-correctness framework. Abstract algebraic reasoning also works well when probabilistic programs are concerned, and a refinement algebra that is suitable for such programs has been defined. This refinement algebra does not contain a probabilistic choice operator, and has been used to define commonalities between a variety of different - both probabilistic and non-probabilistic - program models. Although it is possible to algebraically verify a large and interesting group of theorems for probabilistic programs without explicit reference to probabilistic choices, there are circumstances in which reasoning directly about probabilistic choices may be useful. In this paper we investigate how probabilistic choice may be characterised abstract-algebraically in refinement algebra. That is, we propose a new refinement algebra in which probabilistic choice, probabilistic guards and assertions may be expressed. Two operators for modelling probabilistic enabledness and termination are also introduced. Keywords: Kleene algebra, probability, refinement algebra, total-correctness |
| [6] |
Larissa Meinicke and Ian J. Hayes.
Algebraic reasoning for probabilistic action systems and while-loops.
Acta Informatica, 45(5):321-382, 2008.
[ bib |
DOI ]
Back and von Wright have developed algebraic laws for reasoning about loops in a total correctness framework using the refinement calculus. We extend their work to reasoning about probabilistic loops in the probabilistic refinement calculus. We apply our algebraic reasoning to derive transformation rules for probabilistic action systems and probabilistic while-loops. In particular we focus on developing data refinement rules for these two constructs. Our extension is interesting since some well known transformation rules that are applicable to standard programs are not applicable to probabilistic ones: we identify some of these important differences and we develop alternative rules where possible. Keywords: Kleene algebra, probability, refinement algebra, total-correctness |
| [7] |
R. Colvin, I.J. Hayes, and P.A. Strooper.
Calculating modules in contextual logic program refinement.
Theory and Practice of Logic Programming, 8(01):1-31, 2008.
[ bib |
DOI |
http ]
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 5B 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. Keywords: Logic programs, refinement, modules, context |
| [8] | R. Colvin and I.J. Hayes. A semantics for behavior trees. ACCS Technical Report ACCS-TR-07-01, ARC Centre for Complex Systems (ACCS), April 2007. [ bib | http ] |
| [9] |
I.J. Hayes.
Procedures and parameters in the real-time program refinement
calculus.
Science of Computer Programming, 64(3):286-311, February 2007.
[ bib |
DOI ]
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. Keywords: Real-time programming; Procedures and parameters; refinement calculus |
| [10] | Brijesh Dongol and Ian J. Hayes. Trace semantics for the Owicki-Gries theory integrated with the progress logic from unity. Technical Report SSE-2007-02, Division of Systems and Software Engineering Research, School of Information Technology and Electrical Engineering, The University of Queensland, 2007. [ bib ] |
| [11] |
Cliff B. Jones, Ian J. Hayes, and Michael A. Jackson.
Deriving specifications for systems that are connected to the
physical world.
In Cliff B. Jones, Zhiming Liu, and Jim Woodcock, editors,
Formal Methods and Hybrid Real-Time Systems, volume 4700 of Lecture
Notes in Computer Science, pages 364-390. Springer Verlag, 2007.
[ bib |
DOI ]
Well understood methods exist for developing programs from formal specifications. Not only do such methods offer a precise check that certain sorts of deviations from their specifications are absent from implementations but they can also increase the productivity of the development process by careful use of layers of abstraction and refinement in design. These methods, however, presuppose a specification from which to begin the development. For tasks that are fully described in terms of the symbolic values within a machine, inventing a specification is not difficult but there is an increasing demand for systems in which programs interact with an external physical world. Here, the task of fixing the specification for the “silicon package” can be more challenging than the development itself. Such applications include control programs that attempt to bring about changes in the physical world via actuators and measure things in that external (to the silicon package) world via sensors. Furthermore, most systems of this class must tolerate failures in the physical components outside the computer: it then becomes even harder to achieve confidence that the specification is appropriate. This paper offers a systematic way to derive the specification of a control program. Furthermore, our approach leads to recording assumptions about the physical world. We also discuss separating the detection and management of faults from system operation in the absence of faults. This discussion is linked to the distinction between “normal” and “radical” design.
|
| [12] | I. J. Hayes, C. B. Jones, and J. E. Nicholls. Understanding the differences between VDM and Z. FACS FACTS, 2006-2:56-78, 2006. [ bib ] |
| [13] |
L. Meinicke and I. J. Hayes.
Reasoning algebraically about probabilistic loops.
In Zhiming Liu and Jifeng He, editors, ICFEM, volume 4260 of
LNCS, pages 380-399. Springer Verlag, 2006.
[ bib |
DOI |
http ]
Back and von Wright have developed algebraic laws for reasoning about loops in the refinement calculus. We extend their work to reasoning about probabilistic loops in the probabilistic refinement calculus. We apply our algebraic reasoning to derive transformation rules for probabilistic action systems. In particular we focus on developing data refinement rules for probabilistic action systems. Our extension is interesting since some well known transformation rules that are applicable to standard programs are not applicable to probabilistic ones: we identify some of these important differences and we develop alternative rules where possible. In particular, our probabilistic action system data refinement rules are new.
|
| [14] |
Larissa Meinicke and Ian J. Hayes.
Continuous action system refinement.
In T. Uustalu, editor, Mathematics of Program Construction:
Proceedings 8th International Conference (MPC 2006), volume 4014 of
LNCS, pages 316-337. Springer Verlag, 2006.
[ bib |
DOI |
http ]
Action systems are a framework for reasoning about discrete reactive systems. Back, Petre and Porres have extended these action sys- tems to continuous action systems, which can be used to model hybrid systems. In this paper we define a refinement relation, and develop prac- tical refinement rules for continuous action systems. The meaning of continuous action systems is expressed in terms of a mapping from continuous action systems to action systems. First, we present a new mapping from continuous action systems to action systems, such that the definition of trace refinement is correct with respect to it. Second, we present a stream semantics that is compatible with the trace semantics, but is preferable to it because it is more general. Although action system trace refinement rules are applicable to continuous action systems with a stream semantics, they are not complete. Finally, we introduce a new data refinement rule that is valid with respect to the stream semantics and can be used to prove refinements that are not possible in the trace semantics, and we analyse the completeness of our new rule in conjunction with the existing trace refinement rules.
|
| [15] |
Ian J. Hayes.
Termination of real-time programs: definitely, definitely not or
maybe.
In S.E. Dunne and W.J. Stoddart, editors, UTP 2006: First Int. Symp. on Unifying Theories of Programming, volume 4010 of LNCS, pages
141-154. Springer Verlag, 2006.
[ bib ]
Real-time control programs are often used in contexts where (conceptually) they run forever. Repetitions within such programs (or their specifications) may either (i) be guaranteed to terminate, (ii) be guaranteed to never terminate (loop forever), or (iii) may possibly terminate. In dealing with real-time programs and their specifications, we need to be able to represent these possibilities, and define suitable refinement orderings.
|
| [16] |
K. Lermer, C. J. Fidge, and I. J. Hayes.
A theory for execution time derivation in real-time programs.
Theoretical Computer Science, 346(1):3-27, November 2005.
[ bib ]
We provide an abstract command language for real-time programs and outline how a partial correctness semantics can be used to compute execution times. The notions of a timed command, refinement of a timed command, the command traversal condition, and the worst-case and best-case execution time of a command are formally introduced and investigated with the help of an underlying weakest liberal precondition semantics. The central result is a theory for the computation of worst-case and best-case execution times from the underlying semantics based on supremum and infimum calculations. The framework is applied to the analysis of a message transmitter program and its implementation. Keywords: Real-time programming; Control-flow analysis; Execution-time derivation and prediction; Predicate transformer semantics; Partial correctness |
| [17] | J. Fitzgerald, I.J. Hayes, and A. Tarlecki, editors. FM 2005: Formal Methods - Proceedings 13th International Symposium of Formal Methods Europe, Newcastle, UK, July 2005, volume 3582 of Lecture Notes in Computer Science. Springer Verlag, July 2005. [ bib ] |
| [18] | A. Burns, I. J. Hayes, G. Baxter, and C. J. Fidge. Modelling temporal behaviour in complex socio-technical systems. Technical Report YCS 390, University of York, 2005. [ bib ] |
| [19] |
Erica Glynn, I.J. Hayes, and Anthony MacDonald.
Integration of generic program analysis tools into a software
development environment.
In V. Estivill-Castro, editor, Computer Science 2005:
Proceedings 28th Australasian Computer Science Conference (ACSC2005),
volume 38 of Conferences in Research and Practice in Information
Technology, pages 249-257. Australian Computer Society, 2005.
[ bib ]
Support for program understanding in development and maintenance tasks can be facilitated by program analysis techniques. Both control-flow and data-flow analysis can support program comprehension by augmenting the program text with additional information that may either be displayed with the program or used to allow more sophisticated navigation of the program, e.g., from an identifier's use to its definition.
|
| [20] | Phil Cook, Jim Welsh, and Ian J. Hayes. Building a flexible incremental compiler back-end. Technical Report SSE-2005-02, Division of Systems and Software Engineering Research, School of Information Technology and Electrical Engineering, The University of Queensland, 2005. [ bib ] |
| [21] | Phil Cook, Jim Welsh, and Ian J. Hayes. Incremental semantic evaluation for interactive systems: Inertia, pre-emption, and relations. Technical Report SSE-2005-01, Division of Systems and Software Engineering Research, School of Information Technology and Electrical Engineering, The University of Queensland, 2005. [ bib ] |
| [22] | Cameron Smith, Kirsten Winter, I.J. Hayes, R.G. Dromey, P. Lindsay, and D.A. Carrington. An environment for building a system out of its requirements. In Proceedings 19th IEEE International Conference on Automated Software Engineering, pages 398-399. IEEE, 2004. [ bib ] |
| [23] |
R. Colvin, L. Groves, I.J. Hayes, D. Hemer, R. Nickson, and P.A. Strooper.
Developing logic programs from specifications using stepwise
refinement.
In Maurice Bruynooghe and Kung-Kiu Lau, editors, Program
Development in Computational Logic: A Decade of Research Advances in
Logic-Based Program Development, volume 3049 of Lecture Notes in
Computer Science, pages 66-89. Springer Verlag, 2004.
[ bib ]
In this paper we demonstrate a refinement calculus for logic programs, which is a framework for developing logic programs from specifications. The paper is written in a tutorial-style, using a running example to illustrate how the refinement calculus is used to develop logic programs. The paper also presents an overview of some of the advanced features of the calculus, including the introduction of higher-order procedures and the refinement of abstract data types.
|
| [24] |
I.J. Hayes.
Towards platform-independent real-time systems.
In P.A. Strooper, editor, ASWEC, pages 192-200. IEEE Computer
Society, 2004.
[ bib ]
Real-time software systems are rarely developed once and left to run. They are subject to changes of requirements as the applications they support expand, and they commonly outlive the platforms they were designed to run on. A successful real-time system will be duplicated and adapted to a variety of applications-it becomes a product line. Current methods for real-time software development are commonly based on low-level programming languages and involve considerable duplication of effort when a similar system is to be developed or the hardware platform changes.
|
| [25] |
K. Lermer, C.J. Fidge, and I.J. Hayes.
Linear approximation of execution-time constraints.
Formal Aspects of Computing, 15(4):319-348, December 2003.
[ bib ]
This paper defines an algorithm for predicting worst-case and best-case execution times, and determining execution-time constraints of control-flow paths through real-time programs using their partial correctness semantics. The algorithm produces a linear approximation of path traversal conditions, worst-case and best-case execution times and strongest postconditions for timed paths in abstract real-time programs. We further derive techniques to determine the set of control-flow paths with decidable worst-case and best-case execution times. The approach is based on a weakest liberal precondition semantics and relies on supremum and infimum calculations similar to standard computations from linear programming and Presburger arithmetic. The methodology is generic in that it is applicable to any executable language that can be supplied with a predicate transformer semantics and hence provides a verification basis for high level as well as assembler level execution-time analysis techniques. Keywords: Real-time program analysis; Timing-path analysis; Timing prediction; Worst-case and best-case execution times; Automatic constraint determination. |
| [26] |
K. Lermer, C. J. Fidge, and I. J. Hayes.
Formal semantics for program paths.
In J. Harland, editor, Computing: The Australian Theory
Symposium (CATS) 2003, volume 78 of Electronic Notes in Theoretical
Computer Science (ENTCS), pages 1-24. Elsevier, February 2003.
[ bib |
.html ]
This paper provides the syntax and semantics for a systematic approach to the problem of analysing control-flow paths in computer programs. We give an abstract syntax and a partial correctness semantics for program control-flow paths as a generic model for path analysis and constraint derivation. This approach is formally based on a predicate transformer semantics over a boolean-valued predicate space and an abstract command language. The notions of a command, dead commands, the entry and exit conditions of a command and the inverse of a command are formally defined and investigated on the base of the semantics. A notion of command refinement is introduced capturing the abstraction process in program development from specification to implementation with partial correctness. Furthermore, command-reduction theorems and characterisations for command refinement are derived using the underlying semantics. Finally we verify the equivalence of weakest liberal precondition and strongest postcondition semantics for program commands in terms of the ordering relation they define on the command language. The approach is generic in that it is applicable to any program language that can be supplied with a predicate transformer semantics. Keywords: Control-flow path analysis; Partial correctness semantics; Path refinement; Weakest liberal precondition semantics; Strongest postconditions. |
| [27] |
I.J. Hayes.
Programs as paths: An approach to timing constraint analysis.
In Jin Song Dong and Jim Woodcock, editors, ICFEM, volume 2885
of LNCS, pages 1-15. Springer Verlag, 2003.
[ bib ]
A program can be decomposed into a set of possible execution paths. These can be described in terms of primitives such as assignments, assumptions and coercions, and composition operators such as sequential composition and nondeterministic choice as well as finitely or infinitely iterated sequential composition. Some of these paths cannot possibly be followed (they are dead or infeasible), and they may or may not terminate.
|
| [28] |
I.J. Hayes, M.A. Jackson, and C.B. Jones.
Determining the specification of a control system from that of its
environment.
In K. Araki, S. Gnesi, and D. Mandrioli, editors, FME 2003:
Formal Methods, volume 2805 of LNCS, pages 154-169. Springer Verlag,
2003.
[ bib |
.pdf ]
Well understood methods exist for developing programs from given specifications. A formal method identifies proof obligations at each development step: if all such proof obligations are discharged, a precisely defined class of errors can be excluded from the final program. For a class of “closed” systems such methods offer a gold standard against which less formal approaches can be measured.
|
| [29] |
R. Colvin, I. J. Hayes, D. Hemer, and P.A. Strooper.
Refinement of higher-order logic programs.
In M. Leuschel, editor, Proceedings of the International
Workshop on Logic-based Program Synthesis and Transformation (LOPSTR 2002),
volume 2664 of Lecture Notes in Computer Science, pages 126-143.
Springer, 2003.
[ bib ]
A refinement calculus provides a method for transforming specifications to executable code, maintaining the correctness of the code with respect to its specification. In this paper we extend the refinement calculus for logic programs to include higher-order programming capabilities in specifications and programs, such as procedures as terms and lambda abstraction. We use a higher-order type and term system to describe programs, and provide a semantics for the higher-order language and refinement. The calculus is illustrated by refinement examples.
|
| [30] |
Sibylle Peuker and Ian Hayes.
Reasoning about deadlines in concurrent real-time programs.
In Michel Charpentier and Beverly Sanders, editors, Workshop on
Formal Methods for Parallel Programming (FMPP 2003) in Proc. 17th
International Parallel and Distributed Processing Symposium, pages 1-8.
IEEE CS Press, 2003.
[ bib |
http ]
We propose a method for the timing analysis of concurrent real-time programs with hard deadlines. We divide the analysis into a machine-independent and a machine-dependent task. The latter takes into account the execution times of the program on a particular machine. Therefore, our goal is to make the machine-dependent phase of the analysis as simple as possible.
|
| [31] |
I. J. Hayes.
A predicative semantics for real-time refinement.
In A. McIver and C. C. Morgan, editors, Programming
Methodology, pages 109-133. Springer Verlag, 2003.
[ bib ]
Real-time systems play an important role in many safety-critical systems. Hence it is essential to have a formal basis for the development of real-time software. In this chapter we present a predicative semantics for a real-time language. The semantics includes a special variable representing the current time, and uses timed traces to present the values of external input and outputs over time so that reactive control systems can be handled. Because a real-time control system may be a nonterminating process, we allow the specification of nonterminating programs and the development of nonterminating repetitions.
|
| [32] |
Ian J. Hayes.
Block-structured (attribute) grammars.
Technical Report 02-47, Software Verification Research Centre, The
University of Queensland, December 2002.
[ bib ]
Most computing languages are highly structured but conventional (flat) grammars do not make that structure explicit. To address this issue, we examine adding block structure to grammars. We allow a production in a grammar to have local productions associated with it. The local productions are accessible only via that production. Local productions for one construct may be nested within local productions for higher level constructs to form a tree-structured hierarchy. Keywords: Block structure; attribute grammars; L-attribute grammars; upward remote attributes. |
| [33] |
I. J. Hayes, R. Colvin, D. Hemer, P. A. Strooper, and R. Nickson.
A refinement calculus for logic programs.
Theory and Practice of Logic Programming, 2(4-5):425-460,
July 2002.
[ bib ]
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.
|
| [34] |
G. Smith and I. J. Hayes.
An introduction to Real-Time Object-Z.
Formal Aspects of Computing, 13(2):128-141, May 2002.
[ bib ]
This paper presents Real-Time Object-Z: an integration of the object-oriented, state-based specification language Object-Z with the timed trace notation of the timed refinement calculus. This integration provides a method of formally specifying and refining systems involving continuous variables and real-time constraints. The basis of the integration is a mapping of the existing Object-Z history semantics to timed traces. Keywords: Real-time specification; real-time refinement; Object-Z; timed refinement calculus |
| [35] | Phil Cook, Jim Welsh, and Ian J. Hayes. Incremental context-sensitive evaluation in context. Technical Report 02-11, Software Verification Research Centre, The University of Queensland, 2002. [ bib ] |
| [36] | R. Colvin, I. J. Hayes, D. Hemer, and P. Strooper. Extended abstract: Refinement of higher-order logic programs. In M. Leuschel and F. Bueno, editors, Pre-Proceedings of the International Workshop on Logic-based Program Synthesis and Transformation (LOPSTR 2002), pages 136-141. School of Computer Science, Technical University of Madrid, 2002. Extended abstract. [ bib ] |
| [37] |
Jamie Shield and Ian J. Hayes.
Refining object-oriented invariants and dynamic constraints.
In P.A. Strooper and P. Muenchaisri, editors, Asian-Pacific
Software Engineering Conference (APSEC), pages 52-61. IEEE Computer
Society, 2002.
[ bib |
http ]
An invariant is a constraint on a class which holds for each externally accessible state of its instances. A dynamic constraint is a dual-state property dictating before to after state behaviour that all methods must adhere to. Both invariants and dynamic constraints are of practical benefit as they allow explicit declaration of high-level behavioural constraints on a class and all its sub-classes. In this paper, formalisations of invariants and dynamic constraints are provided in the refinement calculus. Each is separated into coerced (specification) and extant (implemented or documentation) categories. Refinement rules are provided for strengthening invariants and dynamic constraints. Two separate development paths are identified: (behavioural) sub-classing and private refinement. Refining a class may violate its invariant or dynamic constraint. Sub-classing is a constrained form of refinement that maintains these properties. Revised refinement laws are provided. Private refinement is an alternative to (behavioural) sub-classing. It also maintains properties such as invariants and dynamics constraints and foregoes the constraints of sub-classing. The disadvantage is that private refinement can only be used to implement a class. Keywords: Object-Oriented, Refinement Calculus, Invariants, History Properties |
| [38] |
S. Peuker and I.J. Hayes.
Towards a refinement calculus for concurrent real-time programs.
In C. George and Huaikou Miao, editors, Formal Methods and
Software Engineering (ICFEM), volume 2495 of LNCS, pages 335-347.
Springer-Verlag, 2002.
[ bib ]
We define a language and a predicative semantics to model concurrent real-time programs. We consider different communication paradigms between the concurrent components of a program: communication via shared variables and asynchronous message passing (for different models of channels).
|
| [39] |
I. J. Hayes.
The real-time refinement calculus: A foundation for
machine-independent real-time programming.
In J. Esparza and C. Lakos, editors, Proceedings 23rd
International Conference on the Application and Theory of Petri Nets, volume
2360 of Lecture Notes in Computer Science, pages 44-58. Springer,
2002.
Invited keynote paper.
[ bib ]
The real-time refinement calculus is an extension of the standard refinement calculus in which programs are developed from a pre-condition 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.
|
| [40] |
I. J. Hayes.
Reasoning about timeouts.
In Eerke A. Boiten and Bernhard Möller, editors, Proc. Mathematics of Program Construction, volume 2386 of Lecture Notes in
Computer Science, pages 94-116. Springer, 2002.
[ bib |
DOI ]
In real-time programming a timeout mechanism allows exceptional behaviour, such as a lack of response, to be handled effectively, while not overly affecting the programming for the normal case. For example, in a pump controller if the water level has gone below the minimum level and the pump is on and hence pumping in more water, then the water level should rise above the minimum level within a specified time. If not, there is a fault in the system and it should be shut down and an alarm raised. Such a situation can be handled by normal case code that determines when the level has risen above the minimum, plus a timeout case handling the situation when the specified time to reach the minimum has passed.
|
| [41] | R. Colvin, I. J. Hayes, D. Hemer, and P. A. Strooper. Translating refined logic programs to Mercury. In M. Oudshoorn, editor, Proceedings 25th Australasian Computer Science Conference (ACSC 2002), volume 4 of Conferences in Research and Practice in Information Technology, pages 33-40. Australian Computer Society, 2002. [ bib ] |
| [42] |
D. Hemer, R. Colvin, I. Hayes, and P. Strooper.
Don't care non-determinism in logic program refinement.
In J. Harland, editor, Proceedings of Computing: the
Australasian Theory Symposium (CATS 2002), volume 61 of Electronic
Notes in Theoretical Computer Science (ENTCS), pages 1-21. Elsevier
Science, 2002.
[ bib ]
The refinement calculus for logic programs consists of a wide-spectrum language, a semantics for the language and a notion of refinement that can be used to develop programs from specifications. The wide-spectrum language includes many of the concepts found in logic programs, including sequential composition, existential quantification, disjunction, procedures and recursion. A number of non-implementable constructs, such as universal quantification, parallel conjunction, assumptions and specifications, are also included. The semantics are defined in terms of executions, describing the effect of the program constructs on the state of the program. A notion of refinement is defined, where one program refines another if it terminates more often and returns the same set of answers.
|
| [43] |
I. J. Hayes.
Reasoning about real-time repetitions: Terminating and
nonterminating.
Science of Computer Programming, 43(2-3):161-192, 2002.
[ bib |
http |
.pdf ]
It is common for a real-time system to contain a nonterminating process monitoring an input and controlling an output. Hence a real-time program development method needs to support nonterminating repetitions. In this paper we develop a general proof rule for reasoning about possibly nonterminating repetitions. The rule makes use of a Floyd-Hoare-style loop invariant that is maintained by each iteration of the repetition, a Jones-style relation between the pre- and post-states on each iteration, and a deadline specifying an upper bound on the starting time of each iteration. The general rule is proved correct with respect to a predicative semantics. Keywords: Real-time refinement; nonterminating repetitions. |
| [44] |
I. J. Hayes, C. J. Fidge, and K. Lermer.
Semantic characterisation of dead control-flow paths.
IEE Proceedings-Software, 148(6):175-186, December 2001.
[ bib |
.pdf ]
Many program verification, testing and performance prediction techniques rely on analysis of statically-identified control-flow paths. However, some such paths may be `dead' because they can never be followed at run time, and should therefore be excluded from analysis. It is shown how the formal semantics of those statements comprising a path provides a sound theoretical foundation for identification of dead paths.
|
| [45] |
D. Hemer, I. Hayes, and P. Strooper.
Refinement calculus for logic programming in Isabelle/HOL.
In R. Boulton and P. Jackson, editors, Theorem Proving in Higher
Order Logics, 14th International Conference, TPHOLs 2001, volume 2152 of
Lecture Notes in Computer Science, pages 249-264. Springer, 2001.
[ bib ]
This paper describes a deep embedding of a refinement calculus for logic programs in Isabelle/HOL. It extends a previous tool with support for procedures and recursion. The tool supports refinement in context, and a number of window-inference tactics that ease the burden on the user. In this paper, we also discuss the insights gained into the suitability of different logics for embedding refinement calculii (applicable to both declarative and imperative paradigms). In particular, we discuss the richness of the language, choice between typed and untyped logics, automated proof support, support for user-defined tactics, and representation of program states. Keywords: Refinement, logic programming, theorem provers |
| [46] |
R. Colvin, I. J. Hayes, and P. Strooper.
A technique for modular logic program refinement.
In Kung-Kiu Lau, editor, Logic-based Program Synthesis and
Transformation (LOPSTR 2000) Selected Papers, volume 2402 of Lecture
Notes in Computer Science, pages 38-56. Springer, 2001.
[ bib |
DOI ]
A refinement calculus provides a method for transforming specifications to executable code, maintaining the correctness of the code with respect to its specification. Modules allow one to group together data types with sets of procedures that manipulate the data types. In this paper we develop a technique for refining a module to one that uses a more efficient representation of the data type. The technique places restrictions on the way procedures in the module use the data type, and on the way a program uses the module. The restrictions allow a more efficient implementation to be developed.
|
| [47] |
I. J. Hayes and M. Utting.
A sequential real-time refinement calculus.
Acta Informatica, 37(6):385-448, 2001.
[ bib |
.pdf ]
We present a comprehensive refinement calculus for the development of sequential, real-time programs from real-time specifications. A specification may include not only execution time limits, but also requirements on the behaviour of outputs over the duration of the execution of the program. Keywords: Refinement calculus; machine-independent; real-time specification; real-time refinement; real-time programming; deadline command; timing constraint analysis; time-invariant properties. |
| [48] | J. Shield, I. J. Hayes, and D. A. Carrington. Using theory interpretation to mechanise the reals in a theorem prover. In C. J. Fidge, editor, Computing: The Australian Theory Symposium (CATS), volume 42 of Electronic Notes in Theoretical Computer Science, pages 266-281. Elsevier Science, 2001. URL: www.elsevier.nl/locate/entcs. [ bib ] |
| [49] |
I. J. Hayes, R. Nickson, P. Strooper, and R. Colvin.
A declarative semantics for logic program refinement.
Technical Report 00-30, Software Verification Research Centre, The
University of Queensland, Brisbane 4072, Australia, November 2000.
[ bib ]
The refinement calculus provides a framework for the stepwise development of imperative programs from specifications. This paper presents a semantics for 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 specifications constructs (general predicates and assumptions) and universal quantification. A semantics is defined for this wide-spectrum language based on executions, which are partial functions from states to states, where a state is represented as a set of bindings. This execution 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 a refinement law for introducing recursive procedures is presented. Keywords: Logic programming, refinement. |
| [50] |
I. J. Hayes.
Reasoning about real-time programs using idle-invariant assertions.
In J. S. Dong, J. He, and M. Purvis, editors, Proceedings 7th
Asia-Pacific Software Engineering Conference (APSEC 2000), pages 16-23.
IEEE Computer Society, 2000.
[ bib ]
We develop a set of laws for reasoning about real-time programs using assertions (preconditions and postconditions) in the style of Hoare. In the real-time context assertions may refer to the current time and to the value of external inputs, which are not under the direct control of the program and hence not guaranteed to be stable with respect to the passage of time (even if the program does not modify any of the variables under its control). Hence in order to reason about real-time programs, we make use of idle-invariant assertions: assertions that are invariant to just the passage of time.
|
| [51] | G. Smith and I. J. Hayes. Structuring real-time Object-Z specifications. In W. Grieskamp, T. Santen, and B. Stoddart, editors, IFM'00: Proceedings of the 2nd International Conference on Integrated Formal Methods, volume 1945 of Lecture Notes in Computer Science, pages 97-115. Springer, 2000. [ bib ] |
| [52] |
I. J. Hayes.
Real-time program refinement using auxiliary variables.
In M. Joseph, editor, Proc. Formal Techniques in Real-Time and
Fault-Tolerant Systems, volume 1926 of LNCS, pages 170-184. Springer,
2000.
[ bib ]
Real-time program development can be split into a machine-independent phase, that derives a machine-independent real-time program from a specification, and a machine-dependent phase, that checks that the compiled program will meet its deadlines when executed on the target machine.
|
| [53] |
R. Colvin, I. J. Hayes, and P. Strooper.
Modular logic program refinement.
In Kung-Kiu Lau, editor, Pre-Proceedings of the Tenth
International Workshop on Logic-based Program Synthesis and Transformation
(LOPSTR 2000), number UMCS-00-6-1 in Technical Report, pages 1-10.
Department of Computer Science, Manchester University, 2000.
Extended abstract.
[ bib ]
A refinement calculus provides a method for transforming specifications to executable code, maintaining the correctness of the code with respect to its specification. Modules allow one to group together data types with sets of procedures that manipulate the data types. In this paper we develop a technique for refining a module to one that uses a more efficient representation of the data type. The technique places restrictions on the way procedures in the module use the data type, and on the way a program uses the module. The restrictions allow a more efficient implementation to be developed.
|
| [54] |
I. J. Hayes.
Reasoning about non-terminating loops using deadline commands.
In R. Backhouse and J. N. Oliveira, editors, Proc. Mathematics
of Program Construction, volume 1837 of Lecture Notes in Computer
Science, pages 60-79. Springer, 2000.
This paper is superceded by [43].
[ bib ]
It is common for a real-time process to consist of a nonterminating loop monitoring an input and controlling an output. Hence a real-time program development method needs to support nonterminating loops. Earlier work on real-time program development has produced a real-time refinement calculus that makes use of a novel deadline command which allows timing constraints to be embedded in real-time programs. The addition of the deadline command to the real-time programming language gives the significant advantage of providing a real-time programming language that is machine independent. This allows a more abstract approach to the program development process.
|
| [55] |
R. Colvin, I. J. Hayes, and P. Strooper.
Refining logic programs using types.
In Jenny Edwards, editor, Australasian Computer Science
Conference (ACSC 2000), pages 43-50. IEEE Computer Society, 2000.
[ bib ]
The logic programming refinement calculus is a method for transforming specifications to executable code, maintaining the correctness of the code with respect to its specification. In this paper we show how types can be handled in the logic programming refinement calculus. Types of variables are necessary for a complete specification of a procedure, and typing information can guide the refinement of a procedure specification to code. As an application of this framework, we show how dynamic type-checks can be formally eliminated from a sample program.
|
| [56] | C. J. Fidge, I. J. Hayes, and G. Watson. The deadline command. IEE Proceedings-Software, 146(2):104-111, April 1999. [ bib | .ps ] |
| [57] | C. J. Fidge, I. J. Hayes, B. P. Mahony, and A. K. Wabenhorst. Real-time specification and reasoning using maximal intervals. In W. C. H. Cheng and A. S. M. Sajeev, editors, PART'99: Proceedings of the 6th Australasian Conference on Parallel and Real-Time Systems, pages 344-354. Springer, 1999. [ bib ] |
| [58] | G. Smith and I. J. Hayes. Towards real-time Object-Z. In Keijiro Araki, Andy Galloway, and Kenji Taguchi, editors, IFM'99: Proceedings of the 1st International Conference on Integrated Formal Methods, pages 49-65. Springer, 1999. [ bib ] |
| [59] | I. J. Hayes and C. B. Jones. Specifications are not (necessarily) executable. In J. P. Bowen and M. G. Hinchey, editors, High-Integrity System Specification and Design, pages 563-581. Springer, 1999. (Previously published in IEE/BCS Software Engineering Journal, Vol. 4, No. 6, 330-338, November, 1989). [ bib ] |
| [60] | C. J. Fidge, I. J. Hayes, and B. P. Mahony. Defining differentiation and integration in Z. In J. Staples, M. G. Hinchey, and Shaoying Liu, editors, Proceedings Second International Conference on Formal Engineering Methods (ICFEM'98), pages 64-73. IEEE Computer Society, 1998. [ bib ] |
| [61] |
I. J. Hayes.
Separating timing and calculation in real-time refinement.
In J. Grundy, M. Schwenke, and T. Vickers, editors, Int. Refinement Workshop and Formal Methods Pacific 1998, pages 1-16. Springer,
1998.
[ bib |
.pdf ]
We consider the specification and refinement of sequential real-time programs. Our real-time specifications describe the allowable behaviours of an implementation in terms of the values of variables over time. Hence within a specification the values of the variables and the times at which they have those values are intertwined. However, in a real-time program some commands are concerned with calculating the right outputs, while other commands, such as delays and deadlines, are concerned with making sure the outputs appear at the right time. During the refinement process we would like to decompose the overall problem into those aspects dealing with time and those that are purely calculation. We need refinement rules that allow us to separate these concerns. Further, given a component that is only concerned with calculation, the complexities of the real-time calculus that deal with timing behaviour are an unnecessary burden. Such calculational components can be developed more straightforwardly in the standard refinement calculus. We would like to allow the use of the untimed calculus for the development of such components. To do that we need to embed the untimed calculus within the real-time calculus.
|
| [62] | L. P. Wildman and I. J. Hayes. Supporting contexts in the sequential real-time refinement calculus. In J. Grundy, M. Schwenke, and T. Vickers, editors, International Refinement Workshop and Formal Methods Pacific 1998, pages 352-369. Springer, 1998. [ bib ] |
| [63] |
R. Colvin, I. J. Hayes, and P. Strooper.
Data refining logic programs.
In J. Grundy, M. Schwenke, and T. Vickers, editors,
International Refinement Workshop and Formal Methods Pacific 1998, Discrete
Mathematics and Theoretical Computer Science, pages 100-116. Springer, 1998.
[ bib ]
A refinement calculus provides a method for transforming specifications to executable code, maintaining the correctness of the code with respect to its specification. One aspect of refinement is transforming the representation of data in a specification. This could be performed for efficiency reasons, or to change an abstract specification type into a data type that is in the target implementation language. This paper looks at data refinement in the refinement calculus for logic programs. Three cases for data refinement in the logic calculus are examined, and the process for each is described. The three cases are illustrated by a running example.
|
| [64] | D. Carrington, I. Hayes, R. Nickson, G. Watson, and J. Welsh. A program refinement tool. Formal Aspects of Computing, 10(2):97-124, 1998. [ bib | .ps ] |
| [65] | I. J. Hayes. Expressive power of specification languages. Formal Aspects of Computing, 10(2):187-192, 1998. [ bib ] |
| [66] | C. J. Fidge, I. J. Hayes, A. P. Martin, and A. K. Wabenhorst. A set-theoretic model for real-time specification and reasoning. In J. Jeuring, editor, Mathematics of Program Construction (MPC'98), volume 1422 of Lecture Notes in Computer Science, pages 188-206. Springer, 1998. [ bib ] |
| [67] | I. J. Hayes and M. Utting. Deadlines are termination. In D. Gries and W.-P. de Roever, editors, IFIP TC2/WG2.2, 2.3 International Conference on Programming Concepts and Methods (PROCOMET'98), pages 186-204. Chapman and Hall, 1998. [ bib | .pdf ] |
| [68] | S. Grundon, I. J. Hayes, and C. J. Fidge. Timing constraint analysis. In C. McDonald, editor, Computer Science '98: Proc. 21st Australasian Computer Sci. Conf. (ACSC'98), pages 575-586. Springer, 1998. [ bib ] |
| [69] | R. Colvin, I. J. Hayes, R. Nickson, and P. A. Strooper. A tool for logic program refinement. In D. J. Duke and A. S. Evans, editors, Second BCS-FACS Northern Formal Methods Workshop (NFMW'97), Electronic Workshops in Computing. Springer, 1997. [ bib ] |
| [70] |
P. G. Bancroft and I. J. Hayes.
Type extension and refinement.
In L. Groves and S. Reeves, editors, Formal Methods Pacific
(FMP'97), pages 23-39. Springer, 1997.
[ bib ]
This paper extends the methods of the refinement calculus to allow the derivation of certain kinds of Oberon-like programs. The use of records, pointers, opaque types and type extension distinguishes the work from previous examples. A case study for a queue abstract data type illustrates a method for the derivation of a generic, linked implementation. Firstly, a sequence of integers is refined to a sequence of integer records with link pointers. The the sequence of records is refined to a generic linked list that is close to Oberon code. Pointers are facilitated by declaring an explicit local data store for each queue variable. The advantage of Oberon over Modula-2 is the ability to separate the final code into two modules - a generic queue that maintains the linked data structure invariant and an integer instantiation of the queue, using type extension. This separation of concerns (isolation of the linked data structure properties) is the main benefit of the approach.
|
| [71] |
R. Nickson and I. Hayes.
Supporting contexts in program refinement.
Science of Computer Programming, 29(3):279-302, 1997.
[ bib ]
A program can be refined either by transforming the whole program or by refining one of its components. The refinement of a component is, for the main part, independent of the remainder of the program. However, refinement of a component can depend on the context of the component for information about the variables that are in scope and what their types are. The refinement can also take advantage of additional information, such as any precondition the component can assume. The aim of this paper is to introduce a technique, which we call program window inference, to handle such contextual information during derivations in the refinement calculus. The idea is borrowed from a technique, called window inference, for handling context in theorem proving. Window inference is the primary proof paradigm of the Ergo proof editor. This tool has been extended to mechanize refinement using program window inference.
|
| [72] | I. J. Hayes and M. Utting. Coercing real-time refinement: A transmitter. In D. J. Duke and A. S. Evans, editors, BCS-FACS Northern Formal Methods Workshop (NFMW'96), Electronic Workshops in Computing. Springer, 1997. [ bib | .pdf ] |
| [73] | I. Hayes, R. Nickson, and P. Strooper. Refining specifications to logic programs. In J. Gallagher, editor, Logic Program Synthesis and Transformation. Proc. of the 6th Int. Workshop, LOPSTR'96, Stockholm, Sweden, August 1996, volume 1207 of Lecture Notes in Computer Science, pages 1-19. Springer, 1997. [ bib ] |
| [74] | I. J. Hayes, editor. Proc. 5th Australasian Refinement Workshop. Software Verification Research Centre, The University of Queensland, April 1996. Unrefereed. [ bib | http ] |
| [75] | I. J. Hayes and P. A. Strooper. Refining specifications to logic programs. In I.J. Hayes, editor, Proc. 5th Australasian Refinement Workshop, pages 1-13. Software Verification Research Centre, The University of Queensland, April 1996. Unrefereed. [ bib | .html ] |
| [76] | C. J. Fidge, M. Utting, I. J. Hayes, and P. Kearney. The Quartz refinement method for real-time multi-tasking systems. In Fifth Australasian Refinement Workshop (ARW'96), April 1996. [ bib ] |
| [77] | D. A. Carrington, I. J. Hayes, R. Nickson, G. Watson, and J. Welsh. Structured presentation of refinements and proofs. In Kotagiri Ramamohanarao, editor, Proc. 19th Australasian Computer Science Conference (ACSC'96), volume 18(1) of Australian Computer Science Communications, pages 87-96, February 1996. [ bib ] |
| [78] | I. J. Hayes. Supporting module reuse in refinement. Science of Computer Programming, 27(2):175-184, 1996. [ bib ] |
| [79] | D. A. Carrington, I. J. Hayes, R. Nickson, G. Watson, and J. Welsh. A tool for developing correct programs by refinement. In He Jifeng, editor, Proc. BCS 7th Refinement Workshop, Bath, UK, Electronic Workshops in Computing, pages 1-17. Springer, 1996. [ bib ] |
| [80] | C. J. Fidge, M. Utting, P. Kearney, and I. J. Hayes. Integrating real-time scheduling theory and program refinement. In M.-C. Gaudel and J. Woodcock, editors, FME'96: Industrial Benefit and Advances in Formal Methods, volume 1051 of Lecture Notes in Computer Science, pages 327-346. Springer, 1996. [ bib ] |
| [81] | I. J. Hayes. Specification models. In Proc. 7th International Conference on Putting into Practice Methods and Tools for Information Systems Design, 10-12 October, 1995, Nantes, pages 1-10, October 1995. Invited keynote paper. [ bib ] |
| [82] | David Carrington, Ian Hayes, Ray Nickson, Geoffrey Watson, and Jim Welsh. Requirements for a program refinement engine. In Proc. of the 4th Australasian Refinement Workshop (ARW'95), pages 67-83. School of Computer Science and Engineering, University of New South Wales, April 1995. [ bib ] |
| [83] | Ray Nickson and Ian Hayes. Program window inference. In Proc. of the 4th Australasian Refinement Workshop (ARW'95), pages 43-65. School of Computer Science and Engineering, University of New South Wales, April 1995. Unrefereed. Also available as Technical Report UQ-SVRC-95-29, Software Verification Research Centre, University of Queensland. [ bib ] |
| [84] |
L. P. Wildman and I. J. Hayes.
Composing grammar transformations to construct a specification of a
parser.
In Ramamohanarao Kotagiri, editor, Proc. 18th Australasian
Computer Science Conference (ACSC'95), Glenelg, South Australia, Australian
Computer Science Communications, volume 17(1), pages 556-562, February
1995.
[ bib ]
As part of a project with the aim of scaling up formal methods, we have developed a library construct for the specification language Z. This paper reports on the result of using libraries to structure a specification of a relatively complicated parser for a language-based editor. The parser is complicated by the need to cope with multiple languages as well as tolerate errors in the input. Our goal in producing the specification of the parser has been to separate each of the major concepts on which the specification is based (eg, multiple languages and error-tolerance) into a separate library. To achieve the separation of concerns we have applied the novel technique of specifying each of the major concepts of the parser as grammar transformations. The full parser can then be specified by composing the separate transformations to give a grammar incorporating all the desired features.
|
| [85] | P. Bakker, D.A. Carrington, A. Goodchild, I.J. Hayes, H. Purchase, and P.A. Strooper. The communicating technologist: An educational challenge. In D. Budny and B. Herrick, editors, Frontiers in Education 25th Annual Conference, pages 4a4.1-4a4.4, Atlanta, Georgia, 1995. IEEE Press. [ bib ] |
| [86] | I. J. Hayes and J. W. Sanders. Specification by interface separation. Formal Aspects of Computing, 7(4):430-439, 1995. [ bib | .pdf ] |
| [87] | P. Bancroft and I. J. Hayes. A formal semantics for a language with type extension. In ZUM'95: The Z Formal Specification Notation, Proc. 9th International Conference of Z Users, Limerick, Ireland, September 7-9, 1995, volume 967 of Lecture Notes in Computer Science, pages 299-314. Springer, 1995. [ bib ] |
| [88] | I. J. Hayes and B. P. Mahony. Using units of measurement in formal specifications. Formal Aspects of Computing, 7(3):329-347, 1995. [ bib | .pdf ] |
| [89] | Report of the Computer Science Action Learning Group. Improving the quality of tutorial classes in computer science. Technical Report UQ-CS-322, Department of Computer Science, University of Queensland, 1995. [ bib ] |
| [90] | I. J. Hayes, C. B. Jones, and J. E. Nicholls. Understanding the differences between VDM and Z. ACM Software Engineering News, 19(3):75-81, July 1994. Unrefereed. Previously published in FACS Europe [95]. [ bib ] |
| [91] | B. P. Mahony, C. Millerchip, and I. J. Hayes. A boiler control system: Overview of a case study in timed refinement. In Diana Del Bel Belluz and Herbert C. Ratz, editors, Software Safety: Everybody's Business, Proceedings of the 1993 International Invitational Workshop on Design and Review of Software-Controlled Safety-Related Systems, Ottawa, pages 189-208. The Institute of Risk Research, 1994. [ bib ] |
| [92] | I. J. Hayes, C. B. Jones, and J. E. Nicholls. Understanding the differences between VDM and Z. Technical report UMCS-93-8-1, Department of Computer Science, University of Manchester, August 1993. [ bib | .ps ] |
| [93] | B. P. Mahony, C. Millerchip, and I. J. Hayes. A boiler control system: A case study in timed refinement. In Diana Del Bel Belluz, editor, Technical proceedings International Symposium on Design and Review of Software-Controlled Safety-Related Systems, Ottawa, June 1993. 50 pages. [ bib | .ps ] |
| [94] | P. Bancroft and I. J. Hayes. Refining a module with opaque types. In Gopal Gupta, George Mohay, and Rodney Topor, editors, Proceedings, 16th Australian Computer Science Conference, Brisbane, Australian Computer Science Communications, volume 15(1), pages 615-624, February 1993. [ bib ] |
| [95] | I. J. Hayes, C. B. Jones, and J. E. Nicholls. Understanding the differences between VDM and Z. FACS Europe, 1(1):7-30, 1993. Unrefereed. Also published in ACM Software Engineering News, 19(3):75-81, July 1994. [ bib ] |
| [96] | D. A. Carrington, D. Duke, I. J. Hayes, and J. Welsh. Deriving modular designs from formal specifications. In Int. Symp. on the Foundations of Software Engineering (SIGSOFT'93), pages 89-98. ACM, 1993. [ bib | .pdf ] |
| [97] | I. J. Hayes, editor. Specification Case Studies. Prentice Hall, second edition, 1993. [ bib | .pdf ] |
| [98] | I. J. Hayes. Examples of specification using mathematics. In I. J. Hayes, editor, Specification Case Studies, pages 2-13. Prentice Hall International, second edition, 1993. [ bib ] |
| [99] | I. J. Hayes. Block-structured symbol table. In I. J. Hayes, editor, Specification Case Studies, pages 14-30. Prentice Hall International, second edition, 1993. [ bib ] |
| [100] | I. J. Hayes. Flexitime specification. In I. J. Hayes, editor, Specification Case Studies, pages 134-138. Prentice Hall International, second edition, 1993. [ bib ] |
| [101] | I. J. Hayes. Applying formal specification to software development in industry. In I. J. Hayes, editor, Specification Case Studies, pages 181-201. Prentice Hall International, second edition, 1993. (Previously published in IEEE Transactions on Software Engineering [131]). [ bib ] |
| [102] | I. J. Hayes. CICS temporary storage. In I. J. Hayes, editor, Specification Case Studies, pages 226-237. Prentice Hall International, second edition, 1993. [ bib ] |
| [103] | I. J. Hayes. CICS message system. In I. J. Hayes, editor, Specification Case Studies, pages 238-243. Prentice Hall International, second edition, 1993. [ bib ] |
| [104] | I. J. Hayes and L. P. Wildman. Towards libraries for Z. In J. P. Bowen and J. E. Nicholls, editors, Z User Workshop: Proceedings of the Seventh Annual Z User Meeting, London, December 1992, Workshops in Computing, pages 37-51. Springer, 1993. [ bib ] |
| [105] | I. J. Hayes. Multi-relations in Z: A cross between multi-sets and binary relations. Acta Informatica, 29(1):33-62, February 1992. [ bib | .pdf ] |
| [106] | B. P. Mahony and I. J. Hayes. A case-study in timed refinement: A mine pump. IEEE Trans. on Software Engineering, 18(9):817-826, 1992. [ bib | .pdf ] |
| [107] | I. J. Hayes. VDM and Z: A comparative case study. Formal Aspects of Computing, 4(1):76-99, 1992. [ bib | .pdf ] |
| [108] | C. A. R. Hoare, I. J. Hayes, He Jifeng, C. Morgan, A. W. Roscoe, J. W. Sanders, I. H. Sørensen, J. M. Spivey, and B. A. Sufrin. Laws of programming. In Manfred Broy, editor, Programming and Mathematical Method, volume 88 of NATO ASI Series F: Computer and Systems Sciences, pages 95-122. Springer, 1992. [ bib ] |
| [109] | N. Ward and I. J. Hayes. Applications of angelic nondeterminism. In P. A. Bailes, editor, Proc. 6th Australian Software Engineering Conference (ASWEC91), pages 391-404. Australian Computer Society, July 1991. [ bib ] |
| [110] | B. P. Mahony and I. J. Hayes. Using continuous real functions to model timed histories. In P. A. Bailes, editor, Proc. 6th Australian Software Engineering Conf. (ASWEC91), pages 257-270. Australian Comp. Soc., 1991. [ bib | .pdf ] |
| [111] | B. P. Mahony and I. J. Hayes. A case study in timed refinement: A central heater. In Proc. BCS/FACS Fourth Refinement Workshop, Workshops in Computing, pages 138-149. Springer, January 1991. [ bib | .pdf ] |
| [112] | I. J. Hayes. Interpretations of Z schema operators. In Z User Workshop: Proceedings of the Fifth Annual Z User Meeting, Oxford, December 1990, Workshops in Computing, pages 12-26. Springer, 1991. [ bib ] |
| [113] | D. A. Carrington, I. J. Hayes, and J. Welsh. A syntax-directed editor for object-oriented specifications. In Proc. of Pacific TOOLS '90, pages 46-57, November 1990. [ bib ] |
| [114] | I. J. Hayes. Specifying physical limitations: A case study of an oscilloscope. Technical report 167, Department of Computer Science, University of Queensland, July 1990. [ bib | .ps ] |
| [115] | I. J. Hayes. Applying formal specification to software development in industry. In Richard H. Thayer and Merlin Dorfman, editors, System and Software Requirements Engineering, pages 594-603. IEEE Computer Society Press Tutorial, 1990. (Previously published in IEEE Transactions on Software Engineering [131]). [ bib ] |
| [116] | I. J. Hayes. A generalisation of bags in Z. In J. E. Nicholls, editor, Z User Workshop: Proceedings of the Fourth Annual Z User Meeting, Oxford, December 1989, Workshops in Computing, pages 113-127. Springer, 1990. [ bib ] |
| [117] | I. J. Hayes, M. Mowbray, and G. A. Rose. Signalling System No. 7: The network layer. In E. Brinksma, G. Scollo, and C. A. Vissers, editors, Protocol Specification, Testing and Verification, IX, pages 3-14. Elsevier Science Publishers B. V. (North-Holland), 1990. [ bib ] |
| [118] | I. J. Hayes and C. B. Jones. Specifications are not (necessarily) executable. IEE/BCS Software Engineering Journal, 4(6):330-338, November 1989. [ bib ] |
| [119] | I. J. Hayes, R. Neucom, and J. Welsh. An editor for Z specifications. In Advance papers CASE'89, pages 1-13, 1989. [ bib ] |
| [120] | R. Duke, I. J. Hayes, and G. A. Rose. Verification of a cyclic retransmission protocol. Technical Report UQ-CS-92, Department of Computer Science, The University of Queensland, July 1988. [ bib ] |
| [121] | I. J. Hayes, R. Neucom, and J. Welsh. An editor for Z specifications. Technical report, Department of Computer Science, University of Queensland, 1988. [ bib ] |
| [122] | R. Duke, I. J. Hayes, P. King, and G. A. Rose. Protocol specification and verification using Z. In IFIP Eighth International Workshop on Protocol Specification, Testing and Verification, pages 33-46. North-Holland, 1988. [ bib ] |
| [123] | C. A. R. Hoare, I. J. Hayes, He Jifeng, C. Morgan, A. W. Roscoe, J. W. Sanders, I. H. Sørensen, J. M. Spivey, and B. A. Sufrin. Laws of programming. Communications of the ACM, 30(8):672-686, August 1987. Corrigenda: CACM 30(9):770. [ bib ] |
| [124] | I. J. Hayes. Correctness of data representations. In Proc. 2nd Australian Software Engineering Conference (ASWEC-87), pages 75-86, Canberra, May 1987. IREE (Australia). [ bib ] |
| [125] | G. A. Rose, R. Duke, and I. J. Hayes. Specifying communications services and protocols. In Proc 2nd Australian Software Engineering Conference (ASWEC-87), pages 161-170, Canberra, May 1987. IREE (Australia). [ bib ] |
| [126] | I. J. Hayes, editor. Specification Case Studies. Prentice Hall International, 1987. [ bib ] |
| [127] | I. J. Hayes and K. A. Robinson. A Modula-2-based translator generator. Technical report 84, Department of Computer Science, University of Queensland, Brisbane, Australia, 1987. [ bib ] |
| [128] | I. J. Hayes. Using mathematics to specify software. In Proc. 1st Australian Software Engineering Conference (ASWEC-86), pages 67-71, Canberra, May 1986. Institution of Engineers, Australia. At the 10th ASWEC Conference in 1997 this paper was given the award of Most Influential Paper of ASWEC'86, the first ASWEC Conference. [ bib | .pdf ] |
| [129] | I. J. Hayes. Weakest pre-specifications: weakest pre-conditions for procedures. In Proc. 9th Australian Computer Science Conference, pages 299-308, Canberra, January 1986. [ bib ] |
| [130] | I. J. Hayes. Specification directed module testing. IEEE Transactions on Software Engineering, SE-12(1):124-133, January 1986. [ bib | .pdf ] |
| [131] | I. J. Hayes. Applying formal specification to software development in industry. IEEE Transactions on Software Engineering, SE-11(2):169-178, February 1985. [ bib | .pdf ] |
| [132] | I. J. Hayes. Computer Architecture: The hardware/software interface. Ph. D. thesis, Department of Computer Science, University of New South Wales, Sydney, Australia, 1983. [ bib ] |
| [133] | I. J. Hayes and K. A. Robinson. A tutorial on Llama: A Pascal-based translator generator. Technical report, Department of Computer Science, University of New South Wales, Sydney, Australia, 1982. [ bib ] |
This file has been generated by bibtex2html 1.88.
Last updated: