% ===================================================================== % % Macros for typesetting the HOL system manual % % ===================================================================== % --------------------------------------------------------------------- % Abbreviations for words and phrases % --------------------------------------------------------------------- \newcommand\TUTORIAL{{\footnotesize\sl TUTORIAL}} \newcommand\DESCRIPTION{{\footnotesize\sl DESCRIPTION}} \newcommand\REFERENCE{{\footnotesize\sl REFERENCE}} \newcommand\LOGIC{{\footnotesize\sl LOGIC}} \newcommand\LIBRARIES{{\footnotesize\sl LIBRARIES}} \usepackage{textcomp} \newcommand{\bs}{\texttt{\char'134}} % backslash \newcommand{\lb}{\texttt{\char'173}} % left brace \newcommand{\rb}{\texttt{\char'175}} % right brace \newcommand{\td}{\texttt{\char'176}} % tilde \newcommand{\lt}{\texttt{\char'74}} % less than \newcommand{\gt}{\texttt{\char'76}} % greater than \newcommand{\dol}{\texttt{\char'44}} % dollar \newcommand{\pipe}{\texttt{\char'174}} \newcommand{\apost}{\texttt{\textquotesingle}} % back quote (tt font) \newcommand{\bq}{\texttt{\char'140}} % double back quotes `` \newcommand{\dq}{\bq\bq} \newcommand{\ldquo}{\mbox{\textrm{``}}} \newcommand{\rdquo}{\mbox{\textrm{''}}} %These macros were included by slind: \newcommand{\holquote}[1]{\dq#1\dq} \newcommand{\uholquote}[1]{\mbox{\rmfamily\upshape ``}#1\mbox{\rmfamily\upshape ''}} \def\HOL{\textsc{Hol}} \def\holn{\HOL} % i.e. hol n(inety-eight), no digits in % macro names is a bit of a pain; deciding to do away % with hol98 nomenclature means that we just want to % write HOL for hol98. \def\holnversion{Kananaskis-12} \def\holnsversion{Kananaskis~12} % version with space rather than hyphen \def\LCF{{\small LCF}} \def\LCFLSM{{\small LCF{\kern-.2em}{\normalsize\_}{\kern0.1em}LSM}} \def\PPL{{\small PP}{\kern-.095em}$\lambda$} \def\PPLAMBDA{{\small PPLAMBDA}} \def\ML{{\small ML}} \def\holmake{\texttt{Holmake}} \newcommand\ie{\mbox{\textit{i{.}e{.}}}} \newcommand\eg{\mbox{\textit{e{.}g{.}}}} \newcommand\viz{\mbox{viz{.}}} \newcommand\adhoc{\mbox{\it ad hoc}} \newcommand\etal{{\it et al.\/}} % NOTE: \etc produces wrong spacing if used between sentences, that is % like here \etc End such sentences with non-macro etc. \newcommand\etc{\mbox{\textit{etc{.}}}} % --------------------------------------------------------------------- % Simple abbreviations and macros for mathematical typesetting % --------------------------------------------------------------------- \newcommand\fun{{\to}} \newcommand\prd{{\times}} \newcommand\conj{\ \wedge\ } \newcommand\disj{\ \vee\ } \newcommand\imp{ \Rightarrow } \newcommand\eqv{\ \equiv\ } \newcommand\cond{\rightarrow} \newcommand\vbar{\mid} \newcommand\turn{\ \vdash\ } % FIXME: "\ " results in extra space \newcommand\hilbert{\varepsilon} \providecommand\eqdef{\ \equiv\ } \renewcommand\eqdef{\ \equiv\ } \newcommand\natnums{\mbox{${\sf N}\!\!\!\!{\sf N}$}} \newcommand\bools{\mbox{${\sf T}\!\!\!\!{\sf T}$}} \newcommand\p{$\prime$} \newcommand\f{$\forall$\ } \newcommand\e{$\exists$\ } \newcommand\orr{$\vee$\ } \newcommand\negg{$\neg$\ } \newcommand\arrr{$\rightarrow$} \newcommand\hex{$\sharp $} \newcommand{\uquant}[1]{\forall #1.\ } \newcommand{\equant}[1]{\exists #1.\ } \newcommand{\hquant}[1]{\hilbert #1.\ } \newcommand{\iquant}[1]{\exists ! #1.\ } \newcommand{\lquant}[1]{\lambda #1.\ } \newcommand{\leave}[1]{\\[#1]\noindent} \newcommand\entails{\mbox{\rule{.3mm}{4mm}\rule[2mm]{.2in}{.3mm}}} % --------------------------------------------------------------------- % Font-changing commands % --------------------------------------------------------------------- \newcommand{\theory}[1]{\hbox{{\small\tt #1}}} \newcommand{\theoryimp}[1]{\texttt{#1}} \newcommand{\con}[1]{{\sf #1}} \newcommand{\rul}[1]{{\tt #1}} \newcommand{\ty}[1]{\textsl{#1}} \newcommand{\ml}[1]{\mbox{{\def\_{\char'137}\texttt{#1}}}} \newcommand{\holtxt}[1]{\ml{#1}} \newcommand\ms{\tt} \newcommand{\s}[1]{{\small #1}} \newcommand{\pin}[1]{{\bf #1}} % FIXME: for multichar symbols \mathit should be used. \def\m#1{\mbox{\normalsize$#1$}} % --------------------------------------------------------------------- % Abbreviations for particular mathematical constants etc. % --------------------------------------------------------------------- \providecommand{\T}{\con{T}} \renewcommand{\T}{\con{T}} \newcommand\F{\con{F}} \newcommand\OneOne{\con{One\_One}} \newcommand\OntoSubset{\con{Onto\_Subset}} \newcommand\Onto{\con{Onto}} \newcommand\TyDef{\con{Type\_Definition}} \newcommand\Inv{\con{Inv}} \newcommand\com{\con{o}} \newcommand\Id{\con{I}} \newcommand\MkPair{\con{Mk\_Pair}} \newcommand\IsPair{\con{Is\_Pair}} \newcommand\Fst{\con{Fst}} \newcommand\Snd{\con{Snd}} \newcommand\Suc{\con{Suc}} \newcommand\Nil{\con{Nil}} \newcommand\Cons{\con{Cons}} \newcommand\Hd{\con{Hd}} \newcommand\Tl{\con{Tl}} \newcommand\Null{\con{Null}} \newcommand\ListPrimRec{\con{List\_Prim\_Rec}} \newcommand\SimpRec{\con{Simp\_Rec}} \newcommand\SimpRecRel{\con{Simp\_Rec\_Rel}} \newcommand\SimpRecFun{\con{Simp\_Rec\_Fun}} \newcommand\PrimRec{\con{Prim\_Rec}} \newcommand\PrimRecRel{\con{Prim\_Rec\_Rel}} \newcommand\PrimRecFun{\con{Prim\_Rec\_Fun}} \newcommand\bool{\ty{bool}} \newcommand\num{\ty{num}} \newcommand\ind{\ty{ind}} \newcommand\lst{\ty{list}} % --------------------------------------------------------------------- % \minipagewidth = \textwidth minus 1.02 em % --------------------------------------------------------------------- \newlength{\minipagewidth} \setlength{\minipagewidth}{\textwidth} \addtolength{\minipagewidth}{-1.02em} % --------------------------------------------------------------------- % Environment for the items on the title page of a case study % --------------------------------------------------------------------- \newenvironment{inset}[1]{\noindent{\large\bf #1}\begin{list}% {}{\setlength{\leftmargin}{\parindent}% \setlength{\topsep}{-.1in}}\item }{\end{list}\vskip .4in} % --------------------------------------------------------------------- % Macros for little HOL sessions displayed in boxes. % % Usage: (1) \setcounter{sessioncount}{1} resets the session counter % % (2) \begin{session}\begin{verbatim} % . % < lines from hol session > % . % \end{verbatim}\end{session} % % typesets the session in a numbered box. % --------------------------------------------------------------------- \newlength{\hsbw} \setlength{\hsbw}{\textwidth} \addtolength{\hsbw}{-\arrayrulewidth} \addtolength{\hsbw}{-\tabcolsep} \newcommand\HOLSpacing{13pt} \newcounter{sessioncount} \setcounter{sessioncount}{0} \newenvironment{session}{\begin{flushleft} \refstepcounter{sessioncount} \begin{tabular}{@{}|c@{}|@{}}\hline \begin{minipage}[b]{\hsbw} \vspace*{-.5pt} \begin{flushright} \rule{0.01in}{.15in}\rule{0.3in}{0.01in}\hspace{-0.35in} \raisebox{0.04in}{\makebox[0.3in][c]{\footnotesize\sl \thesessioncount}} \end{flushright} \vspace*{-.55in} \begingroup\small\baselineskip\HOLSpacing}{\endgroup\end{minipage}\\ \hline \end{tabular} \end{flushleft}} % --------------------------------------------------------------------- % Macro for boxed ML functions, etc. % % Usage: (1) \begin{holboxed}\begin{verbatim} % . % < lines giving names and types of mk functions > % . % \end{verbatim}\end{holboxed} % % typesets the given lines in a box. % % Conventions: lines are left-aligned under the "g" of begin, % and used to highlight primary reference for the ml function(s) % that appear in the box. % --------------------------------------------------------------------- \newenvironment{holboxed}{\begin{flushleft} \begin{tabular}{@{}|c@{}|@{}}\hline \begin{minipage}[b]{\hsbw} % \vspace*{-.55in} \vspace*{.06in} \begingroup\small\baselineskip\HOLSpacing}{\endgroup\end{minipage}\\ \hline \end{tabular} \end{flushleft}} % --------------------------------------------------------------------- % Macro for unboxed ML functions, etc. % % Usage: (1) \begin{hol}\begin{verbatim} % . % < lines giving names and types of mk functions > % . % \end{verbatim}\end{hol} % % typesets the given lines exactly like {boxed}, except there's % no box. % % Conventions: lines are left-aligned under the "g" of begin, % and used to display ML code in verbatim, left aligned. % --------------------------------------------------------------------- \newenvironment{hol}{\begin{flushleft} \begin{tabular}{c@{}@{}} \begin{minipage}[b]{\hsbw} % \vspace*{-.55in} \vspace*{.06in} \begingroup\small\baselineskip\HOLSpacing}{\endgroup\end{minipage}\\ \end{tabular} \end{flushleft}} % --------------------------------------------------------------------- % Emphatic brackets % --------------------------------------------------------------------- \newcommand\leb{\lbrack\!\lbrack} \newcommand\reb{\rbrack\!\rbrack} % --------------------------------------------------------------------- % Quotations % --------------------------------------------------------------------- %These macros were included by ap; they are used in Chapters 9 and 10 %of the HOL DESCRIPTION \newcommand{\inds}%standard infinite set {\mbox{\rm I}} \newcommand{\ch}%standard choice function {\mbox{\rm ch}} \newcommand{\den}[1]%denotational brackets {[\![#1]\!]} \newcommand{\two}%standard 2-element set {\mbox{\rm 2}}