mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-20 03:43:51 +00:00
Estimated hours taken: 0.1 samples/muz/*: Add Philip Dart's `muz' program, as an example of a program written in Mercury.
790 lines
31 KiB
TeX
790 lines
31 KiB
TeX
%
|
|
% >>> zed-csp.sty <<<
|
|
%
|
|
% (c) Jim Davies, January 1995
|
|
|
|
% You may copy and distribute this file freely. Any queries and
|
|
% complaints should be forwarded to Jim.Davies@comlab.ox.ac.uk.
|
|
|
|
% If you make any changes to this file, please do not distribute
|
|
% the results under the name `zed-csp.sty'.
|
|
|
|
% >>> information <<<
|
|
|
|
% This is a LaTeX2e package for typesetting Z and CSP notation. It
|
|
% employs the standard (JMS) set of macros, but uses the AMS fonts in
|
|
% place of `oxsy'. You will need the tfm and fd files for the `A' and
|
|
% `B' symbol fonts installed. This requires (1) the AMSFONTS package
|
|
% and (2) the MFNFSS package for LaTeX2e.
|
|
|
|
% If you have the Lucida Bright font set from Y&Y, then you can use
|
|
% that instead. In this case, you have only to load `lucbr' (from the
|
|
% PSNFSS package) before `zed-csp'.
|
|
|
|
% >>> changes <<<
|
|
|
|
% version 0 (Sep 94): first attempt
|
|
% version 0a (Oct 94): fixed error in definition of \cat
|
|
% version 0b (Nov 94): added composite for \uminus
|
|
% version 0c (Jan 95): removed definition of \emptyset
|
|
|
|
% >>> date and version <<<
|
|
|
|
\def\fileversion{0c}
|
|
\def\filedate{95/01/11}
|
|
\def\docdate {95/01/11}
|
|
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
|
|
\ProvidesPackage{zed-csp}[{%
|
|
\filedate\space\fileversion\space zed-csp package}]
|
|
|
|
% >>> fonts and symbols <<<
|
|
|
|
% We declare a new math version. For convenience, I have chosen the
|
|
% same name as that used in oz.sty. The following code is based upon
|
|
% the work of Paul King, Sebastian Rahtz, and Mike Spivey. Alan
|
|
% Jeffrey's influence is everywhere.
|
|
|
|
\@ifpackageloaded{lucbr}{}{%
|
|
\DeclareMathVersion{zed}
|
|
\SetMathAlphabet{\mathrm}{zed}{\encodingdefault}{\rmdefault}{m}{n}%
|
|
\SetMathAlphabet{\mathbf}{zed}{\encodingdefault}{\rmdefault}{bx}{n}%
|
|
\SetMathAlphabet{\mathsf}{zed}{\encodingdefault}{\sfdefault}{m}{n}%
|
|
\DeclareSymbolFont{italics}{\encodingdefault}{\rmdefault}{m}{it}%
|
|
\DeclareSymbolFontAlphabet{\mathrm}{operators}
|
|
\DeclareSymbolFontAlphabet{\mathit}{letters}
|
|
\DeclareSymbolFontAlphabet{\mathcal}{symbols}
|
|
\DeclareSymbolFontAlphabet{\zedit}{italics}
|
|
\DeclareSymbolFont{lasy}{U}{lasy}{m}{n}
|
|
\DeclareSymbolFont{AMSa}{U}{msa}{m}{n}
|
|
\DeclareSymbolFont{AMSb}{U}{msb}{m}{n}
|
|
\let\mho\undefined
|
|
\let\Join\undefined
|
|
\let\Box\undefined
|
|
\let\Diamond\undefined
|
|
\let\leadsto\undefined
|
|
\let\sqsubset\undefined
|
|
\let\sqsupset\undefined
|
|
\let\lhd\undefined
|
|
\let\unlhd\undefined
|
|
\let\rhd\undefined
|
|
\let\unrhd\undefined
|
|
\DeclareMathSymbol{\mho}{\mathord}{lasy}{"30}
|
|
\DeclareMathSymbol{\Join}{\mathrel}{lasy}{"31}
|
|
\DeclareMathSymbol{\Box}{\mathord}{lasy}{"32}
|
|
\DeclareMathSymbol{\Diamond}{\mathord}{lasy}{"33}
|
|
\DeclareMathSymbol{\leadsto}{\mathrel}{lasy}{"3B}
|
|
\DeclareMathSymbol{\sqsubset}{\mathrel}{lasy}{"3C}
|
|
\DeclareMathSymbol{\sqsupset}{\mathrel}{lasy}{"3D}
|
|
\DeclareMathSymbol{\lhd}{\mathrel}{lasy}{"01}
|
|
\DeclareMathSymbol{\unlhd}{\mathrel}{lasy}{"02}
|
|
\DeclareMathSymbol{\rhd}{\mathrel}{lasy}{"03}
|
|
\DeclareMathSymbol{\unrhd}{\mathrel}{lasy}{"04}
|
|
\DeclareSymbolFontAlphabet{\bbold}{AMSb}
|
|
\mathversion{zed}
|
|
}
|
|
|
|
\@ifpackageloaded{lucbr}{%
|
|
\DeclareMathSymbol{\doublebarwedge}{\mathbin}{symbols}{"D4}
|
|
\DeclareMathSymbol{\lll}{\mathrel}{letters}{"DE}
|
|
\DeclareMathSymbol{\ggg}{\mathrel}{letters}{"DF}
|
|
\DeclareMathSymbol{\eth}{\mathrel}{operators}{"F0}
|
|
}{%
|
|
\let\rightleftharpoons\undefined
|
|
\let\angle\undefined
|
|
\DeclareMathSymbol\boxdot{\mathbin}{AMSa}{"00}
|
|
\DeclareMathSymbol\boxplus{\mathbin}{AMSa}{"01}
|
|
\DeclareMathSymbol\boxtimes{\mathbin}{AMSa}{"02}
|
|
\DeclareMathSymbol\square{\mathord}{AMSa}{"03}
|
|
\DeclareMathSymbol\blacksquare{\mathord}{AMSa}{"04}
|
|
\DeclareMathSymbol\centerdot{\mathbin}{AMSa}{"05}
|
|
\DeclareMathSymbol\lozenge{\mathord}{AMSa}{"06}
|
|
\DeclareMathSymbol\blacklozenge{\mathord}{AMSa}{"07}
|
|
\DeclareMathSymbol\circlearrowright{\mathrel}{AMSa}{"08}
|
|
\DeclareMathSymbol\circlearrowleft{\mathrel}{AMSa}{"09}
|
|
\DeclareMathSymbol\rightleftharpoons{\mathrel}{AMSa}{"0A}
|
|
\DeclareMathSymbol\leftrightharpoons{\mathrel}{AMSa}{"0B}
|
|
\DeclareMathSymbol\boxminus{\mathbin}{AMSa}{"0C}
|
|
\DeclareMathSymbol\Vdash{\mathrel}{AMSa}{"0D}
|
|
\DeclareMathSymbol\Vvdash{\mathrel}{AMSa}{"0E}
|
|
\DeclareMathSymbol\vDash{\mathrel}{AMSa}{"0F}
|
|
\DeclareMathSymbol\twoheadrightarrow{\mathrel}{AMSa}{"10}
|
|
\DeclareMathSymbol\twoheadleftarrow{\mathrel}{AMSa}{"11}
|
|
\DeclareMathSymbol\leftleftarrows{\mathrel}{AMSa}{"12}
|
|
\DeclareMathSymbol\rightrightarrows{\mathrel}{AMSa}{"13}
|
|
\DeclareMathSymbol\upuparrows{\mathrel}{AMSa}{"14}
|
|
\DeclareMathSymbol\downdownarrows{\mathrel}{AMSa}{"15}
|
|
\DeclareMathSymbol\upharpoonright{\mathrel}{AMSa}{"16}
|
|
\DeclareMathSymbol\downharpoonright{\mathrel}{AMSa}{"17}
|
|
\DeclareMathSymbol\upharpoonleft{\mathrel}{AMSa}{"18}
|
|
\DeclareMathSymbol\downharpoonleft{\mathrel}{AMSa}{"19}
|
|
\DeclareMathSymbol\rightarrowtail{\mathrel}{AMSa}{"1A}
|
|
\DeclareMathSymbol\leftarrowtail{\mathrel}{AMSa}{"1B}
|
|
\DeclareMathSymbol\leftrightarrows{\mathrel}{AMSa}{"1C}
|
|
\DeclareMathSymbol\rightleftarrows{\mathrel}{AMSa}{"1D}
|
|
\DeclareMathSymbol\Lsh{\mathrel}{AMSa}{"1E}
|
|
\DeclareMathSymbol\Rsh{\mathrel}{AMSa}{"1F}
|
|
\DeclareMathSymbol\rightsquigarrow{\mathrel}{AMSa}{"20}
|
|
\DeclareMathSymbol\leftrightsquigarrow{\mathrel}{AMSa}{"21}
|
|
\DeclareMathSymbol\looparrowleft{\mathrel}{AMSa}{"22}
|
|
\DeclareMathSymbol\looparrowright{\mathrel}{AMSa}{"23}
|
|
\DeclareMathSymbol\circeq{\mathrel}{AMSa}{"24}
|
|
\DeclareMathSymbol\succsim{\mathrel}{AMSa}{"25}
|
|
\DeclareMathSymbol\gtrsim{\mathrel}{AMSa}{"26}
|
|
\DeclareMathSymbol\gtrapprox{\mathrel}{AMSa}{"27}
|
|
\DeclareMathSymbol\multimap{\mathrel}{AMSa}{"28}
|
|
\DeclareMathSymbol\therefore{\mathrel}{AMSa}{"29}
|
|
\DeclareMathSymbol\because{\mathrel}{AMSa}{"2A}
|
|
\DeclareMathSymbol\doteqdot{\mathrel}{AMSa}{"2B}
|
|
\DeclareMathSymbol\triangleq{\mathrel}{AMSa}{"2C}
|
|
\DeclareMathSymbol\precsim{\mathrel}{AMSa}{"2D}
|
|
\DeclareMathSymbol\lesssim{\mathrel}{AMSa}{"2E}
|
|
\DeclareMathSymbol\lessapprox{\mathrel}{AMSa}{"2F}
|
|
\DeclareMathSymbol\eqslantless{\mathrel}{AMSa}{"30}
|
|
\DeclareMathSymbol\eqslantgtr{\mathrel}{AMSa}{"31}
|
|
\DeclareMathSymbol\curlyeqprec{\mathrel}{AMSa}{"32}
|
|
\DeclareMathSymbol\curlyeqsucc{\mathrel}{AMSa}{"33}
|
|
\DeclareMathSymbol\preccurlyeq{\mathrel}{AMSa}{"34}
|
|
\DeclareMathSymbol\leqq{\mathrel}{AMSa}{"35}
|
|
\DeclareMathSymbol\leqslant{\mathrel}{AMSa}{"36}
|
|
\DeclareMathSymbol\lessgtr{\mathrel}{AMSa}{"37}
|
|
\DeclareMathSymbol\backprime{\mathord}{AMSa}{"38}
|
|
\DeclareMathSymbol\risingdotseq{\mathrel}{AMSa}{"3A}
|
|
\DeclareMathSymbol\fallingdotseq{\mathrel}{AMSa}{"3B}
|
|
\DeclareMathSymbol\succcurlyeq{\mathrel}{AMSa}{"3C}
|
|
\DeclareMathSymbol\geqq{\mathrel}{AMSa}{"3D}
|
|
\DeclareMathSymbol\geqslant{\mathrel}{AMSa}{"3E}
|
|
\DeclareMathSymbol\gtrless{\mathrel}{AMSa}{"3F}
|
|
\DeclareMathSymbol\sqsubset{\mathrel}{AMSa}{"40}
|
|
\DeclareMathSymbol\sqsupset{\mathrel}{AMSa}{"41}
|
|
\DeclareMathSymbol\vartriangleright{\mathrel}{AMSa}{"42}
|
|
\DeclareMathSymbol\vartriangleleft{\mathrel}{AMSa}{"43}
|
|
\DeclareMathSymbol\trianglerighteq{\mathrel}{AMSa}{"44}
|
|
\DeclareMathSymbol\trianglelefteq{\mathrel}{AMSa}{"45}
|
|
\DeclareMathSymbol\bigstar{\mathord}{AMSa}{"46}
|
|
\DeclareMathSymbol\between{\mathrel}{AMSa}{"47}
|
|
\DeclareMathSymbol\blacktriangledown{\mathord}{AMSa}{"48}
|
|
\DeclareMathSymbol\blacktriangleright{\mathrel}{AMSa}{"49}
|
|
\DeclareMathSymbol\blacktriangleleft{\mathrel}{AMSa}{"4A}
|
|
\DeclareMathSymbol\vartriangle{\mathord}{AMSa}{"4D}
|
|
\DeclareMathSymbol\blacktriangle{\mathord}{AMSa}{"4E}
|
|
\DeclareMathSymbol\triangledown{\mathord}{AMSa}{"4F}
|
|
\DeclareMathSymbol\eqcirc{\mathrel}{AMSa}{"50}
|
|
\DeclareMathSymbol\lesseqgtr{\mathrel}{AMSa}{"51}
|
|
\DeclareMathSymbol\gtreqless{\mathrel}{AMSa}{"52}
|
|
\DeclareMathSymbol\lesseqqgtr{\mathrel}{AMSa}{"53}
|
|
\DeclareMathSymbol\gtreqqless{\mathrel}{AMSa}{"54}
|
|
\DeclareMathSymbol\Rrightarrow{\mathrel}{AMSa}{"56}
|
|
\DeclareMathSymbol\Lleftarrow{\mathrel}{AMSa}{"57}
|
|
\DeclareMathSymbol\veebar{\mathbin}{AMSa}{"59}
|
|
\DeclareMathSymbol\barwedge{\mathbin}{AMSa}{"5A}
|
|
\DeclareMathSymbol\doublebarwedge{\mathbin}{AMSa}{"5B}
|
|
\DeclareMathSymbol\angle{\mathord}{AMSa}{"5C}
|
|
\DeclareMathSymbol\measuredangle{\mathord}{AMSa}{"5D}
|
|
\DeclareMathSymbol\sphericalangle{\mathord}{AMSa}{"5E}
|
|
\DeclareMathSymbol\varpropto{\mathrel}{AMSa}{"5F}
|
|
\DeclareMathSymbol\smallsmile{\mathrel}{AMSa}{"60}
|
|
\DeclareMathSymbol\smallfrown{\mathrel}{AMSa}{"61}
|
|
\DeclareMathSymbol\Subset{\mathrel}{AMSa}{"62}
|
|
\DeclareMathSymbol\Supset{\mathrel}{AMSa}{"63}
|
|
\DeclareMathSymbol\Cup{\mathbin}{AMSa}{"64}
|
|
\DeclareMathSymbol\Cap{\mathbin}{AMSa}{"65}
|
|
\DeclareMathSymbol\curlywedge{\mathbin}{AMSa}{"66}
|
|
\DeclareMathSymbol\curlyvee{\mathbin}{AMSa}{"67}
|
|
\DeclareMathSymbol\leftthreetimes{\mathbin}{AMSa}{"68}
|
|
\DeclareMathSymbol\rightthreetimes{\mathbin}{AMSa}{"69}
|
|
\DeclareMathSymbol\subseteqq{\mathrel}{AMSa}{"6A}
|
|
\DeclareMathSymbol\supseteqq{\mathrel}{AMSa}{"6B}
|
|
\DeclareMathSymbol\bumpeq{\mathrel}{AMSa}{"6C}
|
|
\DeclareMathSymbol\Bumpeq{\mathrel}{AMSa}{"6D}
|
|
\DeclareMathSymbol\lll{\mathrel}{AMSa}{"6E}
|
|
\DeclareMathSymbol\ggg{\mathrel}{AMSa}{"6F}
|
|
\DeclareMathDelimiter\ulcorner{4}{AMSa}{"70}{AMSa}{"70}
|
|
\DeclareMathDelimiter\urcorner{5}{AMSa}{"71}{AMSa}{"71}
|
|
\DeclareMathDelimiter\llcorner{4}{AMSa}{"78}{AMSa}{"78}
|
|
\DeclareMathDelimiter\lrcorner{5}{AMSa}{"79}{AMSa}{"79}
|
|
\xdef\yen {\noexpand\mathhexbox\hexnumber@\symAMSa 55 }
|
|
\xdef\checkmark{\noexpand\mathhexbox\hexnumber@\symAMSa 58 }
|
|
\xdef\circledR {\noexpand\mathhexbox\hexnumber@\symAMSa 72 }
|
|
\xdef\maltese {\noexpand\mathhexbox\hexnumber@\symAMSa 7A }
|
|
\DeclareMathSymbol\circledS{\mathord}{AMSa}{"73}
|
|
\DeclareMathSymbol\pitchfork{\mathrel}{AMSa}{"74}
|
|
\DeclareMathSymbol\dotplus{\mathbin}{AMSa}{"75}
|
|
\DeclareMathSymbol\backsim{\mathrel}{AMSa}{"76}
|
|
\DeclareMathSymbol\backsimeq{\mathrel}{AMSa}{"77}
|
|
\DeclareMathSymbol\complement{\mathord}{AMSa}{"7B}
|
|
\DeclareMathSymbol\intercal{\mathbin}{AMSa}{"7C}
|
|
\DeclareMathSymbol\circledcirc{\mathbin}{AMSa}{"7D}
|
|
\DeclareMathSymbol\circledast{\mathbin}{AMSa}{"7E}
|
|
\DeclareMathSymbol\circleddash{\mathbin}{AMSa}{"7F}
|
|
\DeclareMathSymbol\lvertneqq{\mathrel}{AMSb}{"00}
|
|
\DeclareMathSymbol\gvertneqq{\mathrel}{AMSb}{"01}
|
|
\DeclareMathSymbol\nleq{\mathrel}{AMSb}{"02}
|
|
\DeclareMathSymbol\ngeq{\mathrel}{AMSb}{"03}
|
|
\DeclareMathSymbol\nless{\mathrel}{AMSb}{"04}
|
|
\DeclareMathSymbol\ngtr{\mathrel}{AMSb}{"05}
|
|
\DeclareMathSymbol\nprec{\mathrel}{AMSb}{"06}
|
|
\DeclareMathSymbol\nsucc{\mathrel}{AMSb}{"07}
|
|
\DeclareMathSymbol\lneqq{\mathrel}{AMSb}{"08}
|
|
\DeclareMathSymbol\gneqq{\mathrel}{AMSb}{"09}
|
|
\DeclareMathSymbol\nleqslant{\mathrel}{AMSb}{"0A}
|
|
\DeclareMathSymbol\ngeqslant{\mathrel}{AMSb}{"0B}
|
|
\DeclareMathSymbol\lneq{\mathrel}{AMSb}{"0C}
|
|
\DeclareMathSymbol\gneq{\mathrel}{AMSb}{"0D}
|
|
\DeclareMathSymbol\npreceq{\mathrel}{AMSb}{"0E}
|
|
\DeclareMathSymbol\nsucceq{\mathrel}{AMSb}{"0F}
|
|
\DeclareMathSymbol\precnsim{\mathrel}{AMSb}{"10}
|
|
\DeclareMathSymbol\succnsim{\mathrel}{AMSb}{"11}
|
|
\DeclareMathSymbol\lnsim{\mathrel}{AMSb}{"12}
|
|
\DeclareMathSymbol\gnsim{\mathrel}{AMSb}{"13}
|
|
\DeclareMathSymbol\nleqq{\mathrel}{AMSb}{"14}
|
|
\DeclareMathSymbol\ngeqq{\mathrel}{AMSb}{"15}
|
|
\DeclareMathSymbol\precneqq{\mathrel}{AMSb}{"16}
|
|
\DeclareMathSymbol\succneqq{\mathrel}{AMSb}{"17}
|
|
\DeclareMathSymbol\precnapprox{\mathrel}{AMSb}{"18}
|
|
\DeclareMathSymbol\succnapprox{\mathrel}{AMSb}{"19}
|
|
\DeclareMathSymbol\lnapprox{\mathrel}{AMSb}{"1A}
|
|
\DeclareMathSymbol\gnapprox{\mathrel}{AMSb}{"1B}
|
|
\DeclareMathSymbol\nsim{\mathrel}{AMSb}{"1C}
|
|
\DeclareMathSymbol\ncong{\mathrel}{AMSb}{"1D}
|
|
\DeclareMathSymbol\varsubsetneq{\mathrel}{AMSb}{"20}
|
|
\DeclareMathSymbol\varsupsetneq{\mathrel}{AMSb}{"21}
|
|
\DeclareMathSymbol\nsubseteqq{\mathrel}{AMSb}{"22}
|
|
\DeclareMathSymbol\nsupseteqq{\mathrel}{AMSb}{"23}
|
|
\DeclareMathSymbol\subsetneqq{\mathrel}{AMSb}{"24}
|
|
\DeclareMathSymbol\supsetneqq{\mathrel}{AMSb}{"25}
|
|
\DeclareMathSymbol\varsubsetneqq{\mathrel}{AMSb}{"26}
|
|
\DeclareMathSymbol\varsupsetneqq{\mathrel}{AMSb}{"27}
|
|
\DeclareMathSymbol\subsetneq{\mathrel}{AMSb}{"28}
|
|
\DeclareMathSymbol\supsetneq{\mathrel}{AMSb}{"29}
|
|
\DeclareMathSymbol\nsubseteq{\mathrel}{AMSb}{"2A}
|
|
\DeclareMathSymbol\nsupseteq{\mathrel}{AMSb}{"2B}
|
|
\DeclareMathSymbol\nparallel{\mathrel}{AMSb}{"2C}
|
|
\DeclareMathSymbol\nmid{\mathrel}{AMSb}{"2D}
|
|
\DeclareMathSymbol\nshortmid{\mathrel}{AMSb}{"2E}
|
|
\DeclareMathSymbol\nshortparallel{\mathrel}{AMSb}{"2F}
|
|
\DeclareMathSymbol\nvdash{\mathrel}{AMSb}{"30}
|
|
\DeclareMathSymbol\nVdash{\mathrel}{AMSb}{"31}
|
|
\DeclareMathSymbol\nvDash{\mathrel}{AMSb}{"32}
|
|
\DeclareMathSymbol\nVDash{\mathrel}{AMSb}{"33}
|
|
\DeclareMathSymbol\ntrianglerighteq{\mathrel}{AMSb}{"34}
|
|
\DeclareMathSymbol\ntrianglelefteq{\mathrel}{AMSb}{"35}
|
|
\DeclareMathSymbol\ntriangleleft{\mathrel}{AMSb}{"36}
|
|
\DeclareMathSymbol\ntriangleright{\mathrel}{AMSb}{"37}
|
|
\DeclareMathSymbol\nleftarrow{\mathrel}{AMSb}{"38}
|
|
\DeclareMathSymbol\nrightarrow{\mathrel}{AMSb}{"39}
|
|
\DeclareMathSymbol\nLeftarrow{\mathrel}{AMSb}{"3A}
|
|
\DeclareMathSymbol\nRightarrow{\mathrel}{AMSb}{"3B}
|
|
\DeclareMathSymbol\nLeftrightarrow{\mathrel}{AMSb}{"3C}
|
|
\DeclareMathSymbol\nleftrightarrow{\mathrel}{AMSb}{"3D}
|
|
\DeclareMathSymbol\divideontimes{\mathbin}{AMSb}{"3E}
|
|
\DeclareMathSymbol\varnothing{\mathord}{AMSb}{"3F}
|
|
\DeclareMathSymbol\mho{\mathord}{AMSb}{"66}
|
|
\DeclareMathSymbol\eth{\mathord}{AMSb}{"67}
|
|
\DeclareMathSymbol\eqsim{\mathrel}{AMSb}{"68}
|
|
\DeclareMathSymbol\beth{\mathord}{AMSb}{"69}
|
|
\DeclareMathSymbol\gimel{\mathord}{AMSb}{"6A}
|
|
\DeclareMathSymbol\daleth{\mathord}{AMSb}{"6B}
|
|
\DeclareMathSymbol\lessdot{\mathrel}{AMSb}{"6C}
|
|
\DeclareMathSymbol\gtrdot{\mathrel}{AMSb}{"6D}
|
|
\DeclareMathSymbol\ltimes{\mathbin}{AMSb}{"6E}
|
|
\DeclareMathSymbol\rtimes{\mathbin}{AMSb}{"6F}
|
|
\DeclareMathSymbol\shortmid{\mathrel}{AMSb}{"70}
|
|
\DeclareMathSymbol\shortparallel{\mathrel}{AMSb}{"71}
|
|
\DeclareMathSymbol\smallsetminus{\mathbin}{AMSb}{"72}
|
|
\DeclareMathSymbol\thicksim{\mathrel}{AMSb}{"73}
|
|
\DeclareMathSymbol\thickapprox{\mathrel}{AMSb}{"74}
|
|
\DeclareMathSymbol\approxeq{\mathrel}{AMSb}{"75}
|
|
\DeclareMathSymbol\succapprox{\mathrel}{AMSb}{"76}
|
|
\DeclareMathSymbol\precapprox{\mathrel}{AMSb}{"77}
|
|
\DeclareMathSymbol\curvearrowleft{\mathrel}{AMSb}{"78}
|
|
\DeclareMathSymbol\curvearrowright{\mathrel}{AMSb}{"79}
|
|
\DeclareMathSymbol\digamma{\mathord}{AMSb}{"7A}
|
|
\DeclareMathSymbol\varkappa{\mathord}{AMSb}{"7B}
|
|
\DeclareMathSymbol\hslash{\mathord}{AMSb}{"7D}
|
|
\DeclareMathSymbol\hbar{\mathord}{AMSb}{"7E}
|
|
\DeclareMathSymbol\backepsilon{\mathrel}{AMSb}{"7F}
|
|
}
|
|
|
|
% A macro name has been chosen for each of the symbols in the AMS
|
|
% fonts. There is no need to load any other AMS package in order to
|
|
% access these symbols.
|
|
|
|
% >>> fuzz <<<
|
|
|
|
% This is the standard fuzz setup, apart from the oz style change to
|
|
% the setmcodes macro.
|
|
|
|
\def\@setmcodes#1#2#3{{\count0=#1 \count1=#3
|
|
\loop \global\mathcode\count0=\count1 \ifnum \count0<#2
|
|
\advance\count0 by1 \advance\count1 by1 \repeat}}
|
|
\@setmcodes{`A}{`Z}{"7\hexnumber@\symitalics41}%
|
|
\@setmcodes{`a}{`z}{"7\hexnumber@\symitalics61}%
|
|
|
|
\def~{\ifmmode\,\else\penalty\@M\ \fi}
|
|
|
|
\let\@mc=\mathchardef \mathcode`\;="8000 {\catcode`\;=\active
|
|
\gdef;{\semicolon\;}} \@mc\semicolon="603B
|
|
|
|
\def\strut@op#1{\mathop{\mathstrut{#1}}\nolimits}
|
|
|
|
\def\_{\leavevmode \ifmmode\else\kern0.06em\fi \vbox{\hrule
|
|
width0.5em}}
|
|
|
|
\mathcode`\"="8000 \def\@kwote#1"{\hbox{\it #1}} {\catcode`\"=\active
|
|
\global\let"=\@kwote}
|
|
|
|
\mathchardef\spot="320F
|
|
\mathcode`\@=\spot
|
|
\mathcode`\|=\mid
|
|
|
|
\def\bsup#1 \esup{^{#1}}
|
|
|
|
\def\inrel#1{\mathrel{\underline{#1}}}
|
|
|
|
\newdimen\zedindent \zedindent=\leftmargini%
|
|
\newdimen\zedleftsep \zedleftsep=1em%
|
|
\newdimen\zedtab \zedtab=2em%
|
|
\newdimen\zedbar \zedbar=6em%
|
|
\newskip\zedskip \zedskip=0.5\baselineskip plus0.333333\baselineskip%
|
|
minus0.333333\baselineskip%
|
|
\def\zedsize{}%
|
|
|
|
\newcount\interzedlinepenalty \interzedlinepenalty=10000%
|
|
\newcount\preboxpenalty \preboxpenalty=0%
|
|
\newif\ifzt@p \zt@pfalse%
|
|
|
|
\def\@jot{0.5\zedskip}
|
|
|
|
\def\@narrow{\advance\linewidth by-\zedindent}
|
|
|
|
\def\@zrulefill{\leaders\hrule height\arrayrulewidth\hfill}
|
|
|
|
\def\@topline#1{\hbox to\linewidth{%
|
|
\vrule height\arrayrulewidth width\arrayrulewidth
|
|
\vrule height0pt depth\@jot width0pt
|
|
\hbox to\zedleftsep{\@zrulefill\thinspace}%
|
|
#1\thinspace\@zrulefill}}
|
|
|
|
\def\@zedline{\omit \vrule height\arrayrulewidth width\linewidth \cr}
|
|
|
|
\def\where{\@zskip\@jot
|
|
\omit \vrule height\arrayrulewidth width\zedbar \cr
|
|
\@zskip\@jot}
|
|
|
|
\def\also{\crcr \noalign{\penalty\interdisplaylinepenalty
|
|
\vskip\zedskip}}
|
|
\def\@zskip#1{\crcr \omit \vrule height#1 width\arrayrulewidth \cr}
|
|
\def\@zlign{\tabskip\z@skip\everycr{}}
|
|
|
|
\let\tie=\t
|
|
\def\t#1{\afterassignment\@t\count@=#1}
|
|
\def\@t{\hskip\count@\zedtab}
|
|
|
|
\def\@setzsize{\let\next=\@nomath\def\@nomath##1{}%
|
|
\skip0=\abovedisplayskip\skip1=\belowdisplayskip
|
|
\zedsize \let\@nomath=\next
|
|
\abovedisplayskip=\skip0\belowdisplayskip=\skip1}
|
|
|
|
\def\@zed{\ifvmode\@zleavevmode\fi
|
|
$$\global\zt@ptrue
|
|
\@setzsize
|
|
\advance\linewidth by-\zedindent
|
|
\advance\displayindent by\zedindent
|
|
\def\\{\crcr}% Must have \def and not \let for nested alignments.
|
|
\let\par=\relax
|
|
\tabskip=0pt}
|
|
|
|
\def\@znoskip{\offinterlineskip
|
|
\everycr={\noalign{\ifzt@p \global\zt@pfalse
|
|
\ifdim\prevdepth>-1000pt \skip0=\normalbaselineskip
|
|
\advance\skip0by-\prevdepth \advance\skip0by-\ht\strutbox
|
|
\ifdim\skip0<\normallineskiplimit \vskip\normallineskip
|
|
\else \vskip\skip0 \fi\fi
|
|
\else \penalty\interzedlinepenalty \fi}}}
|
|
|
|
\def\zed{\@zed\@znoskip\halign to\linewidth\bgroup
|
|
\strut$\@zlign##$\hfil \tabskip=0pt plus1fil\cr}
|
|
\def\endzed{\crcr\egroup$$\global\@ignoretrue}
|
|
|
|
\def\[{\begingroup\zed}
|
|
\def\]{\crcr\egroup$$\endgroup\ignorespaces}
|
|
|
|
\def\axdef{\def\also{\@zskip\zedskip}%
|
|
\predisplaypenalty=\preboxpenalty
|
|
\@zed\@znoskip \halign to\linewidth\bgroup
|
|
\strut \vrule width\arrayrulewidth \hskip\zedleftsep
|
|
$\@zlign##$\hfil \tabskip=0pt plus1fil\cr}
|
|
\let\endaxdef=\endzed
|
|
|
|
\def\schema#1{\@ifnextchar[{\@schema{#1}}{\@nschema{#1}}}
|
|
\def\@schema#1[#2]{\@nschema{#1[#2]}}
|
|
\def\@nschema#1{\@narrow\axdef \omit\@topline{$\strut#1$}\cr}
|
|
\def\endschema{\@zskip\@jot \@zedline \endzed}
|
|
|
|
\@namedef{schema*}{\@narrow\axdef \@zedline \@zskip\@jot}
|
|
\expandafter\let\csname endschema*\endcsname=\endschema
|
|
|
|
\def\gendef{\@ifnextchar[{\@gendef}{\@ngendef}}
|
|
\def\@gendef[#1]{\@narrow\axdef \omit \setbox0=\hbox{$\strut[#1]$}%
|
|
\rlap{\raise\doublerulesep\@topline{\hskip\wd0}}\@topline{\box0}\cr}
|
|
\def\@ngendef{\@narrow\axdef \@zedline \omit \hbox to\linewidth{\vrule
|
|
height\doublerulesep width\arrayrulewidth \@zrulefill}\cr
|
|
\@zskip\@jot
|
|
}
|
|
\let\endgendef=\endschema
|
|
|
|
\def\argue{\@zed \interzedlinepenalty=\interdisplaylinepenalty
|
|
\openup\@jot \halign to\linewidth\bgroup
|
|
\strut$\@zlign##$\hfil \tabskip=0pt plus1fil
|
|
&\hbox to0pt{\hss[\@zlign##\unskip]}\tabskip=0pt\cr
|
|
\noalign{\vskip-\@jot}}
|
|
\let\endargue=\endzed
|
|
|
|
\def\because#1{\noalign{\vskip-\jot}\cr}
|
|
|
|
\def\syntax{\@zed\@znoskip \halign\bgroup
|
|
\strut$\@zlign##$\hfil &\hfil$\@zlign{}##{}$\hfil
|
|
&$\@zlign##$\hfil\cr}
|
|
\let\endsyntax=\endzed
|
|
|
|
\def\infrule{\@zed\@znoskip \halign\bgroup
|
|
\strut\quad$\@zlign##$\quad\hfil&\quad\@zlign##\hfil\cr}
|
|
\let\endinfrule=\endzed
|
|
|
|
\def\derive{\crcr \noalign{\vskip\@jot} \omit\@zrulefill
|
|
\@ifnextchar[{\@xderive}{\@yderive}}
|
|
\def\@xderive[#1]{&$\smash{\lower 0.5ex\hbox{$[\;#1\;]$}}$\cr
|
|
\noalign{\vskip\@jot}}
|
|
\def\@yderive{\cr \noalign{\vskip\@jot}}
|
|
|
|
\def\@zleavevmode{\if@inlabel \indent
|
|
\else\if@noskipsec \indent
|
|
\else\if@nobreak \global\@nobreakfalse
|
|
\everypar={}\abovedisplayskip=0pt\fi
|
|
{\parskip=0pt\noindent}\fi\fi}
|
|
|
|
% From now on, we must depart from the text of fuzz, as we do not have
|
|
% the oxsy symbol font at our disposal. We must choose symbols from
|
|
% the AMS or Lucida fonts to compensate for our loss. Sadly, this
|
|
% means a number of conditional definitions. I have tried to maintain
|
|
% the order of definitions used in fuzz2.sty, rather than factor the
|
|
% font-dependent ones out.
|
|
|
|
\let\xlambda=\lambda \let\xmu=\mu
|
|
\let\xforall=\forall \let\xexists=\exists
|
|
|
|
\def \bind {\mathrel{\leadsto}}
|
|
\def \bindsto {\mathrel{\leadsto}}
|
|
|
|
\@ifpackageloaded{lucbr}{%
|
|
\def \lblot {{\langle}\mkern -5mu{|}}
|
|
\def \rblot {{|}\mkern -5mu{\rangle}}
|
|
}{%
|
|
\def \lblot {{\langle}\mkern -3.5mu{|}}
|
|
\def \rblot {{|}\mkern -3.5mu{\rangle}}
|
|
}
|
|
|
|
\let\lbind=\lblot
|
|
\let\rbind=\rblot
|
|
|
|
\def \defs {\mathrel{\widehat=}}
|
|
\def \power {\strut@op{\bbold P}}
|
|
\let \cross \times
|
|
\def \lambda {\strut@op{\xlambda}}
|
|
\def \mu {\strut@op{\xmu}}
|
|
\@ifpackageloaded{lucbr}{}{
|
|
\def\ldbrack{{[}\mkern-2mu{[}}
|
|
\def\rdbrack{{]}\mkern-2mu{]}}}
|
|
\let \lbag \ldbrack
|
|
\let \rbag \rdbrack
|
|
\def \lnot {\neg\;}
|
|
\def \land {\mathrel{\wedge}}
|
|
\def \lor {\mathrel{\vee}}
|
|
\let \implies \Rightarrow
|
|
\let \iff \Leftrightarrow
|
|
\def \forall {\strut@op{\xforall}}
|
|
\def \exists {\strut@op{\xexists}}
|
|
\def \hide {\mathrel{\backslash}}
|
|
\@ifpackageloaded{lucbr}{%
|
|
\DeclareMathSymbol{\project}{3}{arrows}{"75}}{%
|
|
\DeclareMathSymbol{\project}{\mathrel}{AMSa}{"16}}
|
|
\def \pre {{\mathrm{pre}}\;}
|
|
\def \semi {\mathrel{\comp}}
|
|
\def \ldata {\langle\!\langle}
|
|
\def \rdata {\rangle\!\rangle}
|
|
\let \shows \vdash
|
|
\def \pipe {\mathord>\!\!\mathord>}
|
|
\def \LET {{\mathbf{let}}\;}
|
|
\def \IF {{\mathbf{if}}\;}
|
|
\def \THEN {\mathrel{\mathbf{then}}}
|
|
\def \ELSE {\mathrel{\mathbf{else}}}
|
|
|
|
\let \rel \leftrightarrow
|
|
\def \dom {\mathop{\mathrm{dom}}}
|
|
\def \ran {\mathop{\mathrm{ran}}}
|
|
\def \id {\mathop{\mathrm{id}}}
|
|
\@ifpackageloaded{lucbr}{%
|
|
\def\comp{\mathrel{\raise 0.66ex\hbox{\oalign{\hfil%
|
|
$\scriptscriptstyle\mathsf{o}$\hfil%
|
|
\cr\hfil$\scriptscriptstyle\mathsf{9}$\hfil}}}}
|
|
\DeclareMathSymbol{\dres}{\mathbin}{letters}{"2F}
|
|
\DeclareMathSymbol{\rres}{\mathbin}{letters}{"2E}}{%
|
|
\def\comp{\mathbin{\raise 0.6ex\hbox{\small\oalign{\hfil%
|
|
$\scriptscriptstyle\mathrm{o}$\hfil%
|
|
\cr\hfil$\scriptscriptstyle\mathrm{9}$\hfil}}}}
|
|
\DeclareMathSymbol{\dres}{\mathbin}{AMSa}{"43}
|
|
\DeclareMathSymbol{\rres}{\mathbin}{AMSa}{"42}
|
|
}
|
|
\def \ndres {\mathbin{\rlap{\raise.05ex\hbox{$-$}}{\dres}}}
|
|
\def \nrres {\mathbin{\rlap{\raise.05ex\hbox{$-$}}{\rres}}}
|
|
\def \inv {^\sim}
|
|
\def \limg {(\!|}
|
|
\def \rimg {|\!)}
|
|
|
|
\def\@p#1{\mathrel{\ooalign{\hfil$\mapstochar\mkern
|
|
5mu$\hfil\cr$#1$}}}
|
|
\def \pfun {\@p\fun}
|
|
\let \fun \rightarrow
|
|
\let \inj \rightarrowtail
|
|
\@ifpackageloaded{lucbr}{%
|
|
\DeclareMathSymbol{\pinj}{3}{arrows}{"92}
|
|
\def \surj {\mathrel{\ooalign{$\fun$\hfil\cr$\mkern3mu\fun$}}}
|
|
\def \bij {\mathrel{\ooalign{$\inj$\hfil\cr$\mkern4mu\fun$}}}}{%
|
|
\def \pinj {\@p\inj}
|
|
\def \surj {\mathrel{\ooalign{$\fun$\hfil\cr$\mkern4mu\fun$}}}
|
|
\def \bij {\mathrel{\ooalign{$\inj$\hfil\cr$\mkern5mu\fun$}}}}
|
|
\def \psurj {\@p\surj}
|
|
\def \nat {{\bbold N}}
|
|
\def \num {{\bbold Z}}
|
|
\def \div {\mathbin{\mathsf{div}}}
|
|
\def \mod {\mathbin{\mathsf{mod}}}
|
|
\def \upto {\mathbin{\ldotp\ldotp}}
|
|
\def \plus {^+}
|
|
\def \star {^*}
|
|
\def \finset {\strut@op{{\bbold F}}}
|
|
\def\@f#1{\mathrel{\ooalign{\hfil$\mapstochar\mkern 3mu
|
|
\mapstochar\mkern 5mu$\hfil\cr$#1$}}}
|
|
\def \ffun {\@f\fun}
|
|
\def \finj {\@f\inj}
|
|
\def \seq {\mathop{\mathrm{seq}}}
|
|
\def \iseq {\mathop{\mathrm{iseq}}}
|
|
\def \cat {\mathbin{\raise 0.8ex\hbox{$\smallfrown$}}}
|
|
\def \filter {\mathbin{\project}}
|
|
\def \dcat {\mathop{\cat/}}
|
|
\def \bag {\mathop{\mathrm{bag}}}
|
|
\def \bcount {\mathbin{\sharp}}
|
|
\def \inbag {\mathrel{\mathrm{in}}}
|
|
\let \subbageq \sqsubseteq
|
|
\def \disjoint {{\mathsf{disjoint}}\;}
|
|
\def \partition {\mathrel{\mathsf{partition}}}
|
|
\def \prefix {\mathrel{\mathsf{prefix}}}
|
|
\def \suffix {\mathrel{\mathsf{suffix}}}
|
|
\def \inseq {\mathrel{\mathsf{in}}}
|
|
\def \extract {\mathrel{\upharpoonleft}}
|
|
|
|
\def \uminus@sym{\setbox0=\hbox{$\cup$}\rlap{\hbox
|
|
to\wd0{\hss\raise0.3ex\hbox{$\scriptscriptstyle{-}$}\hss}}\box0}
|
|
\def \uminus {\mathrel{\uminus@sym}}
|
|
|
|
% If you are not using csp notation, then feel free to uncomment the
|
|
% following:
|
|
|
|
% \endinput
|
|
|
|
|
|
% >>> csp <<<
|
|
|
|
% We require the following mathematical symbols and aliases when
|
|
% specifying and reasoning about the behaviour of CSP processes.
|
|
|
|
\let \Inter \bigcap
|
|
\let \Land \bigwedge
|
|
\let \Lor \bigvee
|
|
\let \Union \bigcup
|
|
\let \inter \cap
|
|
\def \nin {\not\in}
|
|
\let \union \cup
|
|
\def \rat {{\bbold Q}}
|
|
\def \real {{\bbold R}}
|
|
\def \cnt {\mathrel{\downarrow}}
|
|
\def \data {\mathrel{\Downarrow}}
|
|
\def \during {\mathrel{\uparrow}}
|
|
\def \nil {\trace{}}
|
|
\def \clause {\Bigm{|}}
|
|
\def \contig {\mathrel{\mathbf{in}}}
|
|
\def \trace#1{\langle #1\rangle}
|
|
\def \set#1{\{#1\}}
|
|
\let \ge \geqslant
|
|
\let \le \leqslant
|
|
\@ifpackageloaded{lucbr}{%
|
|
\DeclareMathSymbol{\tick}{0}{arrows}{"AC}
|
|
}{
|
|
\DeclareMathSymbol{\tick}{0}{AMSa}{"58}
|
|
}
|
|
|
|
\let \subseq \preccurlyeq
|
|
|
|
% We define a number of useful macros for projecting information from
|
|
% a timed or untimed observation.
|
|
|
|
\def \Begin {\strut@op{\mathrm{begin}}}
|
|
\def \End {\strut@op{\mathrm{end}}}
|
|
\def \Head {\strut@op{\mathrm{head}}}
|
|
\def \First {\strut@op{\mathrm{first}}}
|
|
\def \Tail {\strut@op{\mathrm{tail}}}
|
|
\def \Front {\strut@op{\mathrm{front}}}
|
|
\def \Last {\strut@op{\mathrm{last}}}
|
|
\def \Times {\strut@op{\mathrm{times}}}
|
|
\def \Events {\strut@op{\mathrm{events}}}
|
|
\def \Reverse {\strut@op{\mathrm{reverse}}}
|
|
|
|
% We define a number of useful macros for specification purposes.
|
|
|
|
\def\@PreMacro#1{\mathop{\mbox{\sffamily #1}}}
|
|
\def\@InMacro#1{\mathrel{\mbox{\sffamily #1}}}
|
|
\def\@@InMacro#1^#2{\;\mbox{\sffamily #1}^{#2}\;}
|
|
\def\@SupInMacro#1{\@ifnextchar^{\@@InMacro{#1}}{\@InMacro{#1}}}
|
|
|
|
\def \mInternal {\@PreMacro{internal}}
|
|
\def \mRef {\@InMacro{ref}}
|
|
\def \mAt {\@SupInMacro{at}}
|
|
\def \mLive {\@SupInMacro{live}}
|
|
\def \mOpen {\@SupInMacro{open}}
|
|
\def \mFrom {\@InMacro{from}}
|
|
\def \mUntil {\@InMacro{until}}
|
|
\def \mLiveFrom {\@InMacro{live from}}
|
|
\def \mOpenFrom {\@InMacro{open from}}
|
|
\def \mNameOfLast {\@InMacro{name of last}}
|
|
\def \mBefore {\@InMacro{before}}
|
|
\def \mAfter {\@InMacro{after}}
|
|
\def \mTimeOfLast {\@InMacro{time of last}}
|
|
|
|
% We define a conditional syntax for processes. This is an expression
|
|
% conditional, and should not be confused with the command conditional
|
|
% of programming languages. That is, if the boolean condition is
|
|
% true, then the expression under consideration is equal to the
|
|
% expression in the first branch.
|
|
|
|
\def \If {\mathrel{\hbox{if}}}
|
|
\def \Then {\mathrel{\hbox{then}}}
|
|
\def \Otherwise {\mathrel{\hbox{otherwise}}}
|
|
\def \Else {\mathrel{\hbox{else}}}
|
|
\def \Fi {\mathrel{\hbox{fi}}}
|
|
|
|
% In defining macros to set the syntax of real-time CSP, some symbols
|
|
% are used more than once. For ease of understanding, we define these
|
|
% symbols as internal macros.
|
|
|
|
\def \csp@at {\hbox{\it @}}
|
|
\def \csp@bar {\mathord{\mid}}
|
|
\def \csp@chain {\mathord{\gg}}
|
|
\def \csp@ext {\mathord{\Box}}
|
|
\def \csp@int {\mathord{\sqcap}}
|
|
\def \csp@par {\mathord{\xparallel}}
|
|
|
|
\def \csp@interrupt {\mathord{\triangle}}
|
|
\def \csp@timeout {\mathord{\triangleright}}
|
|
|
|
\@ifpackageloaded{lucbr}{%
|
|
\def \csp@leftpar {\csp@bar\mkern -3mu{[}}
|
|
\def \csp@rightpar {{]}\mkern -3mu\csp@bar}
|
|
\def \csp@interleave {\csp@bar\mkern-2mu\csp@bar\mkern-2mu\csp@bar}
|
|
\DeclareMathSymbol{\csp@transfer}{0}{arrows}{"93}
|
|
}{
|
|
\def \csp@leftpar {\csp@bar{[}}
|
|
\def \csp@rightpar {{]}\csp@bar}
|
|
\def \csp@interleave {\csp@bar\csp@bar\csp@bar}
|
|
\def \csp@transfer {\mathord{\swarrow}}
|
|
}
|
|
|
|
% We define a quick hack to magnify the indexed forms of the choice
|
|
% and parallel composition operators. It seems to work okay.
|
|
|
|
\def\indexed@op#1{%
|
|
\mathop{\vcenter{\hbox{\Large$\mathstrut#1$}}}\nolimits}
|
|
|
|
% We are now ready to define the macros used for setting the syntax of
|
|
% real-time CSP. Notice that the LaTeX version of \parallel *must* be
|
|
% saved as \xparallel at this point.
|
|
|
|
\let\xparallel \parallel
|
|
|
|
\def \Bottom {\mathord{\perp}}
|
|
\def \Chaos {{Chaos}}
|
|
\def \Stop {{Stop}}
|
|
\def \Skip {{Skip}}
|
|
\def \Wait {\strut@op{{Wait}}}
|
|
\def \at {\mathord{\csp@at}}
|
|
\def \then {\@ifnextchar[{\@then}{\mathrel{\rightarrow}}}
|
|
\def \@then[#1]{\buildrel #1\over\rightarrow}
|
|
\def \barchoice {\mathrel{\csp@bar}}
|
|
\def \intchoice {\mathrel{\csp@int}}
|
|
\def \extchoice {\mathrel{\csp@ext}}
|
|
\def \interrupt {\mathrel{\csp@interrupt}}
|
|
\def \timeout {\@ifnextchar[{\@timeout}{\mathrel{\csp@timeout}}}
|
|
\def \@timeout[#1]{\mathrel{\csp@timeout\{#1\}}}
|
|
\def \transfer {\@ifnextchar[{\@transfer}{\mathrel{\csp@transfer}}}
|
|
\def \@transfer[#1]{\mathrel{\csp@transfer\{#1\}}}
|
|
\def \parallel {\@ifnextchar[{\@parallel}{\mathrel{\csp@par}}}
|
|
\def \@parallel[#1]{\@ifnextchar[{\@@parallel[#1]}{%
|
|
{\mathrel{\,\csp@leftpar\,{#1}\,\csp@rightpar\,}}}}
|
|
\def \@@parallel[#1][#2]{\mathrel{\,\csp@leftpar\,{#1}\,
|
|
\csp@bar\,{#2}\,\csp@rightpar\,}}
|
|
\def \interleave{\mathrel{\csp@interleave}}
|
|
\def \chain {\mathrel{\csp@chain}}
|
|
\def \Intchoice {\indexed@op{\csp@int}}
|
|
\def \Extchoice {\indexed@op{\csp@ext}}
|
|
\def \Parallel {\indexed@op{\csp@par}}
|
|
\def \Interleave{\indexed@op{\csp@interleave}}
|
|
|
|
\def \@semapp[#1]{\,\ldbrack #1 \rdbrack}
|
|
\def \sem@fun#1{{#1}\@ifnextchar[{\@semapp}{}}
|
|
\def \Semantics {\sem@fun{semantics}}
|
|
\def \Traces {\sem@fun{traces}}
|
|
\def \Failures {\sem@fun{failures}}
|
|
\def \TimedTraces {\sem@fun{timed\,traces}}
|
|
\def \TimedFailures {\sem@fun{timed\,failures}}
|
|
\def \Divergences {\sem@fun{divergences}}
|
|
\def \Infinites {\sem@fun{infinites}}
|
|
|
|
\def \lessdet{\@ifnextchar[{\@lessdet}{\mathrel\sqsubseteq}}
|
|
\def \@lessdet[#1]{\@ifnextchar[{\lessdet@two[#1]}{\lessdet@one[#1]}}
|
|
\def \lessdet@one[#1]{\mathrel{\sqsubseteq_{#1}}}
|
|
\def \lessdet@two[#1][#2]{%
|
|
\mathrel{{\vphantom{\sqsubseteq}}_{#1}{\sqsubseteq}_{#2}}}
|
|
|
|
\let \refinedby \lessdet
|
|
|
|
\def \sat {\mathrel{\mbox{\bf sat}}}
|
|
\def \semb#1{{\ldbrack #1 \rdbrack}}
|
|
|
|
% The following symbols have been used by researchers at Oxford to
|
|
% denote the various semantic models, spaces, and functions.
|
|
|
|
\def\UT{UT} \def\TE{TE} \def\TT{TT}
|
|
\def\RT{RT} \def\TR{TR} \def\TI{TI}
|
|
\def\TTi{\TT^i} \def\TTw{\TT^\omega} \def\TRu{\TR^u}
|
|
|
|
\def\@obsmodel#1{{\cal{O}}_{#1}}
|
|
\def\@obsspace#1{{\cal{S}}_{#1}}
|
|
\def\@semmodel#1{{\cal{M}}_{#1}}
|
|
\def\@semfunct#1{{\cal{F}}_{#1}\@ifnextchar[{\@semapp}{}}
|
|
|
|
\def\Out {\@obsmodel{UT}} \def\Sut {\@obsspace{UT}}
|
|
\def\Ouf {\@obsmodel{UF}} \def\Suf {\@obsspace{UF}}
|
|
\def\Oufd {\@obsmodel{UFD}} \def\Sufd {\@obsspace{UFD}}
|
|
\def\Otf {\@obsmodel{TF}} \def\Stf {\@obsspace{TF}}
|
|
\def\Otfs {\@obsmodel{TFS}} \def\Stfs {\@obsspace{TFS}}
|
|
\def\Oti {\@obsmodel{TI}} \def\Sti {\@obsspace{TI}}
|
|
|
|
\def\Mut {\@semmodel{UT}} \def\Fut {\@semfunct{UT}}
|
|
\def\Muf {\@semmodel{UF}} \def\Fuf {\@semfunct{UF}}
|
|
\def\Mufd {\@semmodel{UFD}} \def\Fufd {\@semfunct{UFD}}
|
|
\def\Mtf {\@semmodel{TF}} \def\Ftf {\@semfunct{TF}}
|
|
\def\Mtfs {\@semmodel{TFS}} \def\Ftfs {\@semfunct{TFS}}
|
|
\def\Mti {\@semmodel{TI}} \def\Fti {\@semfunct{TI}}
|
|
|
|
\endinput
|