Z notation
Encyclopedia
The Z notation named after Zermelo–Fraenkel set theory
, is a formal
specification language
used for describing and modelling computing systems. It is targeted at the clear specification of computer program
s and computer-based systems in general.
published "Data Semantics". 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. The Z notation is used in the 1980 book Méthodes de programmation.
Z was originally proposed by Abrial in 1977 with the help of Steve Schuman and Bertrand Meyer. 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!"
, and first-order 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 non-ASCII
symbols, the specification includes suggestions for rendering the Z notation symbols in ASCII
and in LaTeX
.
completed a Z standardization effort in 2002. This standard can be obtained directly from ISO. The standard and a technical corrigendum are available to download free of charge from the ISO site.
Zermelo–Fraenkel set theory
In mathematics, Zermelo–Fraenkel set theory with the axiom of choice, named after mathematicians Ernst Zermelo and Abraham Fraenkel and commonly abbreviated ZFC, is one of several axiomatic systems that were proposed in the early twentieth century to formulate a theory of sets without the paradoxes...
, is a formal
Formal specification
In computer science, a formal specification is a mathematical description of software or hardware that may be used to develop an implementation. It describes what the system should do, not how the system should do it...
specification language
Specification language
A specification language is a formal language used in computer science.Unlike most programming languages, which are directly executable formal languages used to implement a system, specification languages are used during systems analysis, requirements analysis and systems design.Specification...
used for describing and modelling computing systems. It is targeted at the clear specification of computer program
Computer program
A computer program is a sequence of instructions written to perform a specified task with a computer. A computer requires programs to function, typically executing the program's instructions in a central processor. The program has an executable form that the computer can use directly to execute...
s and computer-based systems in general.
History
In 1974, Jean-Raymond AbrialJean-Raymond Abrial
Jean-Raymond Abrial is a French computer scientist and inventor of the Z and B formal methods.J.-R. Abrial is the father of the Z notation , during his time at the Programming Research Group within the Oxford University Computing Laboratory, and later the B-Method , two leading...
published "Data Semantics". He used a notation that would later be taught in the University of Grenoble
University of Grenoble
University of Grenoble or Grenoble University was a university in Grenoble, France until 1970, when it was split into several different institutions:...
until the end of the 1980s. While at EDF (Électricité de France
Électricité de France
Électricité de France S.A. is the second largest French utility company. Headquartered in Paris, France, with €65.2 billion in revenues in 2010, EDF operates a diverse portfolio of 120,000+ megawatts of generation capacity in Europe, Latin America, Asia, the Middle East and Africa.EDF is one of...
), Abrial wrote internal notes on Z. The Z notation is used in the 1980 book Méthodes de programmation.
Z was originally proposed by Abrial in 1977 with the help of Steve Schuman and Bertrand Meyer. It was developed further at the Programming Research Group
Programming Research Group
The Programming Research Group is part of the Oxford University Computing Laboratory . It was founded by Christopher Strachey in 1965 and after his death, C.A.R. Hoare, FRS took over the leadership in 1977...
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!"
Usage and notation
Z is based on the standard mathematical notation used in axiomatic set theory, lambda calculusLambda calculus
In mathematical logic and computer science, lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion. The portion of lambda calculus relevant to computation is now called the untyped lambda calculus...
, and first-order 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 non-ASCII
ASCII
The American Standard Code for Information Interchange is a character-encoding scheme based on the ordering of the English alphabet. ASCII codes represent text in computers, communications equipment, and other devices that use text...
symbols, the specification includes suggestions for rendering the Z notation symbols in ASCII
ASCII
The American Standard Code for Information Interchange is a character-encoding scheme based on the ordering of the English alphabet. ASCII codes represent text in computers, communications equipment, and other devices that use text...
and in LaTeX
LaTeX
LaTeX is a document markup language and document preparation system for the TeX typesetting program. Within the typesetting system, its name is styled as . The term LaTeX refers only to the language in which documents are written, not to the editor used to write those documents. In order to...
.
Standards
The ISOInternational Organization for Standardization
The International Organization for Standardization , widely known as ISO, is an international standard-setting body composed of representatives from various national standards organizations. Founded on February 23, 1947, the organization promulgates worldwide proprietary, industrial and commercial...
completed a Z standardization effort in 2002. This standard can be obtained directly from ISO. The standard and a technical corrigendum are available to download free of charge from the ISO site.
Tools
- ERZ: Tool for transform ER model to Z Notation equivalent, by Luis Espino
- Community Z Tools (CZT) project
- Tools for developing and checking Z specifications in Microsoft WordMicrosoft WordMicrosoft Word is a word processor designed by Microsoft. It was first released in 1983 under the name Multi-Tool Word for Xenix systems. Subsequent versions were later written for several other platforms including IBM PCs running DOS , the Apple Macintosh , the AT&T Unix PC , Atari ST , SCO UNIX,...
- Mike Spivey's Fuzz Type-Checker 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 open-source system for development software specifications in Z
- HOL-Z open-source proof environment for Z in Isabelle/HOL
- CADiZ, a set of free software tools that assist use of Z notation
- ProofPower, a suite of open-sourceOpen-source softwareOpen-source software is computer software that is available in source code form: the source code and certain other rights normally reserved for copyright holders are provided under a software license that permits users to study, change, improve and at times also to distribute the software.Open...
tools supporting specification and proof in HOL and in the Z notation
See also
- Z User GroupZ User GroupThe Z User Group exists to promote use and development of the Z notation, a formal specification language for the description of and reasoning about computer-based systems...
(ZUG) - Community Z ToolsCommunity Z ToolsThe project is a SourceForge project to build a set of tools for the Z notation, a formal method useful in software engineering. Tools include support for editing, typechecking and animating Z specifications. There is some support for extensions such as Object-Z and TCOZ. The tools are built...
(CZT) project - Other formal methodsFormal methodsIn computer science and software engineering, formal methods are a particular kind of mathematically-based techniques for the specification, development and verification of software and hardware systems...
(and languages using formal specificationFormal specificationIn computer science, a formal specification is a mathematical description of software or hardware that may be used to develop an implementation. It describes what the system should do, not how the system should do it...
s) :- Z++Z++Z++ was an object-oriented extension to the Z specification language.Z++ is an object-oriented extension to the Z specification language, allowing for the definition of classes, and the relation of classes through inheritance, association or aggregation....
and Object-ZObject-ZObject-Z is an object-oriented extension to the Z notation developed at the University of Queensland, Australia.Object-Z extends Z by the addition of language constructs resembling the object-oriented paradigm, most notably, classes...
: object extensions for the Z notation - Abstract Machine NotationAbstract Machine NotationThe abstract machine notation is a specification language and programming language for specifying abstract machines in the B method, based on the mathematical theory of generalised substitutions....
(AMN), used in B-MethodB-MethodThe B method is method of software development based on B, a tool-supported formal method based around an abstract machine notation, used in the development of computer software. It was originally developed by Jean-Raymond Abrial in France and the UK. B is related to the Z notation and supports... - AlloyAlloy (specification language)In computer science and software engineering, Alloy is a declarative specification language for expressing complex structural constraints and behavior in a software system. Alloy provides a simple structural modeling tool based on first-order logic...
, a specification language inspired by Z notation and implementing the principles of Object Constraint LanguageObject Constraint LanguageThe Object Constraint Language is a declarative language for describing rules that apply to Unified Modeling Language models developed at IBM and now part of the UML standard. Initially, OCL was only a formal specification language extension to UML. OCL may now be used with any Meta-Object...
(OCL).
- Z++
- FastestFastestFastest is a model-based testing tool that works with specifications written in the Z notation. The tool implements the Test Template Framework proposed by Phil Stocks and David Carrington in . It is freely available online.-Usage:...
is a model-based testingModel-based testingModel-based testing is the application of Model based design for designing and optionally executing the necessary artifacts to perform software testing. Models can be used to represent the desired behavior of the System Under Test , or to represent the desired testing strategies and testing...
tool for the Z notation.
External links
General- The World Wide Web Virtual Library: The Z notation, by Jonathan BowenJonathan BowenJonathan P. Bowen FBCS FRSA is a British computer scientist. He is Chairman of Museophile Limited, an Emeritus Professor at London South Bank University where he has headed the Centre for Applied Formal Methods, and a Visiting Professor at the University of Westminster...
- Specification proposals by Ian Toyn
- W3C WSDL 2.0 a specification containing Z notation assertions and explanation