Z notation
Formal specification language used for describing and modelling computing systems
From Wikipedia, the free encyclopedia
The Z notation /ˈzɛd/ is a formal specification language used for describing and modelling computing systems.[1] It is targeted at the clear specification of computer programs and computer-based systems in general.

History
In 1974, Jean-Raymond Abrial published "Data Semantics".[2] He used a notation that would later be taught in the University of Grenoble until the end of the 1980s.
While at EDF (Électricité de France), working with Bertrand Meyer, Abrial also worked on developing Z.[3] Z was originally proposed by Abrial in 1977 with the help of Steve Schuman and Bertrand Meyer.[4] The Z notation is used in the 1980 book Méthodes de programmation.[5]
Z was developed further at the Programming Research Group at Oxford University, where Abrial worked in the early 1980s, having arrived at Oxford in September 1979.[6] Later, Z schema boxes were added by Carroll Morgan for the structuring of larger specifications.[7] A defacto standard for Z was produced as a book by Mike Spivey in 1989 (2nd edition, 1992).[8]
Abrial has said that Z is so named "Because it is the ultimate language!"[9] although the name "Zermelo" is also associated with the Z notation through its use of Zermelo–Fraenkel set theory.
Usage and notation
Z is based on the standard mathematical notation used in axiomatic set theory, lambda calculus, and first-order predicate logic.[8] All expressions in Z notation are typed, thereby avoiding some of the paradoxes of naive set theory. Z contains a standardized catalogue (called the mathematical toolkit) of commonly used mathematical functions and predicates, defined using Z itself. It is augmented with Z schema boxes, which can be combined using their own operators, based on standard logical operators, and also by including schemas within other schemas.[7] This allows Z specifications to be built up into large specifications in a convenient manner.
Z User Group
In 1992, the Z User Group (ZUG) was established to oversee activities concerning the Z notation, especially meetings and conferences.[10] ZUG organized regular Z User Meetings (ZUM), later the International Conference of Z Users, then combined with the B-Method as the International Conference of B and Z Users.
Standards
ISO completed a Z standardization effort in 2002. This standard[11] and a technical corrigendum[12] are available from ISO free:
- the standard is publicly available[11] freely from ISO ITTF and, separately, available for purchase[11] from the ISO site;
- the technical corrigendum is available[12] freely from ISO.
Because Z notation uses many non-ASCII symbols, the specification includes suggestions for rendering the Z notation symbols in ASCII and in LaTeX. There are also Unicode encodings for all standard Z symbols.[13]
Award
In 1992, Oxford University Computing Laboratory and IBM were jointly awarded The Queen's Award for Technological Achievement "for the development of ... the Z notation, and its application in the IBM Customer Information Control System (CICS) product."[14]
Further reading
- Spivey, John Michael (1992). The Z Notation: A reference manual. International Series in Computer Science (2nd ed.). Prentice Hall. Archived from the original on 8 December 2019. Retrieved 24 March 2020.
- Davies, Jim; Woodcock, Jim (1996). Using Z: Specification, Refinement and Proof. International Series in Computer Science. Prentice Hall. ISBN 0-13-948472-8. Archived from the original on 5 April 2007. Retrieved 22 March 2006.
- Bowen, Jonathan (1996). Formal Specification and Documentation using Z: A Case Study Approach. International Thomson Computer Press, International Thomson Publishing. ISBN 1-85032-230-9.
- Jacky, Jonathan (1997). The Way of Z: Practical Programming with Formal Methods. Cambridge University Press. ISBN 0-521-55976-6.
- Ince, D. C. (1993). An Introduction to Discrete Mathematics, Formal System Specification, and Z. Oxford University Press. doi:10.1093/oso/9780198538370.001.0001. ISBN 978-0198538370.
See also
- Z User Group (ZUG)
- Community Z Tools (CZT) project
- Other formal methods (and languages using formal specifications):
- Fastest, a model-based testing tool for the Z notation
- Unified Modeling Language, a software system design modeling tool by Object Management Group