From Programs to Z Specifications

  • K. Lano
  • P. T. Breuer
Conference paper
Part of the Workshops in Computing book series (WORKSHOPS COMP.)


Universal techniques for transforming code from a typical procedural language to Z-like specifications will be discussed first; the latter make good starting points for the post hoc validation of programs which lack formal documentation. We prove properties of classes of programs, before we move on to discuss the further set of techniques we use to prove properties of individual programs. In the foundational work, we provide a concise algebraic language and axioms based on the simple mathematical theory of monads, and show that it is sufficiently expressive. We then give practical validation techniques which extend these transformations and provide several examples of such heuristically driven program validations.


Proof Obligation Process Instance Message Queue Weak Precondition Predicate Transformer 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Dijkstra E. W. A Discipline Of Programming Prentice Hall 1968.Google Scholar
  2. [2]
    Ward M. From Assembler To Z Durham University 1989.Google Scholar
  3. [3]
    UNIFORM: A Language Geared to System Description and Transformation, REDO (ESPRIT 2 Project P2487) document TN-NIL-1002.Google Scholar
  4. [4]
    An Axiomatic Semantics for UNIFORM. REDO Document TN-PRG-1011Google Scholar
  5. [5]
    Kahn, G. The Semantics of a Simple Language for Parallel Programming Information Processing 74, North Holland Amsterdam pp. 471–475 (1974).Google Scholar
  6. [6]
    Josephs, M. The Data Refinement Calculator for Z Specifications Inf. Proc. Lett., Vol 27, Nol, pp 29–33, 1988.Google Scholar
  7. [7]
    Bowen J., Gimson R., Topp-Jorgensen S. Specifying System Implementations in Z Technical monograph PRG-63. 1988.Google Scholar
  8. [8]
    Morgan C. et al. On the Refinement Calculus. PRG-70 Technical Monograph. 1988.Google Scholar
  9. [9]
    Gries D. The Science of Programming Springer-Verlag 1981.Google Scholar
  10. [10]
    Stark, E. W. On The Relations Computable by a Class of Concurrent Automata Dept. Of Computer Science, State University of New York. 1989.Google Scholar
  11. [11]
    Morgan C.C. Programming From Specifications Prentice Hall International Series in Computer Science, Prentice Hall International 1990.Google Scholar
  12. [12]
    Good D. Mechanical Proofs About Computer Programs Artificial Intelligence and Software Engineering, Eds Rich C., Walters C. Morgan Korfmann Ltd 1984.Google Scholar
  13. [13]
    Milner, R. Using Algebra for Concurrency: Some Approaches Springer-Verlag LNCS 207 Analysis of Concurrent Systems.Google Scholar
  14. [14]
    Dershowitz N. Program Abstraction and Instanciation ACM Transactions on Programming Languages and Systems, Vol 7, No. 3, July 1985, pp 446–477.Google Scholar

Copyright information

© Springer-Verlag London 1990

Authors and Affiliations

  • K. Lano
    • 1
  • P. T. Breuer
    • 1
  1. 1.Programming Research GroupOxford University Computing LaboratoryUK

Personalised recommendations