oz.sty 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965
  1. %%
  2. %% This is file `oz.sty',
  3. %% generated with the docstrip utility.
  4. %%
  5. %% The original source files were:
  6. %%
  7. %% oz.dtx (with options: `package')
  8. %% Copyright (C) 1993 Sebastian Rahtz. All rights reserved.
  9. %% This is a generated file for Object Z. Permission is granted to to
  10. %% customize the declarations in this file to serve the needs of your
  11. %% installation. However, no permission is granted to distribute a
  12. %% modified version of this file under its original name.
  13. %%
  14. \def\fileversion{2.46}
  15. \def\filedate{1999/05/24}
  16. \def\docdate {1994/08/13}
  17. %% File: oz.dtx Copyright (C) 1995-1999 Sebastian Rahtz
  18. \NeedsTeXFormat{LaTeX2e}[1994/12/01]
  19. \ProvidesPackage{oz}[\filedate\space\fileversion\space Object Z macros]
  20. \message{`Object-Z Macros' \fileversion\space <\filedate>}
  21. \RequirePackage{calc}
  22. \def\oz@parbox{\@ifnextchar [{\oz@iparbox}{\oz@iparbox[c]}}
  23. \long\def\oz@iparbox[#1]#2#3{\leavevmode \@pboxswfalse
  24. \if #1b\vbox
  25. \else \if #1t\vtop
  26. \else \vbox
  27. %\ifmmode \vcenter \else \@pboxswtrue $\vcenter \fi
  28. \fi
  29. \fi
  30. {\hsize #2\@parboxrestore #3}
  31. %\if@pboxsw \m@th$\fi
  32. }
  33. \@ifpackageloaded{lucbr}{}{%
  34. \DeclareMathVersion{oz}
  35. \SetMathAlphabet{\mathrm}{oz}{\encodingdefault}{\rmdefault}{m}{n}%
  36. \SetMathAlphabet{\mathbf}{oz}{\encodingdefault}{\rmdefault}{bx}{n}%
  37. \SetMathAlphabet{\mathsf}{oz}{\encodingdefault}{\sfdefault}{m}{n}%
  38. \DeclareSymbolFont{italics}{\encodingdefault}{\rmdefault}{m}{it}%
  39. \DeclareSymbolFontAlphabet{\mathrm}{operators}
  40. \DeclareSymbolFontAlphabet{\mathit}{letters}
  41. \DeclareSymbolFontAlphabet{\mathcal}{symbols}
  42. \DeclareSymbolFontAlphabet{\ozit}{italics}
  43. \DeclareSymbolFont{lasy}{U}{lasy}{m}{n}
  44. \DeclareSymbolFont{AMSa}{U}{msa}{m}{n}
  45. \DeclareSymbolFont{AMSb}{U}{msb}{m}{n}
  46. \let\mho\undefined
  47. \let\Join\undefined
  48. \let\Box\undefined
  49. \let\Diamond\undefined
  50. \let\leadsto\undefined
  51. \let\sqsubset\undefined
  52. \let\sqsupset\undefined
  53. \let\lhd\undefined
  54. \let\unlhd\undefined
  55. \let\rhd\undefined
  56. \let\unrhd\undefined
  57. \DeclareMathSymbol{\mho}{\mathord}{lasy}{"30}
  58. \DeclareMathSymbol{\Join}{\mathrel}{lasy}{"31}
  59. \DeclareMathSymbol{\Box}{\mathord}{lasy}{"32}
  60. \DeclareMathSymbol{\Diamond}{\mathord}{lasy}{"33}
  61. \DeclareMathSymbol{\leadsto}{\mathrel}{lasy}{"3B}
  62. \DeclareMathSymbol{\sqsubset}{\mathrel}{lasy}{"3C}
  63. \DeclareMathSymbol{\sqsupset}{\mathrel}{lasy}{"3D}
  64. \DeclareMathSymbol{\lhd}{\mathrel}{lasy}{"01}
  65. \DeclareMathSymbol{\unlhd}{\mathrel}{lasy}{"02}
  66. \DeclareMathSymbol{\rhd}{\mathrel}{lasy}{"03}
  67. \DeclareMathSymbol{\unrhd}{\mathrel}{lasy}{"04}
  68. \DeclareSymbolFontAlphabet{\mathbb}{AMSb}
  69. \DeclareSymbolFontAlphabet{\bbold}{AMSb}
  70. \mathversion{oz}
  71. }
  72. \newbox\strutbox@
  73. \def\strut@{\copy\strutbox@}
  74. \addto@hook\every@math@size{%
  75. \setbox\strutbox@\hbox{\lower.5\normallineskiplimit
  76. \vbox{\kern-\normallineskiplimit\copy\strutbox}}}
  77. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  78. %% NOTE: bBigg is used to define the font size for zbig etc
  79. %% however it defines these as fixed sizes.
  80. %% The 209 definitions set the font size dependent on the
  81. %% current point size.
  82. %%
  83. %% Hence in 209 you can do \Large\cnj and the symbol is bigger
  84. %% But in 2e it remains a fixed size!
  85. %%
  86. %% This is a problem for the Object-Z operators as originally
  87. %% defined in the 209 oz.sty `96 file.
  88. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  89. \def\bBigg@#1#2{%
  90. \mbox{\ifcase#1\or\large\or\Large\or\LARGE\or\small\or\footnotesize\fi
  91. $#2$}\nulldelimiterspace\z@ \m@th}
  92. \addto@hook\every@math@size{\setbox\z@\vbox{\hbox{$($}\kern\z@}%
  93. \big@size 1.2\ht\z@}
  94. \newdimen\big@size
  95. \def\zBIG{\bBigg@{3}}
  96. \def\zBig{\bBigg@{2}}
  97. \def\zbig{\bBigg@{1}}
  98. \def\zsmall{\bBigg@{4}}
  99. \def\zSmall{\bBigg@{5}}
  100. \def\String#1{\hbox{`\texttt{#1}'}}
  101. \def\STRING#1{\hbox{``\texttt{#1}''}}
  102. \def\infix#1{\z@rel{{\underline{#1}}}}
  103. \def\word#1{\z@op{#1}}
  104. \def\keyword#1{\z@op{\mbox{\textrm{#1}}}}
  105. \def\boldword#1{\z@op{\mbox{\textbf{#1}}}}
  106. \def\underword#1{\z@op{{\underline{#1}}}}
  107. \def\underkeyword#1{\z@op{{\underline{\mbox{\textrm{#1}}}}}}
  108. \def\underboldword#1{\z@op{{\underline{\mbox{\textbf{#1}}}}}}
  109. \def\@setmcodes#1#2#3{{\count0=#1 \count1=#3
  110. \loop \global\mathcode\count0=\count1 \ifnum \count0<#2
  111. \advance\count0 by1 \advance\count1 by1 \repeat}}
  112. \@setmcodes{`A}{`Z}{"7\hexnumber@\symitalics41}
  113. \@setmcodes{`a}{`z}{"7\hexnumber@\symitalics61}
  114. \let\@mc=\mathchardef
  115. \mathcode`\;="8000 % Makes ; active in math mode
  116. {\catcode`\;=\active \gdef;{\semicolon\;}}
  117. \@mc\semicolon="603B
  118. \def\z@op#1{\mathop{\mathstrut{#1}}\nolimits}
  119. \def\z@bin#1{\mathbin{\mathstrut{#1}}}
  120. \def\z@rel#1{\mathrel{\mathstrut{#1}}}
  121. \def\z@bigop#1{\z@op{\zbig{#1}}}
  122. \def\z@bigbin#1{\z@bin{\zbig{#1}}}
  123. \def\z@bigrel#1{\z@rel{\zbig{#1}}}
  124. \def\z@Bigop#1{\z@op{\zBig{#1}}}
  125. \def\z@Bigbin#1{\z@bin{\zBig{#1}}}
  126. \def\z@Bigrel#1{\z@rel{\zBig{#1}}}
  127. \def\z@smallop#1{\z@op{\zsmall{#1}}}
  128. \def\z@smallbin#1{\z@bin{\zsmall{#1}}}
  129. \def\z@smallrel#1{\z@rel{\zsmall{#1}}}
  130. \def\_{\leavevmode \vbox{\hrule width0.4em}}
  131. \let\xforall=\forall
  132. \let\xexists=\exists
  133. \let\xlambda=\lambda
  134. \let\xmu=\mu
  135. \let\xsucc\succ
  136. \let\xprec\prec
  137. \let\dotaccent=\dot
  138. \let\sectionsymbol=\S
  139. \let\integral=\int
  140. \let\product\prod
  141. \def\p#1{\mathrel{\ooalign{\hfil$\mapstochar\mkern 5mu$\hfil\cr$#1$}}}
  142. \def\f#1{\mathrel{\ooalign{\hfil
  143. $\mapstochar\mkern 3mu\mapstochar\mkern 5mu$\hfil\cr$#1$}}}
  144. \@ifpackageloaded{lucbr}{%
  145. \DeclareMathSymbol{\doublebarwedge}{\mathbin}{symbols}{"D4}
  146. \DeclareMathSymbol{\lll}{\mathrel}{letters}{"DE}
  147. \DeclareMathSymbol{\ggg}{\mathrel}{letters}{"DF}
  148. \DeclareMathSymbol{\eth}{\mathrel}{operators}{"F0}
  149. }{%
  150. \let\rightleftharpoons\undefined
  151. \let\angle\undefined
  152. \DeclareMathSymbol\boxdot{\mathbin}{AMSa}{"00}
  153. \DeclareMathSymbol\boxplus{\mathbin}{AMSa}{"01}
  154. \DeclareMathSymbol\boxtimes{\mathbin}{AMSa}{"02}
  155. \DeclareMathSymbol\square{\mathord}{AMSa}{"03}
  156. \DeclareMathSymbol\blacksquare{\mathord}{AMSa}{"04}
  157. \DeclareMathSymbol\centerdot{\mathbin}{AMSa}{"05}
  158. \DeclareMathSymbol\lozenge{\mathord}{AMSa}{"06}
  159. \DeclareMathSymbol\blacklozenge{\mathord}{AMSa}{"07}
  160. \DeclareMathSymbol\circlearrowright{\mathrel}{AMSa}{"08}
  161. \DeclareMathSymbol\circlearrowleft{\mathrel}{AMSa}{"09}
  162. \DeclareMathSymbol\rightleftharpoons{\mathrel}{AMSa}{"0A}
  163. \DeclareMathSymbol\leftrightharpoons{\mathrel}{AMSa}{"0B}
  164. \DeclareMathSymbol\boxminus{\mathbin}{AMSa}{"0C}
  165. \DeclareMathSymbol\Vdash{\mathrel}{AMSa}{"0D}
  166. \DeclareMathSymbol\Vvdash{\mathrel}{AMSa}{"0E}
  167. \DeclareMathSymbol\vDash{\mathrel}{AMSa}{"0F}
  168. \DeclareMathSymbol\twoheadrightarrow{\mathrel}{AMSa}{"10}
  169. \DeclareMathSymbol\twoheadleftarrow{\mathrel}{AMSa}{"11}
  170. \DeclareMathSymbol\leftleftarrows{\mathrel}{AMSa}{"12}
  171. \DeclareMathSymbol\rightrightarrows{\mathrel}{AMSa}{"13}
  172. \DeclareMathSymbol\upuparrows{\mathrel}{AMSa}{"14}
  173. \DeclareMathSymbol\downdownarrows{\mathrel}{AMSa}{"15}
  174. \DeclareMathSymbol\upharpoonright{\mathrel}{AMSa}{"16}
  175. \DeclareMathSymbol\downharpoonright{\mathrel}{AMSa}{"17}
  176. \DeclareMathSymbol\upharpoonleft{\mathrel}{AMSa}{"18}
  177. \DeclareMathSymbol\downharpoonleft{\mathrel}{AMSa}{"19}
  178. \DeclareMathSymbol\rightarrowtail{\mathrel}{AMSa}{"1A}
  179. \DeclareMathSymbol\leftarrowtail{\mathrel}{AMSa}{"1B}
  180. \DeclareMathSymbol\leftrightarrows{\mathrel}{AMSa}{"1C}
  181. \DeclareMathSymbol\rightleftarrows{\mathrel}{AMSa}{"1D}
  182. \DeclareMathSymbol\Lsh{\mathrel}{AMSa}{"1E}
  183. \DeclareMathSymbol\Rsh{\mathrel}{AMSa}{"1F}
  184. \DeclareMathSymbol\rightsquigarrow{\mathrel}{AMSa}{"20}
  185. \DeclareMathSymbol\leftrightsquigarrow{\mathrel}{AMSa}{"21}
  186. \DeclareMathSymbol\looparrowleft{\mathrel}{AMSa}{"22}
  187. \DeclareMathSymbol\looparrowright{\mathrel}{AMSa}{"23}
  188. \DeclareMathSymbol\circeq{\mathrel}{AMSa}{"24}
  189. \DeclareMathSymbol\succsim{\mathrel}{AMSa}{"25}
  190. \DeclareMathSymbol\gtrsim{\mathrel}{AMSa}{"26}
  191. \DeclareMathSymbol\gtrapprox{\mathrel}{AMSa}{"27}
  192. \DeclareMathSymbol\multimap{\mathrel}{AMSa}{"28}
  193. \DeclareMathSymbol\therefore{\mathrel}{AMSa}{"29}
  194. \DeclareMathSymbol\because{\mathrel}{AMSa}{"2A}
  195. \DeclareMathSymbol\doteqdot{\mathrel}{AMSa}{"2B}
  196. \DeclareMathSymbol\triangleq{\mathrel}{AMSa}{"2C}
  197. \DeclareMathSymbol\precsim{\mathrel}{AMSa}{"2D}
  198. \DeclareMathSymbol\lesssim{\mathrel}{AMSa}{"2E}
  199. \DeclareMathSymbol\lessapprox{\mathrel}{AMSa}{"2F}
  200. \DeclareMathSymbol\eqslantless{\mathrel}{AMSa}{"30}
  201. \DeclareMathSymbol\eqslantgtr{\mathrel}{AMSa}{"31}
  202. \DeclareMathSymbol\curlyeqprec{\mathrel}{AMSa}{"32}
  203. \DeclareMathSymbol\curlyeqsucc{\mathrel}{AMSa}{"33}
  204. \DeclareMathSymbol\preccurlyeq{\mathrel}{AMSa}{"34}
  205. \DeclareMathSymbol\leqq{\mathrel}{AMSa}{"35}
  206. \DeclareMathSymbol\leqslant{\mathrel}{AMSa}{"36}
  207. \DeclareMathSymbol\lessgtr{\mathrel}{AMSa}{"37}
  208. \DeclareMathSymbol\backprime{\mathord}{AMSa}{"38}
  209. \DeclareMathSymbol\risingdotseq{\mathrel}{AMSa}{"3A}
  210. \DeclareMathSymbol\fallingdotseq{\mathrel}{AMSa}{"3B}
  211. \DeclareMathSymbol\succcurlyeq{\mathrel}{AMSa}{"3C}
  212. \DeclareMathSymbol\geqq{\mathrel}{AMSa}{"3D}
  213. \DeclareMathSymbol\geqslant{\mathrel}{AMSa}{"3E}
  214. \DeclareMathSymbol\gtrless{\mathrel}{AMSa}{"3F}
  215. \DeclareMathSymbol\sqsubset{\mathrel}{AMSa}{"40}
  216. \DeclareMathSymbol\sqsupset{\mathrel}{AMSa}{"41}
  217. \DeclareMathSymbol\vartriangleright{\mathrel}{AMSa}{"42}
  218. \DeclareMathSymbol\vartriangleleft{\mathrel}{AMSa}{"43}
  219. \DeclareMathSymbol\trianglerighteq{\mathrel}{AMSa}{"44}
  220. \DeclareMathSymbol\trianglelefteq{\mathrel}{AMSa}{"45}
  221. \DeclareMathSymbol\bigstar{\mathord}{AMSa}{"46}
  222. \DeclareMathSymbol\between{\mathrel}{AMSa}{"47}
  223. \DeclareMathSymbol\blacktriangledown{\mathord}{AMSa}{"48}
  224. \DeclareMathSymbol\blacktriangleright{\mathrel}{AMSa}{"49}
  225. \DeclareMathSymbol\blacktriangleleft{\mathrel}{AMSa}{"4A}
  226. \DeclareMathSymbol\vartriangle{\mathord}{AMSa}{"4D}
  227. \DeclareMathSymbol\blacktriangle{\mathord}{AMSa}{"4E}
  228. \DeclareMathSymbol\triangledown{\mathord}{AMSa}{"4F}
  229. \DeclareMathSymbol\eqcirc{\mathrel}{AMSa}{"50}
  230. \DeclareMathSymbol\lesseqgtr{\mathrel}{AMSa}{"51}
  231. \DeclareMathSymbol\gtreqless{\mathrel}{AMSa}{"52}
  232. \DeclareMathSymbol\lesseqqgtr{\mathrel}{AMSa}{"53}
  233. \DeclareMathSymbol\gtreqqless{\mathrel}{AMSa}{"54}
  234. \DeclareMathSymbol\Rrightarrow{\mathrel}{AMSa}{"56}
  235. \DeclareMathSymbol\Lleftarrow{\mathrel}{AMSa}{"57}
  236. \DeclareMathSymbol\veebar{\mathbin}{AMSa}{"59}
  237. \DeclareMathSymbol\barwedge{\mathbin}{AMSa}{"5A}
  238. \DeclareMathSymbol\doublebarwedge{\mathbin}{AMSa}{"5B}
  239. \DeclareMathSymbol\angle{\mathord}{AMSa}{"5C}
  240. \DeclareMathSymbol\measuredangle{\mathord}{AMSa}{"5D}
  241. \DeclareMathSymbol\sphericalangle{\mathord}{AMSa}{"5E}
  242. \DeclareMathSymbol\varpropto{\mathrel}{AMSa}{"5F}
  243. \DeclareMathSymbol\smallsmile{\mathrel}{AMSa}{"60}
  244. \DeclareMathSymbol\smallfrown{\mathrel}{AMSa}{"61}
  245. \DeclareMathSymbol\Subset{\mathrel}{AMSa}{"62}
  246. \DeclareMathSymbol\Supset{\mathrel}{AMSa}{"63}
  247. \DeclareMathSymbol\Cup{\mathbin}{AMSa}{"64}
  248. \DeclareMathSymbol\Cap{\mathbin}{AMSa}{"65}
  249. \DeclareMathSymbol\curlywedge{\mathbin}{AMSa}{"66}
  250. \DeclareMathSymbol\curlyvee{\mathbin}{AMSa}{"67}
  251. \DeclareMathSymbol\leftthreetimes{\mathbin}{AMSa}{"68}
  252. \DeclareMathSymbol\rightthreetimes{\mathbin}{AMSa}{"69}
  253. \DeclareMathSymbol\subseteqq{\mathrel}{AMSa}{"6A}
  254. \DeclareMathSymbol\supseteqq{\mathrel}{AMSa}{"6B}
  255. \DeclareMathSymbol\bumpeq{\mathrel}{AMSa}{"6C}
  256. \DeclareMathSymbol\Bumpeq{\mathrel}{AMSa}{"6D}
  257. \DeclareMathSymbol\lll{\mathrel}{AMSa}{"6E}
  258. \DeclareMathSymbol\ggg{\mathrel}{AMSa}{"6F}
  259. \DeclareMathDelimiter\ulcorner{4}{AMSa}{"70}{AMSa}{"70}
  260. \DeclareMathDelimiter\urcorner{5}{AMSa}{"71}{AMSa}{"71}
  261. \DeclareMathDelimiter\llcorner{4}{AMSa}{"78}{AMSa}{"78}
  262. \DeclareMathDelimiter\lrcorner{5}{AMSa}{"79}{AMSa}{"79}
  263. \xdef\yen {\noexpand\mathhexbox\hexnumber@\symAMSa 55 }
  264. \xdef\checkmark{\noexpand\mathhexbox\hexnumber@\symAMSa 58 }
  265. \xdef\circledR {\noexpand\mathhexbox\hexnumber@\symAMSa 72 }
  266. \xdef\maltese {\noexpand\mathhexbox\hexnumber@\symAMSa 7A }
  267. \DeclareMathSymbol\circledS{\mathord}{AMSa}{"73}
  268. \DeclareMathSymbol\pitchfork{\mathrel}{AMSa}{"74}
  269. \DeclareMathSymbol\dotplus{\mathbin}{AMSa}{"75}
  270. \DeclareMathSymbol\backsim{\mathrel}{AMSa}{"76}
  271. \DeclareMathSymbol\backsimeq{\mathrel}{AMSa}{"77}
  272. \DeclareMathSymbol\complement{\mathord}{AMSa}{"7B}
  273. \DeclareMathSymbol\intercal{\mathbin}{AMSa}{"7C}
  274. \DeclareMathSymbol\circledcirc{\mathbin}{AMSa}{"7D}
  275. \DeclareMathSymbol\circledast{\mathbin}{AMSa}{"7E}
  276. \DeclareMathSymbol\circleddash{\mathbin}{AMSa}{"7F}
  277. \DeclareMathSymbol\lvertneqq{\mathrel}{AMSb}{"00}
  278. \DeclareMathSymbol\gvertneqq{\mathrel}{AMSb}{"01}
  279. \DeclareMathSymbol\nleq{\mathrel}{AMSb}{"02}
  280. \DeclareMathSymbol\ngeq{\mathrel}{AMSb}{"03}
  281. \DeclareMathSymbol\nless{\mathrel}{AMSb}{"04}
  282. \DeclareMathSymbol\ngtr{\mathrel}{AMSb}{"05}
  283. \DeclareMathSymbol\nprec{\mathrel}{AMSb}{"06}
  284. \DeclareMathSymbol\nsucc{\mathrel}{AMSb}{"07}
  285. \DeclareMathSymbol\lneqq{\mathrel}{AMSb}{"08}
  286. \DeclareMathSymbol\gneqq{\mathrel}{AMSb}{"09}
  287. \DeclareMathSymbol\nleqslant{\mathrel}{AMSb}{"0A}
  288. \DeclareMathSymbol\ngeqslant{\mathrel}{AMSb}{"0B}
  289. \DeclareMathSymbol\lneq{\mathrel}{AMSb}{"0C}
  290. \DeclareMathSymbol\gneq{\mathrel}{AMSb}{"0D}
  291. \DeclareMathSymbol\npreceq{\mathrel}{AMSb}{"0E}
  292. \DeclareMathSymbol\nsucceq{\mathrel}{AMSb}{"0F}
  293. \DeclareMathSymbol\precnsim{\mathrel}{AMSb}{"10}
  294. \DeclareMathSymbol\succnsim{\mathrel}{AMSb}{"11}
  295. \DeclareMathSymbol\lnsim{\mathrel}{AMSb}{"12}
  296. \DeclareMathSymbol\gnsim{\mathrel}{AMSb}{"13}
  297. \DeclareMathSymbol\nleqq{\mathrel}{AMSb}{"14}
  298. \DeclareMathSymbol\ngeqq{\mathrel}{AMSb}{"15}
  299. \DeclareMathSymbol\precneqq{\mathrel}{AMSb}{"16}
  300. \DeclareMathSymbol\succneqq{\mathrel}{AMSb}{"17}
  301. \DeclareMathSymbol\precnapprox{\mathrel}{AMSb}{"18}
  302. \DeclareMathSymbol\succnapprox{\mathrel}{AMSb}{"19}
  303. \DeclareMathSymbol\lnapprox{\mathrel}{AMSb}{"1A}
  304. \DeclareMathSymbol\gnapprox{\mathrel}{AMSb}{"1B}
  305. \DeclareMathSymbol\nsim{\mathrel}{AMSb}{"1C}
  306. \DeclareMathSymbol\ncong{\mathrel}{AMSb}{"1D}
  307. \DeclareMathSymbol\nsubseteqq{\mathrel}{AMSb}{"22}
  308. \DeclareMathSymbol\nsupseteqq{\mathrel}{AMSb}{"23}
  309. \DeclareMathSymbol\subsetneqq{\mathrel}{AMSb}{"24}
  310. \DeclareMathSymbol\supsetneqq{\mathrel}{AMSb}{"25}
  311. \DeclareMathSymbol\subsetneq{\mathrel}{AMSb}{"28}
  312. \DeclareMathSymbol\supsetneq{\mathrel}{AMSb}{"29}
  313. \DeclareMathSymbol\nsubseteq{\mathrel}{AMSb}{"2A}
  314. \DeclareMathSymbol\nsupseteq{\mathrel}{AMSb}{"2B}
  315. \DeclareMathSymbol\nparallel{\mathrel}{AMSb}{"2C}
  316. \DeclareMathSymbol\nmid{\mathrel}{AMSb}{"2D}
  317. \DeclareMathSymbol\nshortmid{\mathrel}{AMSb}{"2E}
  318. \DeclareMathSymbol\nshortparallel{\mathrel}{AMSb}{"2F}
  319. \DeclareMathSymbol\nvdash{\mathrel}{AMSb}{"30}
  320. \DeclareMathSymbol\nVdash{\mathrel}{AMSb}{"31}
  321. \DeclareMathSymbol\nvDash{\mathrel}{AMSb}{"32}
  322. \DeclareMathSymbol\nVDash{\mathrel}{AMSb}{"33}
  323. \DeclareMathSymbol\ntrianglerighteq{\mathrel}{AMSb}{"34}
  324. \DeclareMathSymbol\ntrianglelefteq{\mathrel}{AMSb}{"35}
  325. \DeclareMathSymbol\ntriangleleft{\mathrel}{AMSb}{"36}
  326. \DeclareMathSymbol\ntriangleright{\mathrel}{AMSb}{"37}
  327. \DeclareMathSymbol\nleftarrow{\mathrel}{AMSb}{"38}
  328. \DeclareMathSymbol\nrightarrow{\mathrel}{AMSb}{"39}
  329. \DeclareMathSymbol\nLeftarrow{\mathrel}{AMSb}{"3A}
  330. \DeclareMathSymbol\nRightarrow{\mathrel}{AMSb}{"3B}
  331. \DeclareMathSymbol\nLeftrightarrow{\mathrel}{AMSb}{"3C}
  332. \DeclareMathSymbol\nleftrightarrow{\mathrel}{AMSb}{"3D}
  333. \DeclareMathSymbol\divideontimes{\mathbin}{AMSb}{"3E}
  334. \DeclareMathSymbol\varnothing{\mathord}{AMSb}{"3F}
  335. \DeclareMathSymbol\mho{\mathord}{AMSb}{"66}
  336. \DeclareMathSymbol\eth{\mathord}{AMSb}{"67}
  337. \DeclareMathSymbol\eqsim{\mathrel}{AMSb}{"68}
  338. \DeclareMathSymbol\beth{\mathord}{AMSb}{"69}
  339. \DeclareMathSymbol\gimel{\mathord}{AMSb}{"6A}
  340. \DeclareMathSymbol\daleth{\mathord}{AMSb}{"6B}
  341. \DeclareMathSymbol\lessdot{\mathrel}{AMSb}{"6C}
  342. \DeclareMathSymbol\gtrdot{\mathrel}{AMSb}{"6D}
  343. \DeclareMathSymbol\ltimes{\mathbin}{AMSb}{"6E}
  344. \DeclareMathSymbol\rtimes{\mathbin}{AMSb}{"6F}
  345. \DeclareMathSymbol\shortmid{\mathrel}{AMSb}{"70}
  346. \DeclareMathSymbol\shortparallel{\mathrel}{AMSb}{"71}
  347. \DeclareMathSymbol\smallsetminus{\mathbin}{AMSb}{"72}
  348. \DeclareMathSymbol\thicksim{\mathrel}{AMSb}{"73}
  349. \DeclareMathSymbol\thickapprox{\mathrel}{AMSb}{"74}
  350. \DeclareMathSymbol\approxeq{\mathrel}{AMSb}{"75}
  351. \DeclareMathSymbol\succapprox{\mathrel}{AMSb}{"76}
  352. \DeclareMathSymbol\precapprox{\mathrel}{AMSb}{"77}
  353. \DeclareMathSymbol\curvearrowleft{\mathrel}{AMSb}{"78}
  354. \DeclareMathSymbol\curvearrowright{\mathrel}{AMSb}{"79}
  355. \DeclareMathSymbol\digamma{\mathord}{AMSb}{"7A}
  356. \DeclareMathSymbol\varkappa{\mathord}{AMSb}{"7B}
  357. \DeclareMathSymbol\hslash{\mathord}{AMSb}{"7D}
  358. \DeclareMathSymbol\hbar{\mathord}{AMSb}{"7E}
  359. \DeclareMathSymbol\backepsilon{\mathrel}{AMSb}{"7F}
  360. }
  361. \def\interleave{{\parallel\!\!\vert}}
  362. \def\shortinterleave{\z@rel{\mathord\shortmid\mathord\shortparallel}}
  363. \def\napprox{\not\approx}
  364. \let\restriction\upharpoonright
  365. \let\Doteq\doteqdot
  366. \let\doublecup\Cup
  367. \let\llless\lll
  368. \let\gggtr\ggg
  369. \let\doublecap\Cap
  370. \def \nat {{\mathbb N}}
  371. \def \integer {{\mathbb Z}}
  372. \def \natone {{\mathbb N}_1}
  373. \def \real {{\mathbb R}}
  374. \def \bool {{\mathbb B}}
  375. \let \divides \div
  376. \def \div {\z@bin{\mathrm{div}}}
  377. \def \mod {\z@bin{\mathrm{mod}}}
  378. \def \succ {\word{succ}}
  379. \def \expon {^}
  380. \let \num \integer
  381. \let \nplus \natone
  382. \def \lnot {\neg\;}
  383. \def \land {\z@rel{\wedge}}
  384. \def \lor {\z@rel{\vee}}
  385. \let \imp \Rightarrow
  386. \let\iff \Leftrightarrow
  387. \def \all {\z@op{\xforall}}
  388. \def \exi {\z@op{\xexists}}
  389. \def \exione {\exists_1}
  390. \@ifpackageloaded{lucbr}{%
  391. \DeclareMathSymbol{\nexi}{0}{arrows}{"20}
  392. }{%
  393. \DeclareMathSymbol{\nexi}{\mathord}{AMSb}{"40}
  394. }
  395. \def \dot {\z@rel{\bullet}}
  396. \def \true {\keyword{true}}
  397. \def \false {\keyword{false}}
  398. \let \cond \rightarrow
  399. \let \spot \dot
  400. \mathcode`\@="8000% make @ active in mathmode
  401. {\catcode`\@=\active \gdef@{\dot}}
  402. \let \implies \imp
  403. \let \forall \all
  404. \let \exists \exi
  405. \let \nexists \nexi
  406. \let \emptyset \varnothing
  407. \def \varemptyset {\{\,\}}
  408. \def \pset {\z@op{\mathbb P}}
  409. \def \psetone {\pset_1}
  410. \def \fset {\z@op{\mathbb F}}
  411. \def \fsetone {\fset_1}
  412. \def \sset {\z@op{\mathbb S}}
  413. \let \mem \in
  414. \def \nem {\not\mem}
  415. \def \uni {\z@bin\cup}
  416. \def \int {\z@bin\cap}
  417. \let \prod \times
  418. \def \min {\word{min}}
  419. \def \max {\word{max}}
  420. \def \duni {\z@Bigop{\lower0.25ex\hbox{$\uni$}}}
  421. \def \dint {\z@Bigop{\lower0.25ex\hbox{$\int$}}}
  422. \def \upto {\z@bin{\ldotp\ldotp}}
  423. \let \psubs \subset
  424. \let \subs \subseteq
  425. \let \psups \supset
  426. \let \sups \supseteq
  427. \def \diff {\z@bin{\backslash}}
  428. \let \cross \prod
  429. \let \notin \nem
  430. \let \nmem \nem
  431. \let \union \uni
  432. \let \inter \int
  433. \let \power \pset
  434. \let \finset \fset
  435. \let \dunion \duni
  436. \let \dinter \dint
  437. \def \lambda {\z@op{\xlambda}}
  438. \def \mu {\z@op{\xmu}}
  439. \def \dom {\keyword{dom}}
  440. \def \ran {\keyword{ran}}
  441. \def \id {\keyword{id}}
  442. \@ifpackageloaded{lucbr}{%
  443. \DeclareMathSymbol{\dres}{\mathbin}{letters}{"2F}
  444. \DeclareMathSymbol{\rres}{\mathbin}{letters}{"2E}
  445. }{%
  446. \DeclareMathSymbol{\dres}{\mathbin}{AMSa}{"43}
  447. \DeclareMathSymbol{\rres}{\mathbin}{AMSa}{"42}
  448. }
  449. \def \dsub {\mathbin{\rlap{\raise.05ex\hbox{$-$}}{\dres}}}
  450. \def \rsub {\mathbin{\rlap{\raise.05ex\hbox{$-$}}{\rres}}}
  451. \let \fovr \oplus
  452. \let \cmp \circ
  453. \def \fcmp {\mathbin{\raise 0.6ex\hbox{\oalign{\hfil$\scriptscriptstyle
  454. \mathrm{o}$\hfil\cr\hfil$\scriptscriptstyle\mathrm{9}$\hfil}}}}
  455. \def \inv {^\sim}
  456. \def \limg {(\!|}
  457. \def \rimg {|\!)}
  458. \let \map \mapsto
  459. \let \rel \leftrightarrow
  460. \let \tfun \rightarrow
  461. \let \tinj \rightarrowtail
  462. \def \tsur {\mathrel{\ooalign{$\tfun$\hfil\cr$\mkern4mu\tfun$}}}
  463. \def \pfun {\p\tfun}
  464. \def \pinj {\p\tinj}
  465. \def \psur {\p\tsur}
  466. \def \ffun {\f\tfun}
  467. \def \finj {\f\tinj}
  468. \def \bij {\mathrel{\ooalign{$\tinj$\hfil\cr$\mkern5mu\tfun$}}}
  469. \def \tcl {^+}
  470. \def \rtcl {^*}
  471. \def \iter {^}
  472. \let \comp \fcmp
  473. \let \ndres \dsub
  474. \let \nrres \rsub
  475. \let \fun \tfun
  476. \let \inj \tinj
  477. \let \surj \tsur
  478. \let \psurj \psur
  479. \let \llless \lll
  480. \let \gggtr \ggg
  481. \def \interleave {{\parallel\!\!\vert}}
  482. \def \shortinterleave {\z@rel{\mathord\shortmid\mathord\shortparallel}}
  483. \let \restriction \upharpoonright
  484. \def \napprox {\not\approx}
  485. \def \seq {\keyword{seq}}
  486. \def \iseq {\keyword{iseq}}
  487. \def \seqone {\seq_1}
  488. \def \emptyseq {\lseq\,\rseq}
  489. \let \lseq \langle
  490. \let \rseq \rangle
  491. \def \head {\word{head}}
  492. \def \tail {\word{tail}}
  493. \def \front {\word{front}}
  494. \def \last {\word{last}}
  495. \def \rev {\word{rev}}
  496. \def \squash {\word{squash}}
  497. \def \next {\keyword{next}}
  498. \def \inseq {\keyword{in}}
  499. \@ifpackageloaded{lucbr}{%
  500. \DeclareMathSymbol{\sres}{2}{arrows}{"75}
  501. \DeclareMathSymbol{\ires}{2}{arrows}{"76}
  502. \DeclareMathSymbol{\@@cat}{\mathbin}{operators}{"5F}
  503. }{%
  504. \DeclareMathSymbol{\@@cat}{\mathbin}{AMSa}{"61}
  505. \DeclareMathSymbol{\sres}{\mathbin}{AMSa}{"16}
  506. \DeclareMathSymbol{\ires}{\mathbin}{AMSa}{"18}
  507. }
  508. \def \cat {\mathbin{\raise 0.8ex\hbox{$\mathchar\@@cat$}}}
  509. \def \ssub {\z@bin{\rlap{$-$}{\sres}}}
  510. \def \isub {\z@bin{\rlap{$-$}{\ires}}}
  511. \def \dcat {\z@op{\cat/}}
  512. \def \dovr {\z@op{\fovr/}}
  513. \def \dcmp {\z@op{\fcmp/}}
  514. \let \prefix \subseteq
  515. \def \suffix {\keyword{suffix}}
  516. \def \seqi {\keyword{seq_\infty}}
  517. \def \partitions {\keyword{partitions}}
  518. \def \partition {\keyword{partitions}}
  519. \def \disjoint {\keyword{disjoint}}
  520. \def \subseq {\keyword{subseq}}
  521. \let \filter \sres
  522. \def \lsch {\z@bigop{[}}
  523. \def \rsch {\z@bigop{]}}
  524. \def \dparallel {\z@bigop{\parallel}\limits}
  525. \def \zand {\z@bigbin\land}
  526. \def \zor {\z@bigbin\lor}
  527. \def \zcmp {\z@bigbin\fcmp}
  528. \def \zexi {\z@bigop\exists}
  529. \def \zall {\z@bigop\forall}
  530. \def \znot {\z@bigop\neg}
  531. \def \zbar {\z@bigbin\cbar}
  532. \def \zfor {/}
  533. \def \zhide {\z@bigbin\backslash}
  534. \def \zimp {\z@bigrel\imp}
  535. \def \zeq {\z@bigrel\iff}
  536. \def \zovr {\z@bigrel\oplus}
  537. \def \zpipe {\z@bigbin{\mathord>\!\!\mathord>}}
  538. \def \pre {\keyword{pre}}
  539. \def \pred {\keyword{pred}}
  540. \def \post {\keyword{post}}
  541. \def \zproject {\z@bigbin\sres}
  542. \def\rename{\@ifnextchar*{\z@rename}{\z@@rename}}
  543. \def\z@rename*[#1/#2]{\left[#1 \over #2\right]}
  544. \def\z@@rename[#1/#2]{\left[#1 \zfor #2\right]}
  545. \let \project \zproject
  546. \let \import \sres
  547. \let \semi \zcmp
  548. \let \hide \zhide
  549. \let\buni\uplus
  550. \def \emptybag {\lbag\:\rbag}
  551. \def \lbag {[\![}
  552. \def \rbag {]\!]}
  553. \def \bag {\keyword{bag}}
  554. \def \items {\word{items}}
  555. \let \inbag \inseq
  556. \def \bagcount {\word{count}}
  557. \def \ddef {\z@rel{\;::=\;}}
  558. \def \bbar {\z@bigrel{|}}
  559. \let \cbar \mid
  560. \def \lang {\langle\!\langle}
  561. \def \rang {\rangle\!\rangle}
  562. \def \sdef {\z@rel{\widehat=}}
  563. \def \defs {\z@smallrel{==}}
  564. \def \varsdef {\z@rel\triangleq}
  565. \let \sdefs \sdef
  566. \mathcode`\|=\mid
  567. \let \ldata \lang
  568. \let \rdata \rang
  569. \def \lblot {\langle\!|}
  570. \def \rblot {|\!\rangle}
  571. \def \IMP {\boldword{Import}}
  572. \let \env \Rrightarrow
  573. \def \zlet {\boldword{let}}
  574. \def \zin {\boldword{in}}
  575. \def \zwhere {\boldword{where}}
  576. \def\HOLE{\z@op{\hbox{$\lll\star\star\star\ggg$}}}
  577. \def\landd{} % to support qzed editor
  578. \def\semid{} % to support qzed editor
  579. \def\qzed{\ifz@inclass\else\zed\fi}
  580. \def\endqzed{\ifz@inclass\else\endzed\fi}
  581. \def\qua{\mbox{::}}
  582. \def\redef{\mbox{\textbf{~redef}}}
  583. \def\Init{I\!{\scriptstyle{NIT}}}
  584. \def\Exit{E\!{\scriptstyle{XIT}}}
  585. \def\Internal{I\!{\scriptstyle{NTERNAL}}}
  586. \def\Aux{A\!{\scriptstyle{UX}}}
  587. \def\intern{\mbox{\textsf{i}}}
  588. \def\thrm{\z@rel\vdash}
  589. \def\qed{\zsmall\Box}
  590. \let\Qed\Box
  591. \let\QED\square
  592. \def\BLACKQED{\zsmall\blacksquare}
  593. \let\ETH\qed
  594. \def\TH{\boldword{Theorem}}
  595. \def\LE{\boldword{Lemma}}
  596. \def\PR{\boldword{Proof}}
  597. \def\refines{\z@rel\sqsupseteq}
  598. \def\defines{\z@rel\sqsubseteq}
  599. \def\weakrefine{\z@rel{\raise0.2ex\rlap{\hbox{$\sqsupset$}}\lower1ex\hbox{$\sim$}}}
  600. \def\weakdefine{\z@rel{\raise0.2ex\rlap{\hbox{$\sqsubset$}}\lower1ex\hbox{$\sim$}}}
  601. \let\shows\thrm
  602. \def\childof{\z@rel\xsucc}
  603. \def\parentof{\z@rel\xprec}
  604. \let\weaksubclass\succsim
  605. \let\weaksupclass\precsim
  606. \def\hasa{\z@rel{\mathord\xsucc\!\!\!\mathord\xsucc}}
  607. \def\instancein{\z@rel{\mathord\xprec\!\!\!\mathord\xprec}}
  608. \def\subtype{\z@rel\sqsubset}
  609. \def\subtypeeq{\z@rel\sqsubseteq}
  610. \def\suptype{\z@rel\sqsupset}
  611. \def\suptypeeq{\z@rel\sqsupseteq}
  612. \let\inherits\childof
  613. \let\subclass\childof
  614. \let\isa\childof
  615. \let\supclass\parentof
  616. \let\instantiates\hasa
  617. \let\islikea\weaksubclass
  618. \def\poly{\mathord\downarrow}
  619. \def\widen#1{\z@op{{\overline{#1}}}}
  620. \def\atnext{\rlap{$\zSmall\bigcirc$}\kern0.01em\rlap{$\zSmall\bigcirc$}\kern0.01em\zSmall\bigcirc}
  621. \def\atlast{\rlap{$\zSmall\bigcirc$}\kern0.01em\rlap{$\zSmall\bigcirc$}\kern0.01em\rlap{$\kern0.01em\mathord-$}\zSmall\bigcirc}
  622. \def\always{\lower0.37ex\hbox{$\zbig\Box$}}
  623. \def\uptilnow{\rlap{$\kern0.02em\mathord-$}\lower0.37ex\hbox{$\zbig\Box$}}
  624. \def\eventually{\lower0.37ex\hbox{$\zbig\Diamond$}}
  625. \def\previously{\rlap{$\kern0.04em\mathord-$}\lower0.37ex\hbox{$\zbig\Diamond$}}
  626. \let\henceforth\always
  627. \def \mono {\keyword{monotonic}}
  628. \def \porder {\keyword{partial\_order}}
  629. \def \torder {\keyword{total\_order}}
  630. \newbox\z@combox\newdimen\z@wdcalc
  631. \def\comment{\@ifnextchar*{\z@leftcomment}{\z@comment}}
  632. \def\z@comment#1{$\z@stopfield\z@addfield\z@startfield$%
  633. \global\setbox\z@combox\hbox{\quad[{\sf #1}]}\z@wdcalc=\wd\z@combox%
  634. \advance\z@wdcalc by \wd\z@curline\advance\z@wdcalc by \z@curindent%
  635. \advance\z@wdcalc by \zedleftsep\advance\z@wdcalc by \zedlinethickness%
  636. \advance\z@wdcalc by 2\zedindent\ifdim\z@wdcalc>\displaywidth\\%
  637. \fi&\box\z@combox\ignorespaces}
  638. \def\z@leftcomment*#1{\hbox{[{\sf #1}]}}
  639. \def \oid {{\bbold O}}
  640. \def \self {\word{self}}
  641. \def \contained {\word{contained}}
  642. \let \classuni \uni
  643. \def \visibility {\zproject}
  644. \def \invisibility {{\project\hspace{-0.63 em}\cross}}
  645. \def \cid {{\bigcirc\mbox{\scriptsize{\hspace{-0.78em}}\mbox{\tiny{C}}}}}
  646. \def \sid {{\bigcirc\mbox{\scriptsize{\hspace{-0.74em}}\mbox{\tiny{S}}}}}
  647. \def \eid {{\bigcirc\mbox{\scriptsize{\hspace{-0.74em}}\mbox{\tiny{E}}}}}
  648. \def \pll {~\parallel~}
  649. \def \plo {~\parallel_{!}~}
  650. \def \sqc {~\semi~}
  651. \def \cnj {~\zand~}
  652. \def \gch {~[\mbox{\hspace{-0.06em}}]~}
  653. \def \enh {~\dot~}
  654. \def \dsqc {\mbox{{\Large $\fcmp~$}}}
  655. \def \dgch {\mbox{{\Large $[\mbox{\hspace{-0.06em}}]$}}}
  656. \def \dcnj {\mbox{{\Large $\land$}}}
  657. \def \dpll {\mbox{{\Large $\parallel$}}}
  658. \def \dplo {\mbox{{\Large $\parallel_{!}$}}}
  659. \newcount\z@stackmin
  660. \newcount\z@stackmax
  661. \newcount\z@stacktop
  662. \newdimen\@gtempa \z@stackmin=\allocationnumber
  663. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  664. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  665. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  666. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  667. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  668. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  669. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  670. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  671. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  672. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  673. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  674. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  675. \newdimen\@gtempa
  676. \z@stackmax=\allocationnumber
  677. \dimen\z@stackmin=0pt
  678. \newbox\z@curline
  679. \newdimen\z@curindent
  680. \dimen\z@curindent=0pt
  681. \def\z@space{{}\;{}}
  682. \newbox\z@curfield
  683. \def\z@startline{\setbox\z@curline\hbox{}%
  684. \global\z@curindent\dimen\z@stacktop
  685. \z@startfield\ignorespaces}
  686. \def\z@stopline{\z@stopfield
  687. \z@addfield
  688. \hbox{\hskip\z@curindent \box\z@curline}}
  689. \def\z@startfield{\global\setbox\z@curfield\hbox\bgroup}
  690. \def\z@stopfield{\egroup}
  691. \def\z@addfield{\global\setbox\z@curline\hbox{\unhbox
  692. \z@curline\unhbox\z@curfield}}
  693. \def\z@pushmargin{\hbox{\kern0pt}$%
  694. \z@stopfield
  695. \z@addfield
  696. \ifnum \z@stacktop < \z@stackmax
  697. \global\advance\z@stacktop \@ne
  698. \else
  699. \@latexerr{Z margin stack overflow (too many \string\M's)}
  700. \@ehd
  701. \fi
  702. \global\dimen\z@stacktop\z@curindent
  703. \global\advance\dimen\z@stacktop \wd\z@curline
  704. \z@startfield\ignorespaces
  705. $\relax}
  706. \def\z@popmargin{\ifnum \z@stacktop > \z@stackmin
  707. \global\advance\z@stacktop \m@ne \ignorespaces
  708. \else
  709. \@latexerr{Z Margin stack underflow (too many \string\O's)}
  710. \@ehd
  711. \fi}
  712. \def\M{\z@pushmargin} \def\O{\z@popmargin} \def\S{\z@space}
  713. \z@stacktop\z@stackmin
  714. \newdimen\zedindent \zedindent=\leftmargini
  715. \newdimen\zedleftsep \zedleftsep=1em
  716. \newdimen\zedtab \zedtab=2em
  717. \newdimen\zedbar \zedbar=8em
  718. \newdimen\zedlinethickness \zedlinethickness=0.4pt
  719. \newdimen\zedcornerheight \zedcornerheight=0pt
  720. \newcount\z@cols
  721. \newif\ifz@firstline \z@firstlinefalse
  722. \newif\ifz@inclass \z@inclassfalse
  723. \newif\ifz@inenv \z@inenvfalse
  724. \newif\ifz@leftmargin \z@leftmargintrue
  725. \newif\ifz@incols \z@incolsfalse
  726. \newif\ifleftnames \leftnamesfalse
  727. \def\leftschemas{\leftnamestrue}
  728. \newif\ifz@inbox \z@inboxfalse
  729. \newskip\zedbaselineskip \zedbaselineskip\baselineskip
  730. \newbox\zstrutbox \setbox\zstrutbox=\copy\strutbox
  731. \def\zstrut{\relax\ifmmode\copy\zstrutbox\else\unhcopy\zstrutbox\fi}
  732. \def\zedbaselinestretch{1}
  733. \def\baselinestretch{1}
  734. \newcount\interzedlinepenalty \interzedlinepenalty=10000 %never break
  735. \newcount\preboxpenalty \preboxpenalty=0 %break easily
  736. \newcount\forcepagepenalty \forcepagepenalty=-10000 %always break
  737. \interdisplaylinepenalty=100 %break sometimes
  738. \def\zedsize#1{\def\z@size{#1}}
  739. \def\z@size{}
  740. \newskip\z@adskip\newskip\z@bdskip\newskip\z@adsskip\newskip\z@bdsskip
  741. \def\z@changesize{%
  742. \z@adskip\abovedisplayskip\z@bdskip\belowdisplayskip% save skips
  743. \z@adsskip\abovedisplayshortskip\z@bdsskip\belowdisplayshortskip
  744. \z@size % change size
  745. \abovedisplayskip\z@adskip\belowdisplayskip\z@bdskip% restore skips
  746. \abovedisplayshortskip\z@adsskip\belowdisplayshortskip\z@bdsskip}
  747. \def\z@zeroskips{\abovedisplayskip\z@\belowdisplayskip\z@
  748. \abovedisplayshortskip\z@\belowdisplayshortskip\z@}
  749. \def\@setfontsize#1#2#3{\@nomath#1%
  750. \ifx\protect\@typeset@protect
  751. \let\@currsize#1%
  752. \fi
  753. \fontsize{#2}{#3}\selectfont
  754. \setlength{\zedbaselineskip}{\baselineskip/\real{\baselinestretch}}%
  755. \zedbaselineskip\zedbaselinestretch\zedbaselineskip
  756. \setbox\zstrutbox\hbox{\vrule height.7\zedbaselineskip
  757. depth.3\zedbaselineskip width\z@}}
  758. \def\z@narrow{\advance\linewidth by -\zedindent}
  759. \def\z@wide{\advance\linewidth by \zedindent}
  760. \def\z@hrulefill{\leaders\hrule height\zedlinethickness\hfill}
  761. \def\z@topline#1{\omit\@ifnextchar[{\z@@topline{#1}}{\z@@topline{#1}[]}}
  762. \def\z@@topline#1[#2]{\hbox to\linewidth{\zstrut\ifleftnames\else
  763. \vrule height\zedlinethickness width\zedlinethickness
  764. \hbox to\zedleftsep{\z@hrulefill}\fi#1\z@hrulefill
  765. \smash{\vrule height\zedlinethickness width\zedlinethickness
  766. depth\zedcornerheight}\hbox{\sf #2}}\cr}
  767. \def\z@dbltopline#1{\omit\@ifnextchar[{\z@@dbltopline{#1}}{\z@@dbltopline{#1}[]}}
  768. \def\z@@dbltopline#1[#2]{\z@@topline{#1}[#2]%
  769. \noalign{\kern-\baselineskip
  770. \kern-\zedlinethickness
  771. \kern-\doublerulesep \nobreak}%
  772. \omit\z@@topline{\hphantom{#1}}[\hphantom{#2}]%
  773. \noalign{\kern\doublerulesep
  774. \kern\zedlinethickness \nobreak}}
  775. \def\z@botline{\also\omit\hbox to\linewidth{\z@hrulefill
  776. \smash{\vrule height\zedcornerheight width\zedlinethickness
  777. depth 0pt}}\cr}
  778. \def\z@@botline[#1]{\hbox to\linewidth{\vrule\z@hrulefill\hbox{\sf\smash{#1}}}\also}
  779. \def\zedline{\also\omit\@ifnextchar[{\z@@botline}{\z@@botline[]}}
  780. \def\where{\also \omit \hbox to\zedbar{\z@hrulefill}\cr\also}
  781. \let \ST \where
  782. \def\z@left{\ifz@inbox\vrule width\zedlinethickness\hskip\zedleftsep\fi}
  783. \def\z@env{\global\z@firstlinetrue\z@changesize
  784. $$
  785. \z@inenvtrue
  786. \baselineskip\zedbaselineskip
  787. \parskip=0pt\lineskip=0pt\z@narrow
  788. \advance\displayindent by \zedindent
  789. \def\\{\crcr}% Must have \def and not \let for nested alignments.
  790. \everycr={\noalign{\ifz@firstline \global\z@firstlinefalse
  791. \else \penalty\interzedlinepenalty \fi}}
  792. \tabskip=0pt}
  793. \def\endz@env{$$
  794. \global\@ignoretrue
  795. }
  796. \def\z@format{\halign to\linewidth\bgroup%
  797. \zstrut\z@left\z@startline\ignorespaces$\@lign##$\z@stopline\hfil%
  798. \tabskip=0pt plus1fil%
  799. &\hbox to 0pt{\hss\@lign##}\tabskip=0pt\cr}
  800. \def\z@boxenv{\z@narrow\let\also=\als@ \let\Also=\Als@ \let\ALSO=\ALS@
  801. \z@inboxtrue \predisplaypenalty=\preboxpenalty \z@env\z@format}
  802. \def\z@outnonbox{\z@outclasscheck\z@leavevmode\z@env}
  803. \def\z@inoutbox{\z@leavevmode\z@makeouter\z@inclassfalse\z@boxenv}
  804. \def\@but{\noalign{\nointerlineskip}}
  805. \def\z@nopar{\global\@endpetrue}
  806. \def\z@leavevmode{\ifvmode\if@inlabel\indent\else\if@noskipsec\indent\else
  807. \if@nobreak\global\@nobreakfalse\everypar={}\fi
  808. {\parskip=0pt\noindent}\fi\fi\fi}
  809. \def\also{\crcr\noalign{\vskip\jot}}
  810. \def\Also{\crcr\noalign{\vskip2\jot}}
  811. \def\ALSO{\Also\Also}
  812. \def\als@{\crcr\@but\omit\vrule height\jot width\zedlinethickness \cr \@but}
  813. \def\Als@{\crcr\@but\omit\vrule height2\jot width\zedlinethickness \cr \@but}
  814. \def\ALS@{\crcr\@but\omit\vrule height4\jot width\zedlinethickness \cr \@but}
  815. \def\znewpage{\also\noalign{\penalty\forcepagepenalty}\also}
  816. \def\zbreak{\also\noalign{\penalty\interdisplaylinepenalty\vskip-\jot}\also}
  817. \def\Zbreak{\also\noalign{\penalty\interdisplaylinepenalty}\also}
  818. \def\ZBREAK{\Also\noalign{\penalty\interdisplaylinepenalty}\Also}
  819. \def\t#1{\hskip #1\zedtab}
  820. \def\flushr#1{\crcr&#1\quad\cr}
  821. \def\z@inclasscheck{\ifz@inclass\else
  822. \@latexerr{This Z environment is only allowed within a class}
  823. {Perhaps you forgot to include a \string\begin\string{class\string}
  824. somewhere^^Jor you are trying to print a file that needs updating.^^J\@ehc} \fi}
  825. \def\z@outclasscheck{\ifz@inclass
  826. \@latexerr{This Z environment is not allowed inside a class}
  827. {This environment doesn't really make sense within a class.^^J%
  828. If you really want it then I'll try my best to fit in in.^^J\@ehc}\else
  829. \ifz@inenv \@latexerr{New Z environment declared before previous
  830. one is completed}
  831. {I suspect that you've forgotten to finish the last environment.^^J%
  832. You are trying to nest environments and this can only be done inside classes^^J%
  833. besides, the environment you have started isn't valid within classes any way.^^JI suggest that you type \space X <return> \space to quit and then correct your document.}
  834. \fi\fi}
  835. \def\z@makeouter{%
  836. \ifz@inenv
  837. \ifz@inclass\z@inenvfalse
  838. \hskip-\zedleftsep \advance\linewidth by -\zedlinethickness
  839. \zedindent=\zedleftsep \zedleftsep=0.8\zedleftsep
  840. \zedbar=0.8\zedbar \zedtab=0.8\zedtab
  841. \oz@parbox{\linewidth}\bgroup
  842. \z@zeroskips
  843. \else
  844. \@latexerr{Incorrect place for Z environment; nesting is
  845. allowed only inside classes}
  846. {You've either forgotten to finish the last environment,^^J%
  847. you've forgotten to include a
  848. \string\begin\string{class\string} somewhere^^J%
  849. or you are trying to print a file that needs updating.^^J%
  850. (Then again, you might just be trying to do something^^J%
  851. that the author of these macros didn't intend you to do)^^J\@ehc}
  852. \fi
  853. \else
  854. \bgroup
  855. \fi
  856. }
  857. \def \z@makeinner{\egroup
  858. \global\z@curindent\z@
  859. }
  860. \def \classbreak{\also\egroup$$\vskip -\ht\zstrutbox
  861. \vskip -\abovedisplayskip\vskip -\belowdisplayskip\z@wide\z@boxenv\also}
  862. \def\zed{\z@outnonbox\z@inboxfalse\z@format}
  863. \def\endzed{\crcr\egroup\endz@env}
  864. \let\[=\zed
  865. \def\]{\crcr\egroup$$\ignorespaces}
  866. \def\argue{\z@outnonbox\interzedlinepenalty=\interdisplaylinepenalty
  867. \openup 1\jot \z@format
  868. \noalign{\vskip-\jot}}% equal vspace above and below argue display
  869. \let\endargue=\endzed
  870. \def\infrule{\z@outnonbox\halign\bgroup
  871. \zstrut\quad$\@lign##$\quad\hfil&\quad\@lign##\hfil\cr}
  872. \let\endinfrule=\endzed
  873. \def\derive{\crcr\also\@but\omit\z@hrulefill%
  874. \@ifnextchar[{\z@sidecondition}{\cr\also\@but}}
  875. \def\Derive{\crcr\also\@but\omit\z@hrulefill\cr\@but
  876. \noalign{\kern-\dp\zstrutbox
  877. \kern\doublerulesep \nobreak}%
  878. \omit\derive}
  879. \def\z@sidecondition[#1]{&$\smash{\lower 0.2ex\hbox{$[\;#1\;]$}}$\cr\also\@but}
  880. \def\syntax{\z@outnonbox\halign\bgroup
  881. \zstrut$\@lign##$\hfil &\hfil$\@lign{}##{}$\hfil
  882. &$\@lign##$\hfil &\qquad\@lign-- ##\hfil\cr}
  883. \let\endsyntax=\endzed
  884. \def\schema#1{\z@inoutbox\z@topline{$\,#1\,$}}
  885. \def\endschema{\z@botline \endzed \z@makeinner \z@nopar}
  886. \@namedef{anonschema}{\leftnamesfalse\z@inoutbox\z@topline{}}
  887. \expandafter\let\csname endanonschema\endcsname=\endschema
  888. \def\genschema#1#2{\z@inoutbox\z@topline{$\,#1\:[#2]\,$}}
  889. \let\endgenschema=\endschema
  890. \def\axdef{\z@inoutbox}
  891. \def\endaxdef{\endzed\z@makeinner}
  892. \def\uniqdef{\leftnamesfalse\z@inoutbox\z@dbltopline{}}
  893. \let\enduniqdef=\endschema
  894. \def\gendef{\@ifnextchar[{\z@gendef}{\z@@gendef}}
  895. \def\z@gendef[#1]{\leftnamesfalse\z@inoutbox\z@dbltopline{$\,[#1]\,$}}
  896. \def\z@@gendef#1{\leftnamesfalse\z@inoutbox\z@dbltopline{$\,[#1]\,$}}
  897. \let\endgendef=\endschema
  898. \def\gengendef{\@ifnextchar[{\z@gengendef}{\z@@gengendef}}
  899. \def\z@gengendef[#1]{\leftnamesfalse\z@inoutbox\z@dbltopline{$\,#1\,$}}
  900. \def\z@@gengendef#1{\leftnamesfalse\z@inoutbox\z@dbltopline{$\,#1\,$}}
  901. \let\endgengendef=\endschema
  902. \def\class#1{\z@leavevmode\z@makeouter\z@inclasstrue
  903. \z@boxenv\z@topline{$\,#1\,$}}
  904. \let\endclass\endschema
  905. \def\op{\z@inclasscheck\schema}
  906. \let\endop\endschema
  907. \def\state{\z@inclasscheck\anonschema}
  908. \let\endstate\endschema
  909. \def\init{\z@inclasscheck\schema{\Init}}
  910. \let\endinit\endschema
  911. \let\const\axdef
  912. \let\endconst\endaxdef
  913. \def\type{\z@inclasscheck}
  914. \let\endtype\relax
  915. \def\sidebyside{\@ifnextchar[{\z@columns}{\z@columns[2]}}
  916. \def\z@columns[#1]{\z@leavevmode\z@cols#1 \z@makeouter\z@narrow%
  917. $$\lineskip=0pt\z@incolstrue
  918. \predisplaysize\maxdimen
  919. \ifz@leftmargin\hskip-\zedindent\z@leftmarginfalse\fi
  920. \setbox0=\hbox to \linewidth\bgroup\z@zeroskips%
  921. \divide\zedbar by \z@cols \divide\zedleftsep by \z@cols
  922. \divide\zedtab by \z@cols \divide\linewidth by \z@cols
  923. \oz@parbox[t]{\linewidth}\bgroup\z@wide}
  924. \def\nextside{\egroup\hss\oz@parbox[t]{\linewidth}\bgroup\z@wide}
  925. \newdimen\z@temp
  926. \def\endsidebyside{\egroup\egroup
  927. \z@temp\ht0 \advance\z@temp by \dp0\advance\z@temp by-\dp\zstrutbox
  928. \hbox{\raise\z@temp\box0}\endz@env\z@makeinner\z@nopar}
  929. \def\zpar{\z@leavevmode
  930. \ifz@inenv\z@inclasstrue\fi% fudge to let zpar in all boxes
  931. \z@makeouter\z@changesize
  932. \advance\linewidth by -\z@curindent
  933. \advance\linewidth by -\wd\z@curline
  934. \hskip-\wd\z@curline\advance\linewidth by -\zedindent$$
  935. \ifz@leftmargin\hskip-\zedindent\fi% adjustment for first column
  936. \advance\displayindent by \zedindent
  937. \advance\displaywidth by -\zedindent
  938. \advance\displayindent by \z@curindent
  939. \advance\displayindent by \wd\z@curline
  940. \advance\displaywidth by -\z@curindent
  941. \advance\displaywidth by -\wd\z@curline
  942. \global\setbox\z@curline\hbox{}
  943. \z@narrow\oz@parbox[b]{\linewidth}\bgroup\hfil\break}
  944. \def\endzpar{\egroup$$\z@makeinner\z@nopar}
  945. \def \classcom{\zpar\sf}
  946. \let \endclasscom=\endzpar
  947. \def\proof{\zpar$\PR$\zpar}
  948. \def\endproof{\endzpar\endzpar}
  949. \def\zseq#1{\lseq #1 \rseq}
  950. \def\zset#1{\{ #1 \}}
  951. \def\zimg#1{\limg #1 \rimg}
  952. \def\zsch#1{\lsch #1 \rsch}
  953. \def\zimgset#1{\zimg\zset{#1}}
  954. \def\fuzzcompatible{%
  955. \let\defs\sdef
  956. \let\empty\emptyset
  957. }
  958. \endinput
  959. %%
  960. %% End of file `oz.sty'.