2026-05-05Β·9 min readΒ·sota.io team

Deploy Z Notation to Europe β€” Jean-Raymond Abrial πŸ‡«πŸ‡· (Oxford PRG, 1977), the Mathematical Specification Language at the Root of Europe's Formal Methods Tradition, on EU Infrastructure in 2026

Before there was B-Method, before there was Event-B, before there was Rodin β€” there was Z. The specification language that Jean-Raymond Abrial πŸ‡«πŸ‡· began developing at the Oxford University Programming Research Group in 1977 became the mathematical foundation from which an entire European tradition of formal methods would grow. Z gave software engineers a way to write specifications with the rigour of mathematics: using Zermelo-Fraenkel set theory and first-order predicate logic to describe what a system must do, before a single line of implementation code was written. Forty-eight years later, Z is an ISO standard, the ancestor of B-Method and Event-B, and still in active use from IBM's transaction processing infrastructure to UK government security systems.

What Z Notation Is β€” and Why It Matters in 2026

Z (pronounced "zed") is a model-based formal specification language. A Z specification describes a system as a state (variables with types and invariants) and a collection of operations (preconditions and postconditions relating before-states to after-states), expressed entirely in the notation of sets, relations, and first-order logic. The key structural unit is the schema: a named box containing a signature (variable declarations) and a predicate (the constraint those variables must satisfy). Schema calculus β€” the ability to combine, rename, and compose schemas β€” makes large specifications modular and reusable.

Z makes no claims about implementation. It says what a system must be, not how to build it. The correctness of an implementation is then a separate proof obligation: show that your code satisfies the postconditions and preserves the invariants the specification demands. For systems where correctness matters more than convenience β€” banking transaction processors, air traffic control, medical devices, government security infrastructure β€” this separation is precisely what is needed.

Jean-Raymond Abrial πŸ‡«πŸ‡· is French. He brought his mathematical training to Oxford's Programming Research Group (PRG) in the late 1970s, where he worked with Bernard Sufrin πŸ‡¬πŸ‡§, Mike Spivey πŸ‡¬πŸ‡§, Roger Duke πŸ‡¦πŸ‡Ί, and Ian Hayes πŸ‡¦πŸ‡Ί to develop the language. Spivey's "The Z Notation: A Reference Manual" (Prentice Hall, 1989, 2nd ed. 1992) became the definitive reference. The name Z comes from Ernst Zermelo πŸ‡©πŸ‡ͺ (Berlin, 1871–Freiburg, 1953), whose axiomatic set theory is the mathematical foundation of the notation. The ISO/IEC 13568:2002 standard codified the language for international use.

The European Formal Methods Lineage

Z did not emerge in isolation. It is one pillar in a European tradition of mathematically grounded software engineering that developed largely outside the commercial mainstream of US computer science β€” in British universities, Austrian research labs, French engineering schools, and the programmes of the European Union.

Vienna Definition Language (VDL) β€” IBM Vienna Scientific Center πŸ‡¦πŸ‡Ή (Peter Lucas πŸ‡¦πŸ‡Ή, 1969)
    Formal semantics of PL/I β†’ Meta-IV β†’ VDM-SL
          ↓
Z Notation β€” Oxford PRG πŸ‡¬πŸ‡§, Jean-Raymond Abrial πŸ‡«πŸ‡· (1977)
    Set-theoretic state + schema calculus + first-order logic
    Bernard Sufrin πŸ‡¬πŸ‡§ + Mike Spivey πŸ‡¬πŸ‡§ + Roger Duke πŸ‡¦πŸ‡Ί + Ian Hayes πŸ‡¦πŸ‡Ί
    ISO/IEC 13568:2002
          ↓
B-Method β€” Jean-Raymond Abrial πŸ‡«πŸ‡· (1989, The B-Book 1996)
    Abstract Machine Notation (AMN): Z schemas β†’ machines with operations
    Proof obligations mechanically discharged by Atelier B (ClearSy πŸ‡«πŸ‡·)
    Paris Metro Line 14 (1998): 86,000 lines Β· 111,000 POs Β· 0 runtime errors
          ↓
Event-B β€” Jean-Raymond Abrial πŸ‡«πŸ‡· (ETH Zurich πŸ‡¨πŸ‡­ + Newcastle πŸ‡¬πŸ‡§, 2000s)
    Events (guarded state transitions) β†’ concurrent/distributed systems
    Rodin Platform (EU FP6 IST 511599, 2004–2007): Eclipse-based IDE
          ↓
