Z notation
The Z notation /ˈzɛd/ is a formal specification language used for describing and modelling computing systems. It is targeted at the clear specification of computer programs and computerbased systems in general.
Contents
History
In 1974, JeanRaymond Abrial published "Data Semantics".^{1} 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), Abrial wrote internal notes on Z.^{citation needed} The Z notation is used in the 1980 book Méthodes de programmation.^{2}
Z was originally proposed by Abrial in 1977 with the help of Steve Schuman and Bertrand Meyer.^{3} It 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.
Abrial answers the question "Why Z?" with "Because it is the ultimate language!"^{citation needed}^{clarification needed}
Usage and notation
Z is based on the standard mathematical notation used in axiomatic set theory, lambda calculus, and firstorder predicate logic. All expressions in Z notation are typed, thereby avoiding some of the paradoxes of naive set theory. Z contains a standardized catalog (called the mathematical toolkit) of commonly used mathematical functions and predicates.
Although Z notation (just like the APL language, long before it) uses many nonASCII symbols, the specification includes suggestions for rendering the Z notation symbols in ASCII and in LaTeX.
Standards
ISO completed a Z standardization effort in 2002. This standard^{4} and a technical corrigendum^{5} are available from ISO for free:
 the standard is publicly available^{4} from the ISO ITTF site free of charge and, separately, available for purchase^{4} from the ISO site;
 the technical corrigendum is available^{5} from the ISO site free of charge.
Tools
 Espino, Luis, ERZ: Tool for to transform ER model to Z Notation equivalent.
 Community Z Tools (CZT) (project), Source forge.
 Z Word tools (project), Source forge for developing and checking Z specifications in Microsoft Word.
 Spivey, Michael ‘Mike’, Fuzz TypeChecker for Z.
 Z/Eves — A proof checker for the Z notation (German site but all manuals in English)
 Z/EVES Documentation, papers, and manuals on Z/EVES
 ZETA opensource system for development software specifications in Z
 HOLZ opensource proof environment for Z in Isabelle/HOL
 CADiZ, a set of free software tools that assist use of Z notation
 ProofPower, a suite of opensource tools supporting specification and proof in HOL and in the Z notation
 zvime zvimes Alternate source of Vimes.
 ProB is an animator and model checker originally written for the BMethod that provides also support for Z specifications ("ProZ") that conform to the Fuzz type checker.
See also
 Z User Group (ZUG)
 Community Z Tools (CZT) project
 Other formal methods (and languages using formal specifications):
 Z++ and ObjectZ : object extensions for the Z notation
 Abstract Machine Notation (AMN), used in BMethod
 Alloy, a specification language inspired by Z notation and implementing the principles of Object Constraint Language (OCL).
 Fastest is a modelbased testing tool for the Z notation.
References
 ^ Abrial, JeanRaymond, "Data Semantics", in Klimbie; Koffeman, Data Base Management, NorthHolland, pp. 1–59.
 ^ Meyer, Bertrand; Baudoin, Claude (1980), Méthodes de programmation (in French), Eyrolles.
 ^ Abrial, JeanRaymond; Schuman, Stephen A; Meyer, Bertrand (1980), "A Specification Language", in Macnaghten, AM; McKeag, RM, On the Construction of Programs, Cambridge University Press, ISBN 052123090X (describes early version of the language).
 ^ ^{a} ^{b} ^{c} "ISO/IEC 13568:2002". Information Technology — Z Formal Specification Notation — Syntax, Type System and Semantics (Zipped PDF). ISO. 20020701. 196 pp.
 ^ ^{a} ^{b} "ISO/IEC 13568:2002/Cor.1:2007". Information Technology — Z Formal Specification Notation — Syntax, Type System and Semantics — Technical corrigendum 1 (PDF). ISO. 20070715. 12 pp.
Further reading
 Spivey, John Michael (1992). The Z Notation: A reference manual. International Series in Computer Science (2nd ed.). Prentice Hall.
 Davies, Jim; Woodcock, Jim (1996). Using Z: Specification, Refinement and Proof. International Series in Computer Science. Prentice Hall. ISBN 0139484728.
 Bowen, Jonathan (1996). Formal Specification and Documentation using Z: A Case Study Approach. International Thomson Computer Press. ISBN 1850322309.
 Jacky, Jonathan (1997). The Way of Z: Practical Programming with Formal Methods. Cambridge University Press. ISBN 0521559766.
External links
 Bowen, Jonathan, "The Z notation", The World Wide Web Virtual Library, Wikia.
 Toyn, Ian, Z Specification proposals, UK: York.
 WSDL 2.0, W3C, a specification containing Z notation assertions and explanation
