# Z notation

The Z notation is a formal specification language for describing computing systems, based on typed set theory and first-order predicate logic, in which specifications are structured by units called schemas.<sup>[1](https://www.cs.ox.ac.uk/publications/publication3791-abstract.html)</sup><sup> • </sup><sup>[2](https://researchportal.lsbu.ac.uk/ws/portalfiles/portal/6315197/e0b10811_setss2014.pdf)</sup> It was developed by the Programming Research Group at Oxford University under Jean-Raymond Abrial around 1980, and the name comes from Zermelo-Fraenkel set theory.<sup>[3](https://onlinelibrary.wiley.com/doi/full/10.1002/spe.2634)</sup> Z is a specification notation rather than a full formal method: it describes what a system should do, not how to develop code from that description, and a Z specification is not executable.<sup>[4](https://www.researchgate.net/publication/2480325_Formal_Specification_and_Documentation_using_Z_A_Case_Study_Approach)</sup><sup> • </sup><sup>[5](https://etheses.whiterose.ac.uk/17776/1/thesis_acp12mus_rev.pdf)</sup>

| Key fact | Detail |
|---|---|
| What it is | A formal specification notation based on typed set theory and first-order predicate logic, used for discrete computer systems<sup>[2](https://researchportal.lsbu.ac.uk/ws/portalfiles/portal/6315197/e0b10811_setss2014.pdf)</sup> |
| Central construct | The schema, a named box combining declarations and predicates; schemas can be included in one another and combined with schema operators<sup>[1](https://www.cs.ox.ac.uk/publications/publication3791-abstract.html)</sup><sup> • </sup><sup>[2](https://researchportal.lsbu.ac.uk/ws/portalfiles/portal/6315197/e0b10811_setss2014.pdf)</sup> |
| Origin | Programming Research Group, Oxford University, under Jean-Raymond Abrial, around 1980; named for Zermelo-Fraenkel set theory<sup>[3](https://onlinelibrary.wiley.com/doi/full/10.1002/spe.2634)</sup> |
| Standard | ISO/IEC 13568:2002, covering syntax, type system, semantics, a mathematical toolkit, and LaTeX and e-mail mark-ups<sup>[6](https://www.iso.org/cms/%20render/live/en/sites/isoorg/contents/data/standard/02/15/21573.html)</sup> |
| Best-known industrial use | Specification of new modules of IBM's CICS transaction processing system from 1981; Queen's Award for Technological Achievement, April 1992<sup>[7](https://people.cs.nott.ac.uk/pszrq/files/SpecificationCaseStudies.pdf)</sup> |
| Status | A specification language, not executable; no code generator is generally agreed to be available, and industrial practice has largely moved to tool-centered methods such as B/Event-B, Alloy, and TLA+<sup>[3](https://onlinelibrary.wiley.com/doi/full/10.1002/spe.2634)</sup><sup> • </sup><sup>[8](https://codearchaeology.dev/languages/z-notation/)</sup> |

## Schemas and the mathematical toolkit

A Z specification has two layers: a mathematical language and a schema language.<sup>[9](https://eprints.soton.ac.uk/165419/1/ThesisM.pdf)</sup> The mathematical layer draws on set theory, relations, functions, and sequences, and the reference manual presents it as a "mathematical tool-kit" in which each symbol is given a formal definition in Z itself, an informal description, and a collection of algebraic laws.<sup>[10](https://www.informatik.uni-bremen.de/agbs/lehre/Books/Z/zrm.pdf)</sup> Reading a specification assumes a basic knowledge of naive set theory and predicate calculus.<sup>[10](https://www.informatik.uni-bremen.de/agbs/lehre/Books/Z/zrm.pdf)</sup>

The schema is the main structuring device. A schema consists of a collection of named objects specified by axioms, and Z provides notation for combining schemas, which allows large specifications to be built up in stages.<sup>[1](https://www.cs.ox.ac.uk/publications/publication3791-abstract.html)</sup> In the vertical form, declarations appear above a dividing line and predicates below; the same schema can be written horizontally in square brackets, and new schemas may be defined by combining old ones with the operations of the schema calculus.<sup>[10](https://www.informatik.uni-bremen.de/agbs/lehre/Books/Z/zrm.pdf)</sup> The schema language can describe the state of a system and the ways in which that state may change.<sup>[11](https://www.cs.cmu.edu/~15819/zedbook.pdf)</sup> A classic teaching example is the birthday book, which records people's birthdays and issues reminders on the appropriate day; its state schema declares a set of known names and a function from names to birthdays, with an invariant tying the set to the function's domain.<sup>[10](https://www.informatik.uni-bremen.de/agbs/lehre/Books/Z/zrm.pdf)</sup>

Schemas give specifications a modular structure: they can be named, included, combined, and reused, and the schema calculus is used to modularize a specification.<sup>[8](https://codearchaeology.dev/languages/z-notation/)</sup><sup> • </sup><sup>[10](https://www.informatik.uni-bremen.de/agbs/lehre/Books/Z/zrm.pdf)</sup> Composition mechanisms are rated well in comparative assessments, supported by well-defined theories of schemas and of promotion.<sup>[3](https://onlinelibrary.wiley.com/doi/full/10.1002/spe.2634)</sup>

## Refinement and development

Z includes data refinement, the process by which abstract specifications are developed into more concrete designs, and operation refinement for sequential programs.<sup>[10](https://www.informatik.uni-bremen.de/agbs/lehre/Books/Z/zrm.pdf)</sup> Its refinement theory is well developed, with technically complete forward and backward refinement proof rules.<sup>[3](https://onlinelibrary.wiley.com/doi/full/10.1002/spe.2634)</sup> Refinement cannot take development all the way down to the code level: as Bowen writes, Z permits a degree of data and operation refinement, yet reaching code eventually requires a leap that is usually made in an informal way.<sup>[3](https://onlinelibrary.wiley.com/doi/full/10.1002/spe.2634)</sup>

The [B-Method](https://www.edgepedia.org/b-method) grew out of this tradition. Its Abstract Machine Notation is described as a formal method based on Z, supported by an industrial-quality toolset, and the later Event-B method and its tools Rodin and ProB were shaped by practical experience with B, Z, and VDM.<sup>[12](https://www.sciencedirect.com/science/article/pii/095058499599366U)</sup><sup> • </sup><sup>[13](https://pure.au.dk/portal/en/publications/on-fitting-a-formal-method-into-practice)</sup>

## Industrial use: the CICS project

IBM (UK) Laboratories and the Oxford Programming Research Group ran a joint research project from 1981 to investigate whether formal specification techniques could scale to industrial software.<sup>[7](https://people.cs.nott.ac.uk/pszrq/files/SpecificationCaseStudies.pdf)</sup> The target was CICS (Customer Information Control System), IBM's main System/370 online transaction processing system, used for banking, airline reservations, and insurance, and by the early 1980s consisting of over 800,000 lines of code.<sup>[7](https://people.cs.nott.ac.uk/pszrq/files/SpecificationCaseStudies.pdf)</sup> After early case studies by Oxford researchers, part of the CICS program was restructured and rewritten with Z specifications for the new code; Z was used on approximately 14 percent of that new code, still amounting to several tens of thousands of lines.<sup>[7](https://people.cs.nott.ac.uk/pszrq/files/SpecificationCaseStudies.pdf)</sup> A 1988 IBM paper by C. J. Nix and B. P. Collins, both IBM-affiliated at the time, reported a potential for significantly reducing the volume of software quality defects at ultimately little additional development cost.<sup>[14](https://research.ibm.com/publications/use-of-software-engineering-including-the-z-notation-in-the-development-of-cics)</sup>

In April 1992, Oxford University Computing Laboratory and IBM (UK) Laboratories Ltd were joint winners of the Queen's Award for Technological Achievement for the use of the Z notation in the development of a transaction processing system.<sup>[7](https://people.cs.nott.ac.uk/pszrq/files/SpecificationCaseStudies.pdf)</sup><sup> • </sup><sup>[11](https://www.cs.cmu.edu/~15819/zedbook.pdf)</sup> The most widely publicized claims about the CICS/ESA version 3.1 release were less than half the normal number of customer-reported errors and a 9 percent saving in total development costs; a 1996 evaluation in the *Journal of Systems and Software* concluded that the case study was important and valuable but that the quantitative claims had not been substantiated.<sup>[15](https://www.sciencedirect.com/science/article/pii/S0164121296001227)</sup> A later project at IBM Hursley produced a formal description of a large part of the CICS Application Programming Interface, which could be published because the API is a public interface.<sup>[7](https://people.cs.nott.ac.uk/pszrq/files/SpecificationCaseStudies.pdf)</sup>

Z has also been used in safety- and security-related development. The Tokeneer ID Station project, developed for the US National Security Agency by Altran Praxis, formalized its specification in Z, refined it to a formal design, and developed the software in SPARK; after the project became available to the wider community in 2008, only five errors were found under intense scrutiny.<sup>[16](https://eceasst.org/index.php/eceasst/article/view/1885)</sup>

## Standardization and language design

The international standard ISO/IEC 13568:2002, *Information technology — Z formal specification notation — Syntax, type system and semantics*, covers the syntax, type system, and semantics of the notation, a toolkit of widely used mathematical operators, and LaTeX and e-mail mark-ups; it explicitly excludes any method of using Z, though an informative annex describes one widely used convention. The standard was last reviewed and confirmed in 2026 and remains current.<sup>[6](https://www.iso.org/cms/%20render/live/en/sites/isoorg/contents/data/standard/02/15/21573.html)</sup>

The standard grew out of J. M. Spivey's *The Z Notation: A Reference Manual* (2nd edition, Prentice-Hall, 1992), a primary teaching text at Oxford.<sup>[17](https://www.cs.ox.ac.uk/teaching/courses/2011-2012/intro2spec/)</sup> Spivey's manual deliberately omits overloading, because identifying common components when schemas are joined is hard to reconcile with two distinct variables sharing a name, and omits formal inference rules for deriving theorems about specifications, on the grounds that experience was insufficient to make the rules interact smoothly.<sup>[10](https://www.informatik.uni-bremen.de/agbs/lehre/Books/Z/zrm.pdf)</sup>

## Tool support and current standing

Tool support for Z is at least medium by comparative assessment. Written in Java and distributed as open source, the CZT (Community Z Tools) effort provides a foundation for creating formal-methods tooling for Z along with its dialects; it offers a parser, typechecker, and printer covering Z, Object-Z, and Circus, an animator that handles only a restricted subset of Z, and jEdit and [Eclipse](https://www.edgepedia.org/eclipse-software) plugins for specification editing.<sup>[18](https://czt.sourceforge.net/manual.html)</sup> The ProB animator and model checker, primarily a B-Method tool, supports Z specifications through its ProZ extension.<sup>[19](https://prob.cs.hhu.de/w/index.php?title=ProZ)</sup><sup> • </sup><sup>[3](https://onlinelibrary.wiley.com/doi/full/10.1002/spe.2634)</sup> Proof tools for Z are considered hard to build well, partly because each proof tool effectively defines its own semantics and because changes of notation are a barrier to understanding.<sup>[20](https://www.researchgate.net/publication/2644718_Approaches_to_proof_in_Z_-_or_-_Why_effective_proof_tool_support_for_Z_is_hard)</sup>

As a language, Z does not directly support the modeling of concurrency; concurrent systems can instead be addressed through extensions such as Object-Z combined with CSP, or through Circus.<sup>[3](https://onlinelibrary.wiley.com/doi/full/10.1002/spe.2634)</sup> The notation itself has changed little since the 2002 ISO standard, the dedicated Z User Meetings have been absorbed into the broader ABZ conference, and industrial practice has largely moved to tool-centered methods such as B/Event-B, Alloy, and TLA+.<sup>[8](https://codearchaeology.dev/languages/z-notation/)</sup> Z remains in teaching and research use, including recent formalization work such as a Z specification of the W3C Draft Core SHACL Semantics.<sup>[21](https://arxiv.org/abs/1511.00384)</sup>

## References

1. [Mike Spivey (1984). Towards a Formal Semantics for the Z Notation. Oxford University Computing Laboratory, PRG-41.](https://www.cs.ox.ac.uk/publications/publication3791-abstract.html)
2. [The Z Notation (Sets Seminar notes), London South Bank University Research Portal.](https://researchportal.lsbu.ac.uk/ws/portalfiles/portal/6315197/e0b10811_setss2014.pdf)
3. [Mashkoor (2018). Evaluating the suitability of state-based formal methods for industrial deployment. Software: Practice and Experience.](https://onlinelibrary.wiley.com/doi/full/10.1002/spe.2634)
4. [Formal Specification and Documentation using Z: A Case Study Approach.](https://www.researchgate.net/publication/2480325_Formal_Specification_and_Documentation_using_Z_A_Case_Study_Approach)
5. [Support for Model Checking Z Specifications (thesis), White Rose eTheses.](https://etheses.whiterose.ac.uk/17776/1/thesis_acp12mus_rev.pdf)
6. [ISO/IEC 13568:2002 — Information technology — Z formal specification notation — Syntax, type system and semantics.](https://www.iso.org/cms/%20render/live/en/sites/isoorg/contents/data/standard/02/15/21573.html)
7. [Steve King (1992). The use of Z in the restructure of IBM CICS, in I. Hayes (ed.), Specification Case Studies.](https://people.cs.nott.ac.uk/pszrq/files/SpecificationCaseStudies.pdf)
8. [Z notation, CodeArchaeology.](https://codearchaeology.dev/languages/z-notation/)
9. [Thesis on Z specifications, University of Southampton Research Repository.](https://eprints.soton.ac.uk/165419/1/ThesisM.pdf)
10. [J. M. Spivey. The Z Notation: A Reference Manual, 2nd edition.](https://www.informatik.uni-bremen.de/agbs/lehre/Books/Z/zrm.pdf)
11. [The Z notation (course text), Carnegie Mellon University.](https://www.cs.cmu.edu/~15819/zedbook.pdf)
12. [Formal development in B abstract machine notation. Information and Software Technology.](https://www.sciencedirect.com/science/article/pii/095058499599366U)
13. [Gmehlich et al. On Fitting a Formal Method into Practice. Aarhus University.](https://pure.au.dk/portal/en/publications/on-fitting-a-formal-method-into-practice)
14. [C. J. Nix and B. P. Collins (1988). Use of software engineering, including the Z notation, in the development of CICS. IBM Research.](https://research.ibm.com/publications/use-of-software-engineering-including-the-z-notation-in-the-development-of-cics)
15. [Evaluating the effectiveness of Z: The claims made about CICS and where we go from here. Journal of Systems and Software 35(3), 1996.](https://www.sciencedirect.com/science/article/pii/S0164121296001227)
16. [Janet Barnes (2011). Experiences in the Industrial use of Formal Methods. ECEASST vol. 46.](https://eceasst.org/index.php/eceasst/article/view/1885)
17. [Introduction to Specification course, Oxford University Department of Computer Science, 2011-2012.](https://www.cs.ox.ac.uk/teaching/courses/2011-2012/intro2spec/)
18. [Community Z Tools (CZT) manual.](https://czt.sourceforge.net/manual.html)
19. [ProZ — ProB Documentation.](https://prob.cs.hhu.de/w/index.php?title=ProZ)
20. [Approaches to proof in Z — or — Why effective proof tool support for Z is hard.](https://www.researchgate.net/publication/2644718_Approaches_to_proof_in_Z_-_or_-_Why_effective_proof_tool_support_for_Z_is_hard)
21. [Z Specification for the W3C Editor's Draft Core SHACL Semantics. arXiv:1511.00384.](https://arxiv.org/abs/1511.00384)

---
*Topic: Encyclopedia › Physical world and mathematics › Mathematics and statistics › Logic and discrete mathematics › Formal logic and foundations › Logical calculi and logical syntax › Lambda calculus and type theory › Dependent type theory and Martin-Löf type theory*

*Initially written Sep 17, 2026 · Reviewed: Oct 15, 2026 · Edited: Oct 15, 2026 · Last review: Oct 15, 2026*

*Copyright 2026 EdgeChat AI, a subsidiary of Biostate AI.*

License: Edgepedia Community License 1.0, https://www.edgepedia.org/edgepedia/license
