%% Style file for Community Z Tools (CZT) Project. %% This extends oz.sty, which defines all the symbols we need %% and seems to be widely available. \usepackage{oz} % Some standard Z commands \newenvironment{zsection}{\zed}{\endzed} \newcommand{\SECTION}{\boldword{section}} \newcommand{\parents}{\boldword{parents}} \newcommand{\function}{\boldword{function}} \newcommand{\generic}{\boldword{generic}} \newcommand{\relation}{\boldword{relation}} \newcommand{\leftassoc}{\boldword{leftassoc}} \newcommand{\rightassoc}{\boldword{rightassoc}} \newcommand{\LET}{\boldword{let}} \newcommand{\IF}{\boldword{if}} \newcommand{\THEN}{\boldword{then}} \newcommand{\ELSE}{\boldword{else}} %% These need defining, because they are not defined in oz.sty \newcommand{\listarg}{\mathrel{,,}} \newcommand{\varg}{\mathbin{\_}} \newcommand{\symdiff}{\mathbin{\ominus}} \newcommand{\plus}{{}^{+}} \newcommand{\extract}{\mathbin{\ires}} % \ires is from oz.sty \newcommand{\negate}{\mathop{-}} \newcommand{\arithmos}{{\mathbb A}} % oz.sty loads the AMS fonts \newcommand{\pipe}{\zpipe} % \zpipe is from oz.sty %% These need redefining, because the Z standard requires %% something different to oz.sty (or to LaTeX, for \star!) \def\star{{}^{*}} % we must override standard LaTeX \star! \def\infix{\boldword{infix}} % this overrides the oz.sty \infix. \def\partition{\boldword{partition}} % overrides the oz.sty 'partitions' %% The Z Standard now uses the 'theorem' environment for conjectures. %% See the Z Standard defect report 13568/003, %% available from http://www.cs.york.ac.uk/hise/Zstandard/defects.html %% Here are several different styles for displaying the theorem name: %% As a zero-width superscript %\newcommand{\ZedTheoremName}[1]{\hbox to % 0pt{\raisebox{2ex}{\scriptsize#1}}} %% As a left-margin annotation \newcommand{\ZedTheoremName}[1]{\llap{\raisebox{0.0ex}{% \scriptsize#1\hspace{0.5em}}}} %% Like a right-justified equation number %\newcommand{\ZedTheoremName}[1]{\hbox to 0pt{\hbox to % \textwidth{\hbox{}\hfill{\footnotesize[#1]}}}} %% Do not show it at all. %\newcommand{\ZedTheoremName}[1]{} \renewenvironment{theorem}[1]{\zed\ZedTheoremName{#1}}{\endzed} %% These commands are for the ZPattern extension of Z, %% which makes it possible to define rewrite rules and inference rules. %% See zpattern_toolkit.tex for the Z-parseable parts of the definitions. \newenvironment{zedjoker}[1]{\par$\bigstar$ #1\ }{\hfill\par} % Rule syntax: \begin{zedrule}{Name} Ant1 \\ Ant2 \derive Concl \end{zedrule} \newenvironment{zedrule}[1]{\par\textbf{rule }#1\vspace{-2ex}\infrule}{\endinfrule} \newcommand{\derives}{\derive{}} \newcommand{\substitute}{\mathrel{\curvearrowleft}} % U+21B6 \newcommand{\proviso}{\raisebox{0.5ex}{${}_{\blacktriangleright}\ $}}%%or\star % This mapping to unicode is now in zpattern_toolkit.tex % %%Zprechar \proviso U+22C6 % small star, or % %%Zprechar \proviso U+25B8 % small solid triangle |> ) % Z Pattern operators for use within == provisos. \newcommand{\schemaminus}{\mathbin{\textbf{schemaminus}}} \newcommand{\schemamerge}{\mathbin{\textbf{schemamerge}}} \newcommand{\hasDefn}{\mathbin{\textbf{hasDefn}}} \newcommand{\is}{\mathbin{\textbf{is}}} % These Z Pattern operators are not used yet. \newcommand{\Context}{\Gamma} \newcommand{\notfreein}{\mathbin{\boldword{notfreein}}}