Z--, an Executable Subset of Z

A description is given of Z—, a computational subset of Z which can be treated as a programming language. The language is presented by taking a small sample specification and taking it through successive refinement stages. After data refinement the specification is in high-level Z--. Operational refinement then takes it into base-level Z--. Auxiliary functions to make Z-- programming easier are described and given formal Z definitions. Z-- itself is a typed functional language, and a sketch is given of how its most important constructs might be interpreted.