ProB β€” Michael Leuschel πŸ‡©πŸ‡ͺ (University of DΓΌsseldorf, 2003–present)
    Model checker + constraint solver for B / Event-B / Z / TLA+ / CSP
    ProZ extension: full Z Notation support within ProB

The unifying thread is Jean-Raymond Abrial πŸ‡«πŸ‡·. He developed Z at Oxford, then built B-Method to give Z specifications an executable operational semantics, then refined B into Event-B for the concurrent world. Z is where that lineage begins.

Z Schema Notation: Structure and Semantics

A Z specification is built from schemas. A schema has a signature (above the dividing line) declaring variables with their types, and a predicate (below the line) constraining their values:

β”Œβ”€ BankAccount ──────────────────────────────────┐
β”‚ balance : β„€                                     β”‚
β”‚ overdraft_limit : β„•                             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ balance β‰₯ βˆ’overdraft_limit                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

This defines a state: a bank account has an integer balance and a natural number overdraft limit; the balance must always exceed the negative of the overdraft limit. This predicate is the invariant β€” it must hold in every state the system can reach.

Operations are schemas that relate a before-state (undecorated variables) to an after-state (primed variables):

β”Œβ”€ Withdraw ──────────────────────────────────────┐
β”‚ Ξ”BankAccount                                     β”‚
β”‚ amount? : β„•                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ amount? ≀ balance + overdraft_limit              β”‚
β”‚ balanceβ€² = balance βˆ’ amount?                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Ξ”BankAccount (delta) includes both the before-state (balance, overdraft_limit) and the after-state (balanceβ€², overdraft_limitβ€²) β€” the schema calculus merges them. The ? suffix marks an input. The precondition (amount? ≀ balance + overdraft_limit) and postcondition (balanceβ€² = balance βˆ’ amount?) together define the operation completely. An implementation of Withdraw must produce an after-state satisfying this postcondition whenever the precondition holds β€” and preserve the invariant.

Schema calculus operators allow combining schemas without duplication:

Withdraw ∨ Deposit         -- disjunction: one operation or the other
SuccessResponse ∧ Withdraw -- conjunction: merge signatures and predicates
Withdraw ≫ AuditLog        -- piping: output of one is input of the next

This compositionality is what makes Z specifications scale to the complexity of real industrial systems.

Industrial Applications: IBM CICS and Beyond

The most famous industrial application of Z is the specification of IBM CICS (Customer Information Control System) β€” IBM's flagship transaction processing middleware, running on mainframes worldwide and processing millions of bank transactions daily. From the mid-1980s, IBM's Hursley laboratory in Hampshire πŸ‡¬πŸ‡§ used Z to formally specify parts of CICS, making it one of the earliest examples of a commercial industrial system specified in a formal notation. The project demonstrated that Z could scale to tens of thousands of lines of specification, that it found real bugs in designs before implementation, and that it produced documentation that stayed coherent as the system evolved.

Other significant applications:

ProZ: Executing Z Specifications in DΓΌsseldorf

One of Z's practical limitations was long its lack of animation: you could write a specification, but you could not run it to see if it behaved as expected. ProZ β€” an extension to the ProB model checker developed by Michael Leuschel πŸ‡©πŸ‡ͺ at the University of DΓΌsseldorf β€” closes that gap.

ProZ translates Z schemas into constraint satisfaction problems, allowing ProB to:

ProB supports Z, B-Method, Event-B, TLA+, and CSP under a single tool β€” reflecting the convergence of European formal methods traditions. ProZ is open source, MIT licensed, and available via the ProB distribution. Michael Leuschel's lab at DΓΌsseldorf is also where nARCOS and refinement checking tools for B/Z interoperability are maintained.

# Install ProB (includes ProZ)
docker run -it \
  --rm \
  -v $(pwd)/specs:/specs \
  ghcr.io/hhu-stups/prob2-ui:latest

# Or direct CLI: prob -z your_spec.zed

Deploying Z Notation Tooling on EU Infrastructure

A Z specification development environment typically needs:

On sota.io, a Z tooling server deploys as a standard Linux container:

sota deploy \
  --name z-notation-tools \
  --image ubuntu:24.04 \
  --region eu-central-1 \
  --memory 1gb
