lcp@110: \typeout{Isabelle Manual Page Layout} lcp@110: lcp@110: % iman.sty lcp@110: % lcp@110: \typeout{Document Style iman. Released 15 September 1992} lcp@110: lcp@110: \hyphenation{Isa-belle} lcp@110: lcp@110: %%%INDEXING use sedindex to process the index lcp@110: %index, putting page numbers of definitions in boldface lcp@110: \newcommand\bold[1]{{\bf#1}} lcp@110: \newcommand\indexbold[1]{\index{#1|bold}} lcp@110: lcp@110: %for cross-references: 2nd argument (page number) is ignored lcp@110: \newcommand\see[2]{{\it see \/}{#1}} lcp@110: \newcommand\seealso[2]{{\it see also \/}{#1}} lcp@110: lcp@110: %set argument in \tt font; at the sime time, index using * prefix lcp@110: \newcommand\ttindex[1]{{\tt#1}\index{*#1}\@} lcp@110: \newcommand\ttindexbold[1]{{\tt#1}\index{*#1|bold}\@} lcp@110: lcp@110: %set argument in \bf font and index in ROMAN font (for definitions in text!) lcp@110: \newcommand\bfindex[1]{{\bf#1}\index{#1|bold}\@} lcp@110: lcp@110: lcp@110: %%Euro-style date: 20 September 1955 lcp@110: \def\today{\number\day\space\ifcase\month\or lcp@110: January\or February\or March\or April\or May\or June\or lcp@110: July\or August\or September\or October\or November\or December\fi lcp@110: \space\number\year} lcp@110: lcp@110: %%% underscores as ordinary characters, not for subscripting lcp@110: %% use @ or \sb for subscripting; use \at for @ lcp@110: %% only works in \tt font lcp@110: %% must not make _ an active char; would make \ttindex fail! lcp@110: \gdef\underscoreoff{\catcode`\@=8\catcode`\_=\other} lcp@110: \gdef\underscoreon{\catcode`\_=8\makeatother} lcp@110: \chardef\other=12 lcp@110: \chardef\at=`\@ lcp@110: lcp@110: % alternative underscore lcp@110: \def\_{\leavevmode\kern.06em\vbox{\hrule height.2ex width.3em}\hskip0.1em} lcp@110: lcp@110: %%% \dquotes permits usage of "..." for \hbox{...} -- also taken from under.sty lcp@110: {\catcode`\"=\active lcp@110: \gdef\dquotes{\catcode`\"=\active \let"=\@mathText}% lcp@110: \gdef\@mathText#1"{\hbox{\mathTextFont #1\/}}} lcp@110: \def\mathTextFont{\frenchspacing\tt} lcp@110: lcp@110: %%%% meta-logical connectives lcp@110: lcp@110: \let\Forall=\bigwedge lcp@110: \let\Imp=\Longrightarrow lcp@110: \let\To=\Rightarrow lcp@110: \newcommand\Var[1]{{?\!#1}} lcp@110: lcp@110: %%%% ``WARNING'' environment lcp@110: \def\dbend{\vtop to 0pt{\vss\hbox{\Huge\bf!}\vss}} lcp@110: \newenvironment{warn}{\medskip\medbreak\begingroup \clubpenalty=10000 lcp@110: \baselineskip=0.9\baselineskip lcp@110: \noindent \hangindent\parindent \hangafter=-2 lcp@110: \hbox to0pt{\hskip-\hangindent\dbend\hfill}\ignorespaces}% lcp@110: {\par\endgroup\medbreak} lcp@110: lcp@110: lcp@110: %%%% Standard logical symbols lcp@110: \let\turn=\vdash lcp@110: \let\conj=\wedge lcp@110: \let\disj=\vee lcp@110: \let\imp=\rightarrow lcp@110: \let\bimp=\leftrightarrow lcp@110: \newcommand\all[1]{\forall#1.} %quantification lcp@110: \newcommand\ex[1]{\exists#1.} lcp@110: \newcommand{\pair}[1]{\langle#1\rangle} lcp@110: lcp@110: \newenvironment{example}{\begin{Example}\rm}{\end{Example}} lcp@110: \newtheorem{Example}{Example}[chapter] lcp@110: lcp@110: \newcommand\lbrakk{\mathopen{[\![}} lcp@110: \newcommand\rbrakk{\mathclose{]\!]}} lcp@110: \newcommand\List[1]{\lbrakk#1\rbrakk} %was \obj lcp@110: \newcommand\vpile[1]{\begin{array}{c}#1\end{array}} lcp@110: lcp@110: \let\int=\cap lcp@110: \let\un=\cup lcp@110: \let\inter=\bigcap lcp@110: \let\union=\bigcup lcp@110: lcp@110: \newcommand{\rew}{\mathop{\longrightarrow}} lcp@110: \newcommand{\rewer}{\mathop{\longleftrightarrow}} lcp@110: lcp@110: \def\ML{{\sc ml}} lcp@110: \def\OBJ{{\sc obj}} lcp@110: lcp@110: \def\LCF{{\tt LCF}\@} lcp@110: \def\FOL{{\tt FOL}\@} lcp@110: \def\HOL{{\tt HOL}\@} lcp@110: \def\LK{{\tt LK}\@} lcp@110: \def\ZF{{\tt ZF}\@} lcp@110: \def\CTT{{\tt CTT}\@} lcp@110: \def\Cube{{\tt Cube}} lcp@110: \def\Modal{{\tt Modal}} lcp@110: lcp@110: %macros to change the treatment of symbols lcp@110: \def\relsemicolon{\mathcode`\;="303B} %treat ; like a relation lcp@110: \def\binperiod{\mathcode`\.="213A} %treat . like a binary operator lcp@110: \def\binvert{\mathcode`\|="226A} %treat | like a binary operator lcp@110: lcp@110: %redefinition of \sloppy and \fussy to use \emergencystretch lcp@110: \def\sloppy{\tolerance2000 \hfuzz.5pt \vfuzz.5pt \emergencystretch=15pt} lcp@110: \def\fussy{\tolerance200 \hfuzz.1pt \vfuzz.1pt \emergencystretch=0pt} lcp@110: lcp@110: \chardef\ttilde=`\~ % A tilde for \tt font lcp@110: \chardef\ttback=`\\ % A backslash for \tt font lcp@110: \chardef\ttlbrace=`\{ % A left brace for \tt font lcp@110: \chardef\ttrbrace=`\} % A right brace for \tt font lcp@110: lcp@110: \newfont{\sltt}{cmsltt10} %% for output from terminal sessions lcp@110: \newcommand\out{\ \sltt} lcp@110: lcp@110: %Indented, boxed alltt environment; uses \small\tt font lcp@110: %\leftmargini is LaTeX's first-level indentation for items (2.5em) lcp@110: %@endparenv is LaTeX's trick for preventing indentation of next paragraph lcp@110: \newenvironment{ttbox}{\par\nobreak\vskip-2pt lcp@110: \vbox\bgroup \small\begin{alltt} \leftskip\leftmargini}% lcp@110: {\end{alltt}\egroup\vskip-7pt\@endparenv} lcp@110: \newcommand\ttbreak{\end{ttbox}\vskip-10pt\begin{ttbox}} lcp@110: lcp@110: lcp@110: %%%Put first chapter on odd page, with arabic numbering; like \cleardoublepage lcp@110: \newcommand\clearfirst{\clearpage\ifodd\c@page\else lcp@110: \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi lcp@110: \pagenumbering{arabic}} lcp@110: lcp@110: %%%Ruled chapter headings lcp@110: \def\@rulehead#1{\hrule height1pt \vskip 14pt \Huge \bf lcp@110: #1 \vskip 14pt\hrule height1pt} lcp@110: \def\@makechapterhead#1{ { \parindent 0pt lcp@110: \ifnum\c@secnumdepth >\m@ne \raggedleft\large\bf\@chapapp{} \thechapter \par lcp@110: \vskip 20pt \fi \raggedright \@rulehead{#1} \par \nobreak \vskip 40pt } } lcp@110: lcp@110: \def\@makeschapterhead#1{ { \parindent 0pt \raggedright lcp@110: \@rulehead{#1} \par \nobreak \vskip 40pt } } lcp@110: nipkow@140: % "itmath.sty" use cmr italic for letters in math mode and get the nipkow@140: % usual letter spacing of text mode. nipkow@140: % nipkow@140: % Michael Lawley, April 1993 nipkow@140: % (lawley@cit.gu.edu.au) nipkow@140: % nipkow@140: % Derived from itma.sty (of unknown origin). lcp@110: % lcp@110: % MATHCODES lcp@110: % lcp@110: % The mathcodes for the letters A, ..., Z, a, ..., z are changed to nipkow@140: % generate text italic rather than math italic by default. This makes lcp@110: % multi-letter identifiers look better. The mathcode for character c nipkow@140: % is set to "7000 (variable class) + "400 (text italic) + c. nipkow@140: % nipkow@140: % For NFSS the mathcode is "7000 (variable class) + (hex)\itfam + c nipkow@140: % \itfam is probably equal to 7. nipkow@140: % nipkow@140: nipkow@140: \ifx\undefined\hexnumber@ nipkow@140: \def\hexnumber@#1{\ifcase#1 \z@ nipkow@140: \or \@ne \or \tw@ \or \thr@@ nipkow@140: \or 4\or 5\or 6\or 7\or 8\or nipkow@140: 9\or A\or B\or C\or D\or E\or F\fi} nipkow@140: \fi lcp@110: lcp@110: \def\@setmcodes#1#2#3{{\count0=#1 \count1=#3 nipkow@140: \loop \global\mathcode\count0=\count1 \ifnum \count0<#2 nipkow@140: \advance\count0 by1 \advance\count1 by1 \repeat}} lcp@110: nipkow@140: \edef\@tempa{\hexnumber@\itfam} nipkow@140: nipkow@140: \@setmcodes{`A}{`Z}{"7\@tempa 41} nipkow@140: \@setmcodes{`a}{`z}{"7\@tempa 61} nipkow@140: nipkow@140: \ifx\define@mathgroup\undefined\else nipkow@140: \define@mathgroup\mv@normal{\itfam}{cmr}{m}{it}\fi