FROM ubuntu:24.04

RUN apt-get update && apt-get install -y \
    openjdk-21-jre-headless \
    wget \
    unzip \
    texlive-latex-extra \
    texlive-science \
    && rm -rf /var/lib/apt/lists/*

# ProB (includes ProZ)
RUN wget -q https://prob.hhu.de/w/images/7/74/ProB_Cli.zip -O /tmp/prob.zip \
    && unzip -q /tmp/prob.zip -d /opt/prob \
    && chmod +x /opt/prob/probcli \
    && ln -s /opt/prob/probcli /usr/local/bin/prob

# CZT Command-line
RUN wget -q https://sourceforge.net/projects/czt/files/latest/download -O /tmp/czt.jar \
    && mv /tmp/czt.jar /opt/czt.jar

WORKDIR /specs
ENTRYPOINT ["prob"]
# Type-check a Z specification
docker run --rm -v $(pwd):/specs z-tools \
  java -jar /opt/czt.jar typechecker /specs/BankAccount.tex

# Animate with ProZ
docker run --rm -v $(pwd):/specs z-tools \
  prob -z /specs/BankAccount.zed -animate

# Model-check an invariant
docker run --rm -v $(pwd):/specs z-tools \
  prob -z /specs/BankAccount.zed \
  -mc 10000 \
  -property "balance >= -overdraft_limit"

GDPR-compliant hosting in Germany means:

Z Notation and EU Regulatory Compliance in 2026

EU AI Act Art. 9 (Risk Management): For high-risk AI systems (Art. 6/Annex III), Z specifications constitute formal documentation of system state invariants, input/output contracts, and safety properties β€” exactly the risk management evidence Art. 9 requires. A Z specification of a medical decision support system can demonstrate that certain diagnostic outputs are invariantly linked to the presence of required evidence in the patient record.

ISO/IEC 61508 SIL 3/4 (Functional Safety): The standard explicitly recommends formal specification methods at SIL 3 and requires them at SIL 4. Z specification satisfies the formal methods requirement; ProZ animation and model checking satisfy the verification requirement.

EN 50128 (Railway Software): Z formal specifications of signalling software pre/postconditions constitute direct certification evidence. The B-Method's Paris Metro Line 14 proof (0 runtime errors since 1998) began with Z-style specifications of what the system must guarantee.

GDPR Art. 25 (Data Protection by Design): Z schemas can specify data minimisation as an invariant β€” formally proving that a system can only hold the data the specification permits. This is stronger than a policy document: it is a mathematical claim about what states the system can reach.

NIS2 (Network and Information Security): Critical infrastructure operators under NIS2 must demonstrate rigorous security analysis. Z specifications of cryptographic protocol interfaces and access control models provide the formal grounding that NIS2's risk analysis requirements imply.

The Oxford PRG Legacy Across Europe

The Oxford Programming Research Group's influence on European computer science extends far beyond Z Notation. PRG produced or shaped:

The common thread is a conviction that software correctness is a mathematical question, not an empirical one β€” and that Europe's tradition of rigorous mathematics gives EU software engineers a distinctive advantage in safety-critical domains. As the EU AI Act, NIS2, and the EU Cyber Resilience Act together raise the bar for software correctness in European markets, that tradition is becoming a commercial differentiator.

Why EU Hosting for Z Notation Tools

Z specifications describe systems in precise mathematical terms. For systems subject to EU regulation, the specifications themselves β€” defining data structures, invariants, and permitted operations β€” are often as sensitive as the implementation. Deploying Z tooling on EU infrastructure keeps specification artefacts in EU jurisdiction:

sota.io provides the simplest path: one command, German infrastructure, managed PostgreSQL for specification versioning, no DevOps overhead. For formal methods practitioners whose systems are subject to EU regulation, that combination β€” mathematical rigour in the specification, EU sovereignty in the infrastructure β€” is the natural choice.

See Also


Z Notation is an ISO/IEC 13568:2002 standard formal specification language. ProZ is an open-source extension of ProB (University of DΓΌsseldorf πŸ‡©πŸ‡ͺ), MIT licensed. Fuzz is freely available from Mike Spivey's Oxford website. sota.io deploys to EU infrastructure in Germany β€” GDPR-compliant, zero DevOps, managed PostgreSQL.