Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/VDM/VDMSL/raildirSL/   (Wiener Entwicklungsmethode ©)  Datei vom 13.4.2020 mit Größe 73 kB image not shown  

SSL vdmsl-2e.sty

  Sprache: Latech
 

% Name: vdmsl-2e.sty
% Version: 1.1.35b
% $Id: vdmsl-2e.sty,v 1.3 1998/09/17 09:24:17 erik Exp $
% Updated 980907, IFAD. 
% Based on:  
% @(#) vdmsl.sty version 1.1.35 dated 95/07/06 at 11:46:19
% Contact: gip@ditc.npl.co.uk
%
%% ------------------------------------------------------------------%
%%  vdmsl.sty:                                                      -%
%%                                                                  -%
%%      BSI (Proto Standard) VDM SL documentstyle option for LaTeX  -%
%%                                                                  -%
%%       Written by         Jan-Bert Oostenenk, 1990                -%
%%                                                                  -%
%%      I am a student Hoger Informatica Onderwijs (HIO),           -%
%%                     Hogeschool Enschede, The Netherlands.        -%
%%                                                                  -%
%%                                                                  -%
%%      e-mail to Graeme I Parkin  gip@ditc.npl.co.uk               -%
%%                                                                  -%
%%                                                                  -%
%%                                                                  -%
%%                                                                  -%
%%                                                                  -%
%%      Version  1.1.35
%%                                                                  -%
%%      Some parts of this file are copied with permission from     -%
%%      Mario Wolczko from vdm.sty. Mainly the symbols and the      -%
%%      definition of the mathcodes.                                -%
%%      Debugging carried out by I.P.Dickinson                      -%
%%      Debugging and further development by K.J.Lines              -%
%%      Thanks to Derek Andrews and Paul Makherjeei                 -% 
%%                                                                  -%
 \typeout{BSI VDM SL style option <96/05/07> version 1.1.35b for LaTeX2e}
\typeout{This version of the macros contains some changes}
\typeout{which are not backwards compatible with previous}
\typeout{versions. See sections 6.4.1012.4.1 and   thenshow ?thesis by auto simpadd partition_filter1 partition_filter2
\typeout{of the user guide.}
\typeout{Also see sections 5.4.15.5.15.5.7 and 5.6.1}
%% --Customizing------------------------------------------------------%
                     %% Because of changes to latex.tex                       -%
                     %% change order of \begingroup and \def\@currenvir{...}, -%
                     %% necessary for latex versions before 24 May 1989       -%
                     %% Check in latex.tex if \begin, \end and, \@checkend    -%
                     %% are changed on 24 May 1989                            -%
\def\@@precond{\begingroup \def\@currenvir{precond}}%       % if
                                                    %       changed
                                                    %       -%

 % \def\@@precond{\def\@currenvir{precond}\begingroup}    % if not changed -%
\def\@@postcond{\begingroup \def\@currenvir{postcond}}%       % if
                                                    %       changed
                                                    %       -%

 % \def\@@postcond{\def\@currenvir{postcond}\begingroup}    % if not changed -%

\def\VdmSlAuthor{{\sffamily Jan-Bert Oostenenk}}
 \def\VdmSlVersion{\VdmSlversion 1.1.35}
\def\VdmSl{{\rm\leavevmode{\raise .15ex\hbox{V}\kern-.3em%
            \raise-.4ex\hbox{\sc d\kern-.11em m}\kern-.15em%
            \raise.15exhboxS}kern.2em
            \raise-.4ex\hbox{\sc l}}}}

\newif\ifoldams@
\newif\ifams@
\ams@true
\oldams@false
\ifoldams@
     \ifams@
          \@latexerr{Can't use both AMSFonts 2.0 and the previous version}%
                     {VDMSL.STY has been set up so that it is trying to
                      use both AMSFonts 2.0 and the previous version of the
                      AMS fonts.
                      Tell your system"partition f xs=(filterfxsfilterNot\circ>f)xs)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
                      correctly.}
     \fi
\fi
\newif\ifps\ps@false % PostScript-based
\def\@fmtname{LaTeX2e}
\def\@psfmtname{pslplain}
\def\@testcmsy{\if@usecmsy 
               \else 
                   \@latexerr{Can't use vdm with this PSLaTeX}%
                             {This PSLaTeX does not have the CMSY symbols
                              available, and cannot be used with VDM style.  Get
                              a guru to rebuild PSLaTeX with the CMSY and CMMI
                              fonts included.}
               \fi}
def@estcmmi{if@ 
               \else
                   \@latexerr{Can't use vdm with this PSLaTeX}%
                             {This PSLaTeX does not have the CMMI symbols
                              available, and cannot be used with VDM style.  Get
                              a guru to rebuild PSLaTeX with the CMSY and CMMI
                              fonts included.}
              \fi}
\ifx\fmtname\@fmtname % standard LaTeX is OK
\else 
    \ifx\fmtname\@psfmtname 
           \global\ps@true 
           \@testcmsy 
           \@testcmmi
    \else 
           
    \fi
\fi % don't use AMS for SliTeX 
\ifams@
        \DeclareFontFamily{U}{msa}{}
        \DeclareFontFamily{U}{msb}{}
\else
        \ifoldams@
                \DeclareFontFamily{U}{msy}{}
                \DeclareFontFamily{U}{msx}{}
        \fi
\fi
\ifams@
     \DeclareFontShape{U}{msa}{m}{n}
                  { <5> <6> <7> <8> <9> gen * msam
                    <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> msam10}{}
      \DeclareFontShape{U}{msb}{m}{n}
                  { <5> <6> <7> <8> <9> gen * msbm
                    <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> msbm10}{}
\else
        \ifoldams@
             \DeclareFontShape{U}{msy}{m}{n}
                   { <5> <6> <7> <8> <9> gen * msymlosejava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
                    <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> msym10}{}
              \DeclareFontShape{U}{msx}{m}{n}
                   { <5> <6> <7> <8> <9> gen * msxm
                    <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> msxm10}{}
        \fi
\fi
\ifams@
        \DeclareSymbolFont{AMSa}{U}{msa}{m}{n}
        \DeclareSymbolFont{AMSb}{U}{msb}{m}{n}
\else
        \ifoldams@
                \DeclareSymbolFont{AMSx}{U}{msx}lemma nth_Cons_0[simp, code:"xs!=xjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
                \DeclareSymbolFont{AMSy}{U}{msy}{m}{n}
        \fi
\fi
\DeclareMathAlphabet{\mathit}{OT1}{cmr}{m}{it}
\DeclareOldFontCommand{\vdm@it}{\relax}{\mathit}
\let\saved@vdm@it\vdm@it
\everymath=\expandafter{\the\everymath\vdm@it
                        \@changeMathmodeCatcodes}
\everydisplay=\expandafter{\the\everydisplay\vdm@it 
                           \@changeMathmodeCatcodes}
\mathcode`\0="0030
\mathcode`\1="0031
\mathcode`\2="0032
\mathcode`\3="0033
\mathcode`\4="0034
\mathcode`\5="0035
\mathcode`\6="0036
\mathcode`\7="0037
\mathcode`\8="0038
\mathcode`\9="0039
\def\defaultMathcodes{\let\vdm@it\relax}
\def\vdmMathcodes{\let\vdm@it\saved@vdm@it}
{\catcode`\"=\active
 \gdef\@changeMathmodeCatcodes{%
        % make ~ mean \old, " do text, %@ mean subscript
        \let~=\old
        %\catcode`\@=8
        \catcode`\"=\active  \let"=\@mathText}
 \gdef\@mathText#1"{\hbox{\Dquote\MathTextFont{#1}\/\Dquote}}}
 
\ifps@
        \def\@changeOtherMathcodes{
                \mathcode`\:="203A
                \mathcode`\-="002D
                \mathcode`\|="327C 
                \mathchardef\Or="32DA % this is a rel to get 5mu spacing
                \mathcode`\f="0166} % normal letter spacing
\else
        \def\@changeOtherMathcodes{
                \mathcode`\:="203A 
           mathcode-"002java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
                \mathcode`\|="326A 
                \mathchardef\Or="325F}% this is a rel to get 5mu spacing
\fi
\def\To{\penalty-100\rightarrow}        % function arrow \ifams@
\def\Pto\tilde{\rightarrow}}          % Partial function arrow.
\ifams@
        \DeclareMathSymbol{\Bool}{\mathord}{AMSb}{"42}
        \DeclareMathSymbol{\Nat}{\mathord  byauto
        \def\Nati{\Nat_1}
        \DeclareMathSymbol{\Int}{\mathord}{AMSb}{"5A}
        \DeclareMathSymbol{\Real}{\mathord}{AMSb}{"52} 
        \DeclareMathSymbol{\Rat{{AMSb{51}
        \DeclareMathSymbol{\@Sconc}{\mathbin}{AMSb}{"079} 
        \def\Sconc{\mathbin{\hbox{\raise.75ex\hbox{$\@Sconc$}}}}
        \DeclareMathSymbol{\Dto}{\mathbin}{AMSa}{"43}   
        \DeclareMathSymbol{\Rto}{\mathbin}{AMSa}{"42}  
\else 
        \ifoldams@
                \DeclareMathSymbol{\Bool}{\mathord}{AMSy}{"42}
                \DeclareMathSymbol{\Nat}{\mathord}{AMSy}{"4E}
                \def\Nati{\Nat_1}
                \DeclareMathSymbol{\Int}{\mathord}{AMSy}{"5A}
                \DeclareMathSymbol{\Real}{\mathord}{AMSy}{"52}
                \DeclareMathSymbol{\Rat}{\mathord}{AMSy}{"51}
                \DeclareMathSymbol{\@Sconc}{\mathbin}{AMSy}{"079}  
                \def\Sconc{\mathbin{\hbox{\raise.75ex\hbox{$\@Sconc$}}}}
                \DeclareMathSymbol{\Dto}{\mathbin}{AMSx}{"43}
                \DeclareMathSymbol{\Rto}{\mathbin}{AMSx}{"42}
        \else
                \def\Bool{\hbox{\bfseries B\/}}
                \def\Nat{\hbox{\bfseries N\/}}
                \def\Nati{\hbox{$\hbox{\bf N}_1$}}
                def{hbox\bfseries \/}}
                \def\Real{\hbox{\bfseries R\/}}
                \def\Rat{\hbox{\bfseries Q\/}}
                \def\Sconc{\mathbin{\hbox{\raise.75ex\hbox{$\frown$}\kern-0.47em
                \raise0.2ex\hbox{\it\char"12}}}} 
                \def\Dto{\mathbin{\triangleleft}}
                \def\Rto{\mathbin{\triangleright}}
        \fi
\fi
\let\Natone=\Nati                        % just for an alternative
\def\Set{-\kw{set}}       
\def\Emptyset{\lbrace\mskip\thinmuskip\rbrace}
\def\Emptymap{\lbrace\Mapsto\rbrace}
\def\Seq#1{\seqof{#1}{}}
\def\Emptyseq{  (auto : Nat.gr0_conv_Suc)
\def\Gmap{\buildrel m\over\longrightarrow}
\def\Bmap{\buildrel m\over\longleftrightarrow}
\let\X=\times
\def\Setdiff{\mathbin{\hbox{$\backslash$}}}
\ifps@
          \def\Fdef{\raise.5ex
                    \hbox{\hskip.4em\relax
                    \footnotesize\underline{$\mathchar"3\cmsy@34$}%
                    \hskip.5em\/}}    %      a triangle
        \mathchardef\Minus="222D
  % domain subtraction % range subtraction
        \def\Dby{\mathbin{\hbox{$\rlap{$\mathord\Minus$}\mkern-3mu\hbox{$\Dto$}$}}}
        \def\Rby{\mathbin{\hbox{$\rlap{$\mathord\Minus$}\mkern-1.6mu\Rto$}}}
  \mathchardef\@Exists="0224
  \mathchardef\@All="0222
  \mathchardef\Dot="22D7
\else
  \def\Fdef{\raise.5ex
    \hbox{\hskip.4em\relax
      \footnotesize\underline{$\mathchar"3234$}%
      \hskip.5em\/}}                                         % a triangle
  \mathchardef\Minus="2200
  \def\Dby{\mathbin{\hbox{$\rlap{$\mathord\Minus$}\mkern-1.6mu
        \lower.1ex\hbox{$\Dto$}$}}}
  \def\Rby{\mathbin{\hbox{$\rlap{$\mathord\Minus$}\mkern-1.6mu
        \lower.exhbox{Rto}}}}
  \mathchardef\@Exists="0239
  \mathchardef\@All="0238
  \mathchardef\Dot="2201
\fi
\def\Oto{\buildrel o\over\rightarrow% Operation arrow
\let\Mapsto=\mapsto \let\Seqmod=\mapsto \let\Recmod=\mapsto
\def\Ass{\mathrel{:\!=}}
\def\Nondet{\parallel\mskip\medmuskip}
\let\In=\in
\def\Uminus{\hbox{$\Minus\mskip\medmuskip$}}
\def\Uplus{\hbox{$+\mskip\medmuskip$}}
\def\Not{\neg\,}
\def\Power{{\cal F\mskip\medmuskip}}
\let\Dunion=\bigcup
\let\Dinter=\bigcap 
\def\Inverse{^{-1}}
\def\Exponent{\hbox{$\X10\raise.37ex\hbox{$\uparrow$}$}%
  \@ifnextchar+{proof(induct xs arbitrary: n)
    {\@ifnextchar-{\def\@tmpa-{\hbox{$\Minus$}}\@tmpa}{}}}
\let\Exp=\uparrow
\let\Iterate=\uparrow
\let\Union=\cup 
\def\Mapmerge{\mathbin{\shortstack{\tiny m \\[-1.8ex] $\bigcup$}}}
\let\Inter=\cap 
\let\Diff=\setminus
% Swopped around
\let\Psubset=\subset
\let\Subset=\subseteq
\def\Notin{\not\in}
\let\Override=\dagger 
\let\Compose=\circ
\let\And=\land
\let\@and=\and
\def\and{\ifmmode\And\else\@and\fi}
\def\Implies{\penalty-35\mskip 6mu plus 2mu minus 1mu \Rightarrow
        \mskip 6mu plus 2mu minus 1mu}
\def\Equiv{\penalty-50\mskip 7mu plus 2mu minus 2mu
           \Leftrightarrow\mskip 7mu plus 2mu minus 2mu}
\let\Neq=\neq
\letLe\leq
\let\Ge=\geq
\def\Exists{\@Exists\,}
\def\All{\@All\,}
\def\Unique{\@Exists!\,}
% Replaced line below to remove clash with LaTeX macro
% \def\Iota{\@iota\,}
\def\Iotaop{\@iota\,}
\let\Lb=\lbrace
\let\Rb=\rbrace
\def\Dcolon{\mskip\thinmuskip\hbox{:\kern.1em:\/}\mskip\thinmuskip}
\let\Range=\ldots
% Replaced line below because clashed with LaTeX macro
% \let\Mu=\mu
\let\Muop=\mu
\def\Lambdaop{\@lambda\,}
\def\Quote{{\mathcode`\'='047 '}}
\def\Dquote{\hbox{\tt\char34}}
\def\Old{\old{\rule{0pt}{1em}}}
\def\Comment{\hbox{ --{--} }}
%_
\gdef\initialise@fonts{
        \gdef\LineNrFont{\footnotesize\rmfamily\upshape}
        \let\ModuleNrFont=\LineNrFont 
        \DeclareTextFontCommand{\ConstantFont}{\scshape}
        \DeclareTextFontCommand{\MathTextFont}{\rmfamily}
        \gdef\CommentFont{\rmfamily}
        \gdef\AnnotationsFont{\rmfamily}
}
\ifx\fmtname\@fmtname       
        \DeclareTextFontCommand{\KeywordFont}{\small\sffamily}
\else
        \ifx\fmtname\@psfmtname
                \DeclareTextFontCommand{\KeywordFont}{\sffamily}
        \else 
                \DeclareTextFontCommand{\KeywordFont}{\bfseries}
        \fi
\fi

\newif\ifVDM@                           \VDM@false
\def\vdm{%
  \ifVDM@\else
    \par 
    \VDM@true
    \set@linebreaks
    \@changeSkips
    \@changeMathmodeCatcodes
    \@changeMargins
    \interlinepenalty\@M   
  \fi \@ignorespaces}
\def\endvdm{\par}                                
\def\b@mathmode{%\@raggedRight
  \iffn@in@let@ \strut\relax \else \leavevmode$\strut\relax \fi}
\def\e@mathmode{\iffn@in@let@ \relax\strut \else \relax\strut\fi}
\newdimen\w@Rindent \w@Rindent=\parindent
\let\VdmBaselineskip=\baselineskip
\def\@changeMargins{\advance\hsize by -\w@Rindent\parindent=\z@}
java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 49
\def\@changeSkips{\baselineskip=\VdmBaselineskip
  \lineskip=\z@\lineskiplimit=\z@\parskip=\z@
  % need to alter the size of struts, too
  \setbox\strutbox\hbox{\vrule  by (auto simp: nth_append)
      depth.3\baselineskip width\z@}}
\def\Vdmus{\leavevmode \kern.06em\vbox{\hrule\@height .2ex\@width .3em}
  \hskip 0.1em}
\def\kw#1{\hbox{\KeywordFont{#1}\/}}
 
\def\makeNewKeyword#1#2{%        
          \newcommand{#1}{\hbox{\KeywordFont{#2}\/}}}
\def\@mNK#1#2{\def#1{\hbox{\KeywordFont{#2}\/}}}
 
\def\const#1{\hbox{\ConstantFont{#1}\/}}
  
\def\makeNewConstant#1#2{%       
        
\@mNK\Abs{abs }
\@mNK\Card{card }
\@mNK\Conc{conc }
\@mNK\Char{char}
\@mNK\Div{ div }
\@mNK\Dom{dom }
\@mNK\Elems{elems }
\@mNK\False{false}
\@mNK\Floor{floor }
\@mNK\Hd{hd }
\@mNK\Inds{inds }
mNK}
\@mNK\Merge{merge }
\@mNK\Mod{ mod }
\@mNK\Nil{nil }
\@mNK\Rd{rd }
\@mNK\Rem{ rem }
\@mNK\Rng{rng }
\@mNK\Tl{tl }
\@mNK\Token{token}
\@mNK\True{true}
\@mNK\Undefined{undefined }
\@mNK\Using{ using }
\@mNK\Wr{wr }
\@mNK\kAs{as }
\@mNK\kAlways{always }
\@mNK\kBeSt{be st }
\@mNK\kBy{by }
\@mNK\kCases{cases 
\@mNK\kCompose{compose }
\@mNK\kDcl{dcl }
\@mNK\kDef{def }
\@mNK\kDefinitions{definitions }
\@mNK\kDo{do }
\@mNK\kElse{else }
\@mNK\kElseif{elseif }
\@mNK\kEnd{end }
\@mNK\kErrs{errs }
\@mNK\kExit{exit }
\@mNK\kExports{exports }
\@mNK\kExt{ext }
\@mNK\kFor{for }
\@mNK\kForAll{for all }
\@mNK\kFrom{from }
\@mNK\kFunctions{functions }
\@mNK\kIf{if }
\@mNK\kImports{imports }
\@mNK\kIn{in }
\@mNK\kInit{init }
\@mNK\kInstantiation{instantiation }
\@mNK\kInv{inv }
\@mNK\kLet{let }
\@mNK\kModule{module }
\@mNK\kOf{of }
\@mNK\kOperations{operations }
\@mNK\kOthers{others }
\@mNK\kParameters{parameters }
\@mNK\kPost{post }
@\Prepre}
\@mNK\kReturn{return }
\@mNK\kReverse{reverse }
\@mNK\kState{state }
\@mNK\kThen{then }
\@mNK\kTixe{tixe }
\@mNK\kTo{to }
\@mNK\kTrap{trap }
\@mNK\kTypes{types }
\@mNK\kValue{value }
\@mNK\kValues{values }
\@mNK\kWith{with }
\@mNK\kWhile{while }
\newcount\c@module  \c@module=\z@                         
\newcount\c@outer   \c@module=\z@                       
\newcount\c@inner                           
\newdimen\w@outer                              
\newdimen\w@inner                              
\newdimen\wi@ln                   
\def\setindent#1#2{\expandafter \csname w@#1\endcsname=#2 \relax
  \@iflnw{#1}\@ifannw{#1}\ignorespaces}
\def\addtoindent#1#2{
  \def\@ann{AnnIndent}
  \def\@@firstarg{#1}
  \expandafter\global
  \expandafter\advance
  \expandafter\csname w@#1\endcsname by #2\relax
  \ifx \@ann\@@firstarg
      \@ifannw{#1}
  \else
      \@iflnw{#1}
  \fi 
  \ignorespaces}
\def\setindenttowidth#1#2{\ifmmode\setbox\tmp@box=\hbox{$\strut#2\strut$}%
 \else\setbox\tmp@box=\hbox{#2}\fi
 \expandafter\csname w@#1\endcsname=\wd\tmp@box
 \@iflnw{\wd\tmp  by( ) java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
\def\width#1{\csname w@#1\endcsname}
\def\newindent#1#2{\expandafter\@ifdefinable \csname w@#1\endcsname
  {\expandafter\newdimen \csname w@#1\endcsname\setindent{#1}{#2}}}
\def\@iflnw#1{{
\}
   \def\@outer{outer}
   \def\@tmpa{#1}%
   \ifx \@inner\@tmpa
        \global\let\@gtmpa=\setw@ln
   \else 
        \ifx \@outer\@tmpa 
             \global\let\@gtmpa=\setw@ln
        \fi 
   \fi}
% macro works on the assumption that #1 is either 'inner'
% or 'outer'     kjl 24/7/92
   \@gtmpa}
\def\@ifannw#1{{%
   \def\@tann{AnnIndent}
   \def\@tmpa{#1}%
   \ifx \@tann\@tmpa 
       \global\let\@gtmpa\setw@ann 
   \fi}
% macro works on the assumption that #1 is 'AnnIndent'  kjl 24/7/92
   \@gtmpa}
\def\setw@ln{\wi@ln=\w@outer \advance\wi@ln by\w@inner \relax}
\def\lninc@outer{\global\advance\c@outer by \@ne \global\c@inner=\z@}           
\def\lninc@inner{\global\advance\c@inner by \@ne}      
    
\def\lnput@module{\ModuleNrFont\themodule}    
\def\lnput@outer{\LineNrFont\the\c@outer}                
\def\lnput@inner{\LineNrFont.\the\c@inner}              
\def\lnput@.{\LineNrFont.}
\def\lnbox@module{%                                              
  \hbox to \wi@ln{\hss\lnput@module\hskip \w@inner}}
\def\lnbox@outer@inner{%                                         
  \hbox to \wi@ln{\hss\lnput@outer\hbox to\w@inner{\lnput@inner\hss}}}
\def\lnbox@outer@{%                                              
  \hbox to \wi@ln{\hss\lnput@outer\hbox to\w@inner{\lnput@.\hss}}}
\def\lnbox@@inner{%                                              
  \hbox to\wi@ln{\hss\hbox to\w@inner{\lnput@inner\hss}}}
\def\lnbox@{\hbox to\wi@ln{}}
\def\lnout@{\lnbox@\penalty\@M\@indent\penalty\@M}
\def\linenumbering{%
  \def\lnout@m{\lninc@module \lnbox@module \penalty\@\@indent \penalty\@M}%
  \def\lnout@oi{\lninc@outer \lnbox@outer@inner \penalty\@M
    \@indent \penalty\@M}%
  \def\lnout@o{\lninc@outer \lnbox@outer@ \penalty\@
    \@indent \penalty\@M}%
  \def\lnout@i{\lninc@inner \lnbox@@inner \penalty\@\@indent \penalty\@M}%
  \let\annlab=\@annlab}
\def\nolinenumbering{\let\lnout@m=\lnout\let\lnout@oi=\lnout@
  \let\lnout@o=\lnout\let\lnout@i=\lnout@
  \def\annlab[##1]##2{\ignorespaces}}
\def\modulenumbering#1{\gdef\themodule{\csname @#1\endcsname\c@module}
  \gdef\lninc@module{\global\advance\c@module by \@ne \global\c@outer=\z@}}
\def\nomodulenumbering{\global\let\themodule=\@empty
  \gdef\lninc@module{\global\advance\c@module by \@ne}}
\def\set@linebreaks{%
    \let\@old@linebr=\\%                                           
                    
    \def\@linebr{\newline \lnout@i \ignorespaces}%
    \let\\=\@linebr}
\def\@par@linebr{\@par\leavevmode \lnout@i \@ignorespaces}
\def\@linebr{%                            
  \newline \lnout@i \ignorespaces}
\def\reset@linebreaks{%
  \let\\=\@old@linebr
\\=
\def\I#1{\\\hskip #1\relax}
\def\R{\\\hspace*{\fill}}
\def\V{\@ifoptarg{\@V@linebr}{\@V@linebr\z@]}}
\def\@V@linebr#1]{\ifmmode $\@@par\vskip#1\relax\leavevmode \lnout@i $%
  \else\@par\vskip#1\relax\leavevmode \lnout@i \fi \@ignorespaces}
\newdimen\w@small@indent        \w@small@indent=0.3em  %kjl 17/3/93
\newdimen\w@Indent              \w@Indent=1em  
\newdimen\w@IIndent             \w@IIndent=1em
\newdimen\w@IIIndent            \w@IIIndent=1em
\newdimen\w@DIndent             \w@DIndent=2em
\newdimen\wi@indent \wi@indent\z@        
\def\@indent{\hskip\wi@indent\relax}    
                                        
\def\add@indent#1{\global\advance\wi@indent by #1\relax}
\def\sub@indent#1{\global\advance\wi@indent by -#1}
\def\copy@indent#1{\setbox\tmp@box=\hbox{$\copy\strutbox\relax
  #1\copy\strutbox$}\global\advance\wi@indent by\wd\tmp@box\box\tmp@box\relax}
\def\addw@indent#1{ :xs\noteq [ <>hd  xs"
  #1\copy\strutbox$}\global\advance\wi@indent by \wd\tmp@box\relax}
\def\subw@indent#1{\setbox\tmp@box=\hbox{$\copy\strutbox\relax
  #1\copy\strutbox$}\global\advance\wi@indent by -\wd\tmp@box\relax}
\def\add@small{\global\advance\wi@indent by\w@small@indent\relax}
\def\sub@small{\global\advance\wi@indent by-\w@small@indent\relax}
\def\add@I{\global\advance\wi@indent by\w@Indent\relax}
\def\sub@I{\global\advance\wi@indent by-\w@Indent\relax}
\def\addII{\lobaladvancewi@ by\@IIndent\relax}
\def\sub@II{\global\advance\wi@indent by-\w@IIndent\relax}
\def\add@III{\global\advance\wi@indent by\w@IIIndent\relax}
\def\sub@III{\global\advance\wi@indent by-\w@IIIndent\relax}
\def\add@DI{\global\advance\wi@indent by\w@DIndent\relax}
\def\sub@DI{\global\advance\wi@indent by-\w@DIndent\relax}
\def\kw@indent#1{\setbox\tmp@box=\kw{#1}%
  \global\advance\wi@indent by \wd\tmp@box \box\tmp@box \relax}
\def\sub@kw@indent#1{\setbox\tmp@box=\kw{#1}%
  \global\advance\wi@indent -\wd\tmp@box\relax}
\def\sb@indent#1{\setbox\tmp@box=\hbox{$\copy\strutbox\relax#1\copy\strutbox$}%
  \global\advance\wi@indent by\wd\tmp@box \box\tmp@box\relax}
\def\@nopagebreak{\gdef\par{\@@par \penalty\@\global\let\par=\@@par
  \penalty\@M}}
\def\startpagebreaks{\interlinepenalty=400}
\def\@ignorespaces{\global\@ignoretrue\ignorespaces}
\def\@emptyHooks#1{%                                          
  \expandafter\gdef\csname pre#1Hook\endcsname{} 
  \expandafter\gdef\csname post#1Hook\endcsname{}}
defnewSkip#%                                 
  \expandafter\newskip\csname pre#1Skip\endcsname
  \expandafter\csname pre#1Skip\endcsname=#2\relax}
\def\@newSkips#1#2#3{%              
  \expandafter\newskip\csname pre#1Skip\endcsname
  \expandafter\csname pre#1Skip\endcsname=#2\relax
  \expandafter\newskip\csname post#1Skip\endcsname
  \expandafter\csname post#1Skip\endcsname=#3\relax}

% kjl 30/7/91
\def\b@Macro#1#2{%
  \par \vskip#1 \relax#2\leavevmode}
\def\e@Macro#1#2{#1\vskip#2\relax}
\def\endMacroHook{}
\newskip\endMacroSkip           \endMacroSkip=1ex plus .2ex minus .2ex
\def\endMacro{\e@Macro\endMacroHook\endMacroSkip}
\def\b@Kw@I#1#2#3#4{%
  \par \vskip#3 \relax #4\First@true \leavevmode \lnout\kw{#2}%
  \def\e@Kw@I  case Cons x xs ys)
  \add@indent{#1}\@nopagebreak\ignorespaces}
\def\b@Kw@II#1#2#3#4{%
  \par \vskip #2\relax #3\First@true \leavevmode \lnout\kw{#1}%
  \add@indent{#4}\def\ei@Kw@II{\sub@indent{#4}}%
  \def\e@Kw@II##1##2{\sub@indent{#4}##1\vskip##2\relax\ignorespaces}
  \@nopagebreak\ignorespaces}
\newif\ifnl@                    \nl@false              
 \def\@iflinebr#1#2{\@ifnextchar\\{\nl@true\def\@tmpa\\{#1}\@tmpa}
                                 {\global\nl@false#2}}
\def\@ifoptarg#1#2{\@ifnextchar[{\def\@tmpa[{#1}\@tmpa}{#2}}
\def\@iflinebrarg#1#2#3#4{%
 \@iflinebr{\@ifnextchar[{\def\@tmpa[{#1}\@tmpa}{#2}}
           {\@ifnextchar[{\def\@tmpa[{#3}\@tmpa}{#4}}}
\def\@iflinebrstar#1#2#3#4{%
  \@iflinebr{\@ifnextchar*{\def\tmpa*{#1}\tmpa}{#2}}
            {\@ifnextchar*{\def\tmpa*{#3}\tmpa}{#4}}}
\newif\ifempty@
\def\@ifempty#1{%\empty@true\ifx#1\else\empty@false\fi\ifempty@}
  \def\@tmpa{#1x}\def\@tmpb{x}\ifx\@tmpa\@tmpb}
\newif\ifFirst@                 \First@false
\def\F@comma{%
        \ifpunct@set@it@
                \global\punct@set@it@false
        \else
                \ifFirst
                        \global\First@false 
                \else ,
                \fi
        \fi}                            
                                              
% kjl 18/3/93
\def\F@comma@pl{%
        \ifpunct@set@it@
                \global\punct@set@it@false
                \@par@linebr
        \else
                \ifFirst
                        \global\First@false 
                \else
                        ,%
                        \@par@linebr
                \fi
        \fi}
% kjl 18/3/93    26/3/93
\def\F@comma@linebr{%
        \ifpunct@set@it@
                \global\punct@set@it@false
                \@linebr
        \else
                \ifFirst
                        \global\First@false 
                \else,%
                     \@linebr 
                \fi
        \fi}
\def\F@linebr{\ifFirst@
                  \global\First@false 
              \else 
                  \@linebr 
              \fi}
\def\F@par@linebr{\ifFirst
                     \global\First@false 
                  \else 
                      \@par@linebr 
                  \fi}
\newdimen\@                  wi@id=0java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
\newif\ifId@w@                   \Id@w@false
\efleftalignment\et@left@ss\@empty \et\mid@hss\ss \\@ighthss\hss}
\def\rightalignment{\let\@left@hss\hss \let\@mid@hss\@empty 
  \let\@right@hss\@empty}
\def\b@id@indent#1#2{%
 \@ifempty{#2\hskip\wi@id \setbox\tmp@box=\hbox{$\strut #1\strut$}%
   \hskip\wd\tmp@box \add@indent{\wd\tmp@box}
 \else 
    \ifId@w@ \let\\=\w@id@linebr
      \hbox to \wi@id \bgroup \@left@hss$#2$\@mid@hss \egroup%
    \else \let\\=\id@linebr
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      \wi@id=\wd\tmp@box \box\tmp@box \fi
    \sb@indent{#1}%
  \fi 
  \def\e@id@indent{\sub@indent\wi@id \subw@indent{#1}}%
  \let\\=\@linebr \add@indent\wi@id}
\def\setw@id#1{\@ifoptarg{\@setw@id{#1}}{\Id@w@false#1}}
\def\@setw@id#1#2]{\Id@w@true \setbox \tmp@box=\hbox{$#2$}%
  \wi@id=\wd\tmp@box \relax #1}
\def\w@id@linebr{\strut $\@mid@hss \egroup \@linebr 
  \hbox to \wi@id \bgroup \@left@hss$}
\def\id@linebr{\strut $\egroup \box\tmp@box \@linebr 
  \setbox\tmp@box \hbox \bgroup $}
def@#{\Fblcltblone{1}@}
\def\@bls{\@iflinebr{\ml@bls}{\sl@bls}}
\def\sl@bls#1{\b@bl@one@indent\bl@sep
  \M@bl@two\b@bl@two#1\e@bl@two\M@bl@two\e@bl\e@bls\ignorespaces%
  }
\def\ml@bls#1{\M@bl@one\the\t@bl@one\@sep\M@bl@one\add@DI\\
  \M@bl@two#1\M@bl@two\sub@DI\e@bls\ignorespaces}
\let\b@bl@two=\@empty\let\e@bl@two=\  have"insertx {xs ! i |. i < lengthxs} = {x # xs)!  |. i<Suc lengthxs)"is "L?"java.lang.StringIndexOutOfBoundsException: Index 98 out of bounds for length 98
\def\IM@bls{\let\M@bl@one=\@empty\let\M@bl@two=\@empty       
  \let\F@bl@cl=\F@comma@linebr}
\def\MN@bls{\let\M@bl@two=\@empty                
  \ifmmode\let\M@bl@one=\empty\let\F@bl@cl=\F@comma@linebr
  \else \let\M@bl@one=$\let\F@bl@cl=\F@comma@pl \fi}
\def\MM@bls{\let\M@bl@one=$\let\M@bl@two=$%             
  \let\F@bl@cl=\F@comma@pl}
\def\AM@bls{\ifmmode\IM@bls\else\MM@bls\fi}        
\def\MC@bls{\ifmmode\IM@bls\else\MN@bls\fi}          
\newdimen\wi@blo
\newdimen\wi@sep                                \wi@sep=\z@
\newdimen\wi@old@indent
\newdimen\wi@w@blo
\newtoks\t@bl@one
\newbox\tmp@box
\newif\ifWidth@bl@one                   \Width@bl@onefalse
\def\setw@bl#1{\@ifoptarg{\setw@@bl@one{#1}}{\Width@bl@onefalse#1}}
\def\setw@@bl@one#1#2]{\Width@bl@onetrue
  \setbox\tmp@box=\hbox{$\strut#2\strut$}\wi@blo=\wd\tmp@box\relax#1}
\def\b@bl@one@indent{%
  \wi@old@indent=\wi@indent
  \ifWidth@bl@one 
    \let\\=\bl@w@linebr
    \hbox to \wi@blo \bgroup \@left@hss $
      \   show"R\subseteq Ljava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
  \else
    \let\\=\bl@linebr
    \@w@blo=wiindent 
    \setbox\tmp@box=\hbox \bgroup $ \the\t@bl@one \strut $\egroup
    \wi@blo=\wd \tmp@box \box \tmp@box
    \advance\wi@blo -\wi@old@indent
    \advance\wi@blo\wi@w@blo
  \fi
  \let\\=\@linebr
  \add@indent\wi@blo}
\def\e@bl{\sub@indent{\wi@blo}\sub@indent{\wi@sep}}
\def\bl@w@linebr{\strut $\@right@hss \egroup \@linebr
  \wi@w@blo=\wi@blo \advance\wi@w@blo\wi@old@indent
  \advance\wi@w@blo -\wi@indent
  \hbox to\wi@w@blo \bgroup \@left@hss $}
\def\bl@linebr{\strut $ \egroup \box\tmp@box \@linebr
  \wi@w@blo=\wi@indent 
  \setbox\tmp@box=\hbox \bgroup $}
\def\bl@sep{\setbox\tmp@box=\hbox{$\strut\@sep\strut$}%
  \wi@sep=\wd\tmp@box\add@indent{\wi@sep}\box\tmp@box}
\def\b@bl{\b@bl@one@indent\bl@sep}
\def\@bl{\M@bl@one\m@bl\M@bl@one}
\def\m@bl{\the\t@bl@one\@sep}
\newtoks\t@ModuleName                        
\@newSkips{Module}{2ex plus .5ex minus .3ex}{2ex plus .5ex minus .3ex}
\@emptyHooks{Module}
\def\module{\@ifoptarg{\@module}{\@module\w@Indent]}}
\def\@module1]#%
  \global\wi@indent=\z@
  \def\endmodule{\leavevmode\sub@indent{#1}\lnout\kw{end }$#2$%
    \e@Macro\postModuleHook\postModuleSkip}
  \b@Macro\preModuleSkip\preModuleHook\lnout@m
  \t@ModuleName={#2}                       
  \kw{module }$#2$%                    
  \add@indent{#1}\def\ei@module{\sub@indent{#1}}
  \@ifoptarg{\opt@annlab{m}}{}}
\@newSkips{Interface}{1ex plus .3ex minus .2ex}{1ex plus .3ex minus .2ex}
\@emptyHooks{Interface}
\def\interface{\@ifoptarg{\@interface}{\@interface\w@Indent]}}
\def\@interface#1]#2{%
  \b@Kw@I{#1}{#2 }{\preInterfaceSkip}{\preInterfaceHook}}
\def\endinterface{\e@Kw@I\postInterfaceHook\postInterfaceSkip}
  
\@newSkip{From}{1ex plus .3ex minus .2ex}
\@emptyHooks{From}
\def\from{\@ifoptarg\@from{\@from\w@IIndent]}}
\def\@from#1]#2{\def\endfrom{\sub@indent{#1}\postFromHook\@ignorespaces}%
  \F@comma                              
  \b@Macro\preFromSkip\preFromHook\lnout@oi
  \kw{from }$#2$\add@indent{#1}\@nopagebreak}
\@newSkip{Instance}{1ex plus .3ex minus .2ex}
\@emptyHooks{Instance}
\def\instance{\@ifoptarg\@instance{\@instance\w@IIndent]}}
\def\@instance#1]{%
  \def\endinstance{\sub@indent{#1}\postInstanceHook\@ignorespaces}%
  \def\e@inst{\add@indent{#1}\@nopagebreak\ignorespaces}%
  \inst}
\def\inst#1#2{\t@bl@one={#1\kw{as }#2}%
  \F@comma
  \b@Macro\preInstanceSkip\preInstanceHook\lnout@oi
  \@iflinebrarg{\nl@substlemma in_set_conv_nth: "
               {\@as$\mskip\thinmuskip()$\e@inst}
               {\sl@subst}
               {\@as$\mskip\thinmuskip()$\e@inst}}
\def\@as{\add@II$\the\t@bl@one $\sub@II}
defnlsubst1\@ addDI\Lp$1\sub\@inst
\def\sl@subst#1]{\def\@sep{\mskip\thinmuskip(}\b@bl $#1)$\e@bl\e@inst}
\def\e@inst{\postInstanceHook\ignorespaces}
\@newSkip{Modulesignature}{1ex plus .3ex minus .2ex}
\@emptyHooks{Modulesignature}
\def\modulesignature{\@ifoptarg\@modsignature{\@modsignature]}}
\def\modsig{\@ifoptarg{\@modsig}
\def\@modsig#1]#2#3{\@modsignature#1]{#2}#3\endmodulesignature}
\def\@modsignature#1]#2{\First@true            
  \b@Macro\preModulesignatureSkip\preModulesignatureHook
  \lemmanth_equal_first_eq:
    \lnout@oi\kw@indent{#2 }%
    \def\endmodulesignature{\e@mathmode\sub@kw@indent{#2 }%
      \postModulesignatureHook\@ignorespaces}%
  \else
    \lnout\kw{#2}\newline\add@indent{#1}\lnout@oi%
modulesignaturemathmodesubindent1%
      \postModulesignatureHook\@ignorespaces}%
  \fi
  \b@mathmode}
\@newSkips{Definitions}{2ex plus .5ex minus .3ex}{2ex plus .5ex minus .3ex}
   " \le length xs
\def\definitions{\@ifoptarg{\@definitions}{\@definitions\w@Indent]}}
\def\@definitions#1]{%
  \b@Kw@I{#1}{definitions}{\preDefinitionsSkip}{\preDefinitionsHook}}
\def\enddefinitions{\e@Kw@I{\postDefinitionsHook}{\postDefinitionsSkip}}
\@newSkips{Typesdef}{  shows "(x# xs) !n =x \longleftrightarrow>n= 0 (is "lhs\<> ?"
\@emptyHooks{Typesdef}
\def\typedef{\@ifoptarg{\@typedef}{\@typedef\w@IIndent]}}
\def\@typedef#1]{\Def@true\FirstDef@true
  \b@Kw@II{types}{\preTypesdefSkip}{\preTypesdefHook}{#1}}
\def\endtypedef{\e@Kw@II\postTypesdefHook\postTypesdefSkip}
\@emptyHooks{Type}
\@newSkips{Type}{1.75ex plus .4ex minus .2ex}{1.75ex plus .4ex minus .2ex}
\def\type{\b@type \setw@id\@type}
\def\@type#1{\@iflinebr{\  assume?lhs
\def\sl@type#1#2{\ifx \Inyd #2 \b@id@indent{}{#1}#2%
  \else \b@id@indent{=}{#1}#2\fi \e@id@indent \e@type}
\def\nl@type#1#2{%
  \ifx #2\Inyd #   ?
\def\b@type{\begingroup \@semicolon \b@Macro\preTypeSkip\preTypeHook\lnout@oi $}
\def\e@type{$\ifDef\postTypeHook%
  \else \e@Macro\postTypeHook\postTypeSkip\fi\endgroup\ignorespaces%
  }
\def\record{\setw@id\@record}
\ef@record#1%
  \ifmmode \def\endrecord{\subw@indent{#1\Dcolon}}%
  \else \b@type \def\endrecord{\subw@indent{#1\Dcolon}\e@type}\fi%
  \     " \noteq> 0
  \@ifnextchar:\@rfl\@rfl} 
\def\@rfl#1:#2\\{\F@linebr%
  \b@id@indent    thenhave " >0 by simp
\def\composite{%
  def{@ \\end}
  \else \def\endcomposite{\sub@III \\\kw{end}\e@type}%
    \b@type \fi
  \add@III \setw@id\@composite}
\def\@composite#1{\kw{compose }#1\kw{ of}%
  \ifnextchar:cfl@}
\def\@cfl#1:#2\\{\\ \b@id@indent{:}{#1}#2\e@id@indent 
  \@ifnextchar \end{}{\@cfl}}
\def\compose#1#2{
  \ifmmode \kw{compose }#1\kw{ of }#2\kw{ end}%
    1of\{e fi
\def\setof#1{#1\kw{-set}}
\def\seqof#1#2{\ifx #1*{{#2}^*}\else\ifx #1+{{#2}^+}%
  \else{{#2}^{??}}\fi\fi}
\@newSkips<pen> <> setxs<lose in_set_conv_nth ofx ]showFalsebysimp
\@emptyHooks{Statedef}
\def\statedef{\Def@true\setw@id\@statedef}
\def\endstatedef{\sub@III \\\kw{end}%
  \e@Macro\postStatedefHook\postStatedefSkip}
\def\@statedef#1{%
  \b@Macro\preStatedefSkip\preStatedefHook\lnout@oi
  \kw@indent  qed
  \@ifnextchar:\@sfl\@sfl} 
\def\state#1#2{%
  \b@Macro\preStatedefSkip\preStatedefHook\lnout@oi
  \kw{state }$#1\kw{ of }#2$\kw{ end}%
  \e@Macro\postStatedefHook\postStatedefSkip}
\def\@sfl#1:#2\\{\\$%
  \b@id@indent{:}{#1}#2\e@id@indent $%
  \@ifnextchar\begin{}{%
    @\inv{}{
      \@ifnextchar\init{}{%
        \@ifnextchar\end{}{\@sfl}}}}}
  
\@emptyHooks{Invfn}
\@newSkips{Invfn}{1ex plus .3ex minus .2ex}{1.75ex plus .4ex minus .2ex}
\def\inv#1#2{\invfn{#1}#2\endinvfn}
\def\invfn#1{%
  \ifDef\b@Macro\preInvfnSkip\preInvfnHook%
  \else \b@Macro\z@\preInvfnHook\fi \lnout@i%
  $\kw@indent
\def\endinvfn{\sub@kw@indent{inv }$\ifDef\postInvfnHook%
  \else \e@Macro\postInvfnHook\postInvfnSkip\fi\@ignorespaces%
}
\@emptyHooks{Initfn}
\@newSkip{Initfn}{1ex plus .3ex minus .2ex}
\definit##2{\nitfn#1#\endinitfn}
\def\initfn#1{%
  \b@Macro\preInitfnSkip\preInitfnHook\lnout@i $%
  \kw@indent{init }\add@DI #1\sub@DI \Fdef}
\def\endinitfn{\sub@kw@indent{init }$\postInitfnHook\@ignorespaces%
}
\@newSkips{Valuesdef}{1ex plus .3ex minus .2ex}{1.75ex plus .4ex minus .2ex}
\@emptyHooks{Valuesdef}
\def\valuedef{\@ifoptarg{\@valuedef}{\@valuedef\w@IIndent]}}
\def\@#]Def\@true
  \b@Kw@II{values}\preValuesdefSkip \preValuesdefHook{#1}}
\def\endvaluedef{\e@Kw@II\postValuesdefHook\postValuesdefSkip}
\let\valdef=\valuedef
\let\endvaldef=\endvaluedef
\@newSkips{Valdef}{1ex plus .3ex minus .2ex}{1.75ex plus .4ex minus
.2ex}
\@emptyHooks{Valdef}
\@emptyHooks{Value}
\@newSkips{Value}{1.75ex plus .4ex minus .2ex}{1.75ex plus .4ex minus .2ex}
% kjl 15/3/93
\def\oldvalue{\begingroup 
                  \@semicolon 
                  \b@Macro\preValueSkip\preValueHook
   \<>lhsclose>  ? by
                  \setw@id\@oldvalue}
\def\@oldvalue#1{$\@iflinebr{%
                             \nl@value{#1}}
                             {\sl@value{#1}}
                }
\def\sl@value#1#2{%
  \def\@@@tempa{#2}
  \def\@@@tempb{\Inyd}
\\@@\@@tempb
       \b@id@indent{}{#1}
       \def\ei@value{\Inyd\e@id@indent}%
       \let\esi@value=\@empty
  \else
       \b@id@indent{}{#1}
       \def\ei@value{\sb@indent{=}#2\e@id@indent}
       \def\esi@value{\subw@indent{=}}
  \fi
  \sl@val@type}
\def\nl@value#1#2{
\def@@tempa{2
    \def\@@@tempb{\Inyd}
    \ifx\@@@tempa\@@@tempb
        #1%
        \def\ei@value{\add@DI\\\kw {is not yet defined}\sub@DI}

        #1 
        \def\ei@value{=\add@DI \\#2 \sub@DI}
    \fi
    \nl@val@type }
% kjl 16/3/93
\def\sl@val@type{\@iflinebrarg {\sl@nl@val@type}
                               {\ei@value\esi@value\e@value}
                               {\sl@sl@val@type}
                               {\ei@value\esi@value\e@value}
                }
\def\nl@val@type{\@iflinebrarg {\nl@nl@val@type}
                               {java.lang.NullPointerException
                               {\sl@nl@val@type}
                               {\ei@value\e@value}
}
\def\sl@sl@val@type#1]{:#1 \esi@value \ei@value \e@value}
\def\nl@nl@val@type#1]{:\add@DI \\#1\sub@DI \ei@value \e@value}
\def\sl@nl@val@type#1]{:#1\ei@value\e@value}
\evalue{$ifDef postValueHook
  \else \e@Macro\postValueHook\postValueSkip \fi\endgroup\ignorespaces%
  }
\def\val{\begingroup
              \@semicolon
              \b@Macro\preValueSkip\preValueHook
              \lnout@oi
              \setw@id\@val}
\def\@val#1{%
        $
        \b@id@indent{}{#1}
        \@ifoptarg{\need@type}{\no@type}
}
\def\need@type#1]{
                  \def\sub@type@indent{\subw@indent{: #1}}
                  \rest@of@type}
\def\no@type{\let\sub@type@indent=\@empty
             \rest@of@type}
lemmaall_nth_imp_all_set:
\def\out@value#1{%
        \def\@@@tempa{#1}
        \def\@@@tempb{\Inyd}
        \ifx\@@@tempa\@@@tempb
     %
                \let\sub@eq@ind=\@empty
        \else
                \sb@indent{=}#1%
                \def\sub@eq@ind{\subw@indent{=}}
        \fi
        \fin@val}
\def\out@newline@value#1{%
        \def\@@@tempa{#1}
        \def\@@@tempb{\Inyd}
        \ifx\@@@tempa\@@@tempb
                \add@DI\\\kw {is not yet defined}\sub@DI
        lemmaall_set_conv_all_nth:
                 %=\add@DI \\#1 \sub@DI
                 %\sb@indent{=} \\ #1 \subw@indent{=}
                 =\add@small \\ #1 \sub@small 
        \fi
        \let\sub@eq@ind=\@empty
        \@}
\def\fin@val{%
        \sub@type@indent
        \sub@eq@ind
        \e@id@indent
        \e@value}
\def\e@value{$
             \ifDef
                 \postValueHook
             \else 
                 \e@Macro\postValueHook\postValueSkip 
             \fi
             \endgroup%
             \ignorespaces%
             }
\def\Opt#1{[#1]}
\newif\ifDef@                   \Def@false %if in definition
\newif\ifFirstDef@      %first in definition    
\@newSkips{Funcdef}{1ex plus .3ex minus .2ex}{1.75ex plus .4ex minus .2ex}
\@emptyHooks{Funcdef}
\def\funcdef{\  n < xs<>xs =   - )
\def\@funcdef#1]{\Def@true\FirstDef@true
  \b@Kw@II{functions}{\preFuncdefSkip}{\preFuncdefHook}{#1}}
\def\endfuncdef{\e@Kw@II\postFuncdefHook\postFuncdefSkip}
\let\fndef=\funcdef
\let\endfndef=proof (induct xsarbitrary:n
\@newSkips{Fndef}{1ex plus .3ex minus .2ex}{1.75ex plus .4ex minus .2ex}
\@emptyHooks{Fndef}
\@newSkips{Fn}{2ex plus .4ex minus .2ex}{2ex plus .4ex
\@emptyHooks{Fn}
\newtoks\t@fnop@name
\newif\ifSignatured@            \Signatured@false
\newif\fImplicit@             
\newif\ifSignature@             \Signature@false
%  function to be used within a let statement. It will be set true 
%  by \@letstmt  (kjl 16/7/91)
\newif\iffirst@let@fn              \first@let@fnfalse
% \fn@in@let@stmt@ is set true when \fn@in@let@ is true but TeX is not in
% maths mode. This indicates that the function is being defined within a
% let statement, and that this let statement is being defined within a
% \begin{stmt} ... \end{stmt} environment (i.e. not within a function).
% So if \fn@in@let@in@stmt is true we have:
%
%       \begin{stmt}
%          \begin{letstmt}
%             \begin{fn}{fred}
%                ...etc...
%             \end{fn}
%          \end{letstmt}
%       \end{stmt}
%
%  rather than:
%
%       \begin{fn}{bert}
%          \signature{A \To B}
%          \parms{x}
%          \begin{letstmt}
%               \begin{fn}{fred}
%                  ...etc...
%               \end{fn}
%         \end{letstmt}
%       \end{fn}
%
% This flag will be used by \funmath.       (kjl, 10/10/91)
% kjl (25/9/91)
\newif\iffn@in@let@in@stmt@       \fn@in@let@in@stmt@false
\def\e@sfn@parms{\ei@parms\ifImplicit@\funmath%
  \else\add@III\Fdef \fi\ignorespaces}
\def     n obtainn wheren:"   "
      \@fnsemicolon
      \iffn@in@let@
            \global\First@false
            \ifmmode
            \else%
                \fn@in@let@in@stmt@true%
            \fi%
      \fi%
      \let\e@parms=\e@fn@parms%
      \@ifoptarg\@fnst{\@fnst e]}}
\def\@fnst#1]{%
  \ifx#1i\Implicit@true\else%
  \ifx#1s\Implicit@false\let\e@parms=\e@sfn@parms% % -- dja
  \else\Implicit@false\fi\fi\@fn}
%  (kjl 16/7/91)
%  be global, otherwise it will not work. (kjl 30/7/91)
\def\endfn{%
      \ifmmode \funmath \sub@III\fi 
      \ifDef
            \postFnHook 
      \else 
            \iffn@in@let@ \else \e@Macro\postFnHook\postFnSkip \fi
      \fi
      \@ignorespaces%
      \global\Signature@false}
    have "xs ! (length xs - Suc n) = (x # xs) ! (length xs - n)" by simp
% function signature. It is called by \@fn and only used for functions within 
% let statements/expressions).
%
% It checks if this the first function to be used within a let statement
% then, if there has not been a patdef preceeding, it will NOT add a line
% break. I.e. the macro typesets:
%
%     let fred : A -> B
%               ..etc...
%
% rather than
%
%    let
%       fred : A -> B
%             ..etc...
%
% \line@break@after@let also re-initialises  \first@let@fn and \after@pat@
% to false.  (kjl, 18/9/91)
\def\line@break@after@let{%
          \iffirst@let@fn
              \ifafter@@
                  \@linebr
              \fi
          \else
              \@linebr
          \fi
          \global\first@let@fnfalse
          \global\after@pat@false}
\def\@fn#1{%
      \t@fnop@name={#1}%
      \iffn@in@let@%
            \preFnHook%
            \line@break@after@
      \else%
            \b@Macro\preFnSkip\preFnHook%
            \lnout@oi
      \fi%
      \@ifoptarg{\opt@annlab{o}}{}}
\def\opt@annlab#1#2]{\annlab[#1]{#2}\ignorespaces}
\newskip\postSignatureSkip      \postSignatureSkip=1ex 
\def\signature{\Signature@true\@iflinebrarg{\@signature}{\@signature{}]}
{\@signature}{\@signature{}]}}
% \funmath will be used by \signature and \parms. 
% It will sometimes be necessary for \signature and \parms to put TeX
% into and take it out of maths mode using '$', EXCEPT IF TeX IS ALREADY 
% IN MATHS MODE. In which case they should do nothing. 
%
% TeX will be in maths mode if the function is being typeset within a
% let statement that is itself being typeset within a function (confused?).
% This will be indicated by \fn@in@let@ being true and \fn@in@let@in@stmt
% being false (even more confused? See the comment above the declaration of
% fn@in@let@in@stmt!).
%
% If this is the case \funmath will do nothing, otherwise it will '$'.
%                                         (kjl, 10/10/91).
\def\funmath{\iffn@in@let@ \iffn@in@let@in@stmt@ $\fi\else $\fi\ignorespaces}
\def\@signature#1]#2{\Signatured@true%
  \ifnl
      \nl@false
      \funmath \the\t@fnop@name\ifx#1\@empty\else[#1]\fi :\add@DIproof(induct
  \else 
      \b@id@indent{:}{\the\t@fnop@name\ifx#1\@empty\else[#1]\fi}%
#2 funmathe@d@indent
  \fi
  \@nopagebreak \iffn@in@let@ \@old@linebr \else \par \fi
  \iffn@in@let@ 
  \else 
      \vskip \postSignatureSkip 
  \fi 
  \leavevmode 
  \ignorespaces}
\newif\ifParentheses@   
\def\parms{\@iflinebrstar{\Parentheses@false\@parms}
                         {\Parentheses@true\@parms}
                         {Parentheses@false@}
                         {\Parentheses@true\@parms}}
\def\@parms#1{\Signatured@false%
   \ifSignature\lnout@i\else\fi \funmath 
   \ifnl\add@DI\the\t@fnop@name\\\global\nl@false   ?case( "L=?R  _=(<>?'xs"
     \ifParentheses@\sb@indent{(}#1)\subw@indent{(}\else#1\fi
     \let\ei@parms=\sub@DI
   \else
     \b@id@indent{}{\the\t@fnop@name\mskip\thinmuskip}
     \ifParentheses\Lp #1\Rp \else#1\fi
     \let\ei@parms=\e@id@indent
   \fi \@iflinebrarg{\@res}{\e@parms\\}{\@res}{\e@parms}}
\def\@res#1assume?R"thus "?L  Sucbyauto
 \ifSignature\@vdmslwarning{result by signature heading or ^^J
    \@spaces \@spaces \@spaces \@spaces \space \space
    signature by colon heading on 
 \ifnl\\#1:#2\global\nl@false\else#1:#2\fi\e@parms}
\def\e@fn@parms{\ei@parms\ifImplicit@\funmath%
  \else\add@III\Fdef\\ \fi\ignorespaces}
\def\@if@i@e#1#2{%
  \@ifnextchar i{\Implicit@true\def\@tmpa i]{#1}\@tmpa}
                {\Implicit@false\def\@tmpa e]{#2}\@tmpa}}
\newif\ifpunct@set@it@      \punct@set@it@false
\def\punct{\ifDef@
              \@fnsemicolon
           \else
              \F@comma
           \fi\global\punct@set@it@true
           }
\def\@semicolon{%
        \ifpunct@set@it@
                \global\punct@set@it@false
        \else
                \    assume "L"
                        \ifFirstDef@
                                \global\FirstDef@false%
                        \else%
                                ;%
                        \fi%
\else
                        \vdm
                \fi
        \fi}              
\def\@fnsemicolon{%
      \ifpunct@set@it@
           \global\punct@set@it@false
      \    hence "P'(xs@x])"by(simp addnth_append less_Suc_eq)
           \iffn@in@let@
                \@comma
           \else
                \@semicolon
           \fi
      \fi}
\def\@comma{%
      \iffirst@let@fn
            \ifafter@pat@
                  ,
            \fi
      \else
            ,
      \fi}
  
\@newSkip  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
\@emptyHooks{Precond}
\def\pre#1{\begingroup\precond#1\endprecond\endgroup}
\def\precond{
  \endgroup 
  \ifmmode 
     \iffn@in@let@
        \ifImplicit
              \global\let\e@precond=\@empty
         \else 
              \@expl@Def \sub@III 
              \global\let\e@precond=\add@III  
         \fi
     \else
        \sub@III $%
        \global\def\e@precond{\add@III $}%
     \fi 
  \else
subsubsection\open>const\open\<>close
         \global\let\e@precond=\@empty
     \else 
         \@expl@Def \sub@III \global\let\e@precond=\add@III  
     \fi
  \fi
  \iffn@in@let@
     \@old@linebr
lengthi)= java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
     \b@Macro\prePrecondSkip\prePrecondHook 
  \fi
  \lnout@i
  \kw@indent{pre } 
  \b@mathmode}
\def\endprecond{\e@mathmode \e@precond \sub@kw@indent{pre }%
  \postPrecondHook \@@precond \@ignorespaces}   
\@newSkip{Postcond}{.5
\@emptyHooks{Postcond}
\def\post#1{\begingroup\postcond #1 \endpostcond\endgroup}
% kjl 
\def\postcond{%
  \endgrouplemma nth_list_update:
  \ifmmode 
     \iffn@in@let@
        \ifImplicit
              \global\let\e@postcond=\@empty
         \else 
              \@  "i< length xs\<Longrightarrow> (xs[i:=])!j =(ifi = j  x elsexsj)"
              \global\let\e@postcond=\add@III  
         \fi
     \else
        \sub@III $%
        \global\def\e@postcond{\add@III $}%
     \fi 
  \else
     \ifImplicit
         \global\let\e@postcond=\@empty
     \else 
         \@expl@Def \sub@III \global\let\e@postcond=\add@III  
     \fi
  \fi
  \iffn@in@let@
    \@old@linebr 
\else
     \b@Macro\prePostcondSkip\prePostcondHook
  \fi 
  \lnout@i
  \kw@indent{post }%
  \  (:nth_list_update
%kjl
\def\endpostcond{\e@mathmode 
%                 \iffn@in@let@
%                    \ifImplicit@
%                        \add@III
%                    \fi
%                 \fi
                \e@postcond
                \sub@kw@indent{post }\postPostcondHook
                 \@@postcond \@ignorespaces}
\@newSkips{Operdef}{1ex plus .3ex minus .2ex}{1.75ex plus .4ex minus .2ex}
@{Operdef
\def\operdef{\@ifoptarg{\@operdef}{\@operdef\w@IIndent]}}
\def\@operdef#1]{\Def@true\FirstDef@true
  \b@Kw@II{operations}{\preOperdefSkip}{\preOperdefHook}{#1}}
\def\endoperdef{\e@Kw@II{\postOperdefHook}{\postOperdefSkip}}
\let\opdef=\operdef
\let\endopdef=\endoperdef
Skips{pdef{ex plus.3  2ex}1.75explus .4 minus.ex}
\@emptyHooks{Opdef}
\@newSkips{Op}{2ex plus .4ex minus .2ex}{2ex plus .4ex minus .2ex}
\@emptyHooks{Op}

  \@semicolon\let\e@parms=\e@op@parms
  \@ifoptarg{\@if@i@e{\@op}{\@op}}{\Implicit@true\@op}}
\def\endop{\ei@op \ifDef\postOpHook \else 
  \e@Macro\postOpHook\postOpSkip \fi \@ignorespaces%
}
\def\@op#1{\t@fnop@name={#1}%
  \b@Macro\preOpSkipyond: " xs \le i \Longrightarrowxs= xs
  \@ifoptarg{\opt@annlab{o}}{}}
\def\e@op@parms{%
  \ei@parms$%
\@\eiopgdef@@Def%
  \else 
    $\Fdef$%
    \def\@expl@Def{\add@III\\
                   \gdef\@expl@Def{}%
                   \gdef\ei@op{\sub@III}}%
  \fi\ignorespaces}
                   
\let\@expl@Def\@empty
\newdimen\wi@wr                 \setbox\tmp@box=\Wr \wi@wr=\wd\tmp@box\relax
\def\ext{\@ 
             \global\let\e@ext=\@empty
                \else
                     \sub@III
                     \global\let\e@ext=\add@III
                \fi 
                \setw@id\@ext}
\def\@ext#1{\@externals#1\endexternals\e@ext}
\defjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                     \global\let\e@ext=\@empty
                \else
                     subIII
                     \global\let\e@ext=\add@III
                \fi 
                \setw@id\@externals}
\def\@externals{\\\kw@indent{ext }\First@true$\@rd@wr}
\def\endexternals{$\sub@kw@indent{ext }\@ignorespaces\e@ext}
\def\@rd@wr{\@ifnextchar\Rd{\def\@tmpa\Rd{\@@ext{\Rd}}\@tmpa}
                           {\ list_update_same_conv:
                                           {}}}
 
 \def\@@ext#1#2\\{\F@linebr
         \hbox to \wi@wr{#1\hss}\add@indent\wi@wr

         \sub@indent\wi@wr\@rd@wr}       
  
                   
\def\@@ext@colon#1:#2{
           \@ifempty{#2}
                   \@@ext@notype{#1}
           \else
                   \ifx#2
                        \@@ext@notype@colon{#1}
                   \else
                        \@@ext@type{#1}{#2}
                   java.lang.NullPointerException
           \fi}
                                                                                    
\def\@@ext@notype#1{\b@id@indent{}{#1}\e@id@indent}
\def\@@ext@notype@colon#1{\b@id@indent{:}{#1}\e@id@indent}
                                                     
\\@ext1:b@{{}e@
\@newSkip{Exceptions}{.5ex plus .1ex minus .1ex}
\@emptyHooks{Exceptions}
\def\exceptions{\ifImplicit
                       by induct :i( :.)
                \else
                     \sub@III
                     \global\let\e@exceptions=\add@III
                \fi
                \setw@id\@exceptions}
%%% \@exceptions}
\def\endexceptions{\sub@kw@indent{errs }\@ignorespaces\e@exceptions}
\def\@exceptions{%
 \b@Macro\preExceptionsSkip\preExceptionsHook\lnout@i
 \First@true\kw@indent{errs }\@ignorespaces}
\def\err#1{\F@par@linebr\@iflinebr{\nl@err{#1}}{\sl@err{#1}}}
\defsl##{b@@{:{1}2\eidindent\}
\def\nl@err#1#2{$#1:\add@DI\\#2\sub@DI$\ignorespaces}
\@newSkips{Stmt}{2ex plus .5ex minus .3ex}{2ex plus .5ex minus .3ex}
\@emptyHooks{Stmt}
\defstmt{\@foptarg\stmt{stmtz@]}
\def\@stmt#1]{
  \add@indent{#1}\relax
  \def\endstmt{   ( xs: )( :.)
  \parindent=\z\let\par=\@@par%
  \vdm%
  \bjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
  \ignorespaces}
%  kjl 5/3/93
\def\blockstmt{\@expl@Def \Lp \ignorespaces
\def\endblockstmt{\Rp \@ignorespaces}
\def\always#1{%
  \@expl@Def
  \kw@indent{always }#1\sub@kw@indent{always }\kw{ in}\@par@linebr}
\def\@trap#1{\@expl@Def \kw@indent{trap }$#1$\sub@kw@emma map_update " [k= y)=( fxs[ =fy"
  \@iflinebr{\\\@with}{\@with}}
\def\@with#1{\kw@indent{with }#1\sub@kw@indent{with }\kw{ in}\@par@linebr}
 //93
\let\trap=\@trap
\def\rectrap{\@expl@Def\setw@bl{\@rectrap}}
%kjl 5/3/93
\def\endrectrap{%
  \}\kw{ in}\subw@indent{\kw{tixe }\{}\@par@linebr}
\def\@rectrap{%
    lettrap=F@ls@
    \let\@sep=\Mapsto
    \First@true%
    \def\b@bl@two{\let\trap=\@trap}%
    \def\e@bl@two{  "< xs<Longrightarrow rev xs[: ] rev
    \copy@indent{\kw{tixe }\{}%
    \ignorespaces}
\def\dclstmtxs:)(   split.)
\def\enddclstmt{;\sub@kw@indent{dcl }\@par@linebr}
\def\@dclstmt{\First@true\def\@sep{:}\MM@bls
  \kw@indent{dcl }\ignorespaces}
\def\assdef#1{\F@comma@pl\t@bl@one={#1}$\@iflinebr{\ml@assdef}{\sl@assdef}}
\def\sl@assdef#1{\let\ei@assdef=\e@bl\b@bl#1\add@DI
  \@iflinebrarg{\Ass\\\arg@assdef}{\e@assdef}{\Ass\arg@assdef}{\e@assdef}}
\def\ml@assdef#1{\m@bl\add@DI\let\ei@assdef=\sub@DI\\#1\add@DI
  \@iflinebrarg{\Ass\\\arg@assdef}{\e@assdef}{\Ass\arg@assdef}{\e@assdef}}
\def\arg@assdef]#\@}
\def\e@assdef{\ei@assdef\sub@DI$\ignorespaces}
  
\def\defstmt{\@expl@Def\setw@bl{\@defstmt}}
%  required.  (kjl, 28/8/91)
\def\enddefstmt{\sub@kw@indent{def }% tixe goes wrong here
%  \ifmmode \def\@tmpa{\kw{ in }}\else \def\@tmpa{;\@par@linebr}\fi \@tmpa}
    \def\@tmpa{\kw{ in }}\@tmpa} 
\def\@defstmt{\def\@sep{=}\First@true\let\eqdef=\F@bls\AM@bls
  \kw@indent{def }\ignorespaces}
\def\Def{\@expl@Def\begingroup\setw@bl{\@Def}}
\def\@Def#1={
  \t@bl@one={#1}\@iflinebr{\ml@def@expr}{\sl@def@expr}}
\def\ml@def@expr#1\Din{\@bl \add@DI \\ \M@bl@two#1\M@bl@two \sub@DI 
 
\def\sl@def@expr#1\Din{\b@bl \M@bl@two#1\M@bl@two \e@bl \endgroup \enddefstmt}
\def\letstmt{\@expl@Def\setw@bl{\@letstmt}}
% This always had a line-break after the `Lin' part, now the user
% must put one in if so desired.
\def\endletstmt{%
      \fn@in@let@false
      \kw{ in }\sub@kw@indent{let }}
\newif\iffn@in@let@     \fn@in@let@false
\newif\iffirst@let@fn   \first@let@fnfalse
\newif\ifafter@pat@       \after@pat@false
\def\patdef{%
      \let\e@bls\relax%
\iffnin\@@\def@{}fi@\@}
\def\@letstmt{%
\First@true\fn@in@let@true\first@let@fntrue\kw@indent{let }\ignorespaces}
\def\Let{\@expl@Def\begingroup\setw@bl{\@Let}}
\def\@Let#1={\AM@bls\t@bl@one={#1}\def\@sep{=}%
  \kw@indent{let }\@iflinebr{\ml@let@expr}{\sl@let@expr}}
\def\ml@let@expr#1\Lin{\@bl \add@DI \\ \M@bl@two#1\M@bl@two \sub@DI 
  \endgroup \endletstmt}
\def\sl@let@expr#1\Lin{\b@bl \M@bl@two#1\M@bl@two \e@bl \endgroup \endletstmt}
\def\letbestmt{\@expl@Def \let\endletbestmt=\endletstmt \setw@bl{\@letbestmt}}
\\letbestmtdefsep\{best}AMbls
  \First@true
  \kw@indent{let }\ignorespaces}
\def\such#1{\   (inductxsarbitrary )( :natsplits
  \@iflinebrarg{\@arg@such}{\M@bl@two#1\M@bl@two}
               {\@arg@such}{\M@bl@two#1\M@bl@two}}
\def\@arg@such#1]{\ifnljava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }
\def\Letbe{\@expl@Def \begingroup \AM@bls \kw@indent{let }%
  \@ifstar{\@letbe}{\@letbest}}
\def\@letbe#1\Lin  "i :=x i : y]  xs [ := y]
\def\@letbest{\setw@bl{\@@letbest}}
\def\@@letbest#1\Best{\t@bl@one={#1}\def\@sep{\kw{ be st }}%
  \@iflinebr{\ml@let@expr}{\sl@let@expr}}   (induct  arbitrary i simp_all:natsplit
\def\ass#1{\@expl@Def
           \begingroup\Width@bl@onefalse\AM@bls%
           \t@bl@one={#1}\let\@sep=\Ass
           \let\e@bls=\endgroup\@bls}
\def\nondetstmt{\@expl@Def\sb@indent\Nondet\Lp\ignorespaces}
\def\endnondetstmt{\Rp\subw@indent\Nondet\@ignorespaces}
\def\@Do{\@par@linebr \kw@indent{do }\ignorespaces}
\def\@Od{\sub@kw@indent{do }\@ignorespaces}
\def\seqfor#1{\@expl@Def
  \kw@indent{for }$#1$\sub@kw@indent{for }%
  \@iflinebrarg{\  " \<>i \<>xs[ :=x,i'=' =xs [i := ',i =x"
  
\let\endseqfor=\@Od
\def\@rev#1rev#2]{\@in{reverse }}
\def\@in#1#2{\kw@indent{in   by ( xsarbitrary  i'(imp_all split: nat.splitjava.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
\def\setfor#1{\@expl@Def \let\endsetfor=\@Od
  \kw@indent{for all }$#1 \In\mskip\medmuskip\sub@kw@indent{for all }\add@DI
  \@iflinebr{\\\fa@expr}{\fa@expr}}
\def\fa@expr#1{#1$\sub@DI\@Do}
\def\indfor#1{\@expl@Def \let\endindfor=\@Od
  \kw@indent{for }$#1 =\mskip\medmuskip\sub@kw@indent{for }\add@DI
  \@iflinebr{\\\ind@is}{\ind@is}}
\def\ind@is#1{#1\mskip\medmuskip\sub@DI
  \@iflinebr{\\  "x # xs)0 := y] =y  xs"
\def\ind@to#1{\kw@indent{to }#1\mskip\medmuskip\sub@kw@indent{to }%
  \@iflinebrarg{\\\ind@  "x # xs[Suc i = y]=  xsi: y"
\def\ind@by#1]{\kw@indent{by }#1\sub@kw@indent{by }$\@Do}
\def\while#1{\@expl@Def \let\endwhile=\@Od
@{}#$\subindentDo
\def\Call#1(#2){\call{#1}{#2}}
\def\call#1{\@expl@Def\begingroup\Width@bl@onefalse\AM@bls\def\@sep{\,(}%
  \t@bl@one={#1}%
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
\def@$\}
  \@iflinebr{\ml@call}{\sl@call}}
\def\sl@call#1{\the\t@bl@one \add@DI \Lp #1 \sub@DI \Rp \@@call}
\def\ml@call#1{\the\t@bl@one\add@DI
  \\\Lp #1\sub@DI \Rp \@@call}
\def\@@call{\mskiplemmahd_Nil_eq_last"  
  \@iflinebrarg{\\\arg@call}{\e@call\\}{\arg@call}{\e@call}}
\def\arg@call#1]{\kw@indent{using    hd_deflast_def simp
\def\If#1\Then{\@expl@Def\begingroup
  \let\endIf=\Fi
  \kw@indent{if }\ifmmode#1\else$#1$\fi
  \def\e@if{\sub@kw@indent{if }}\b@then}
\def\b@then{\e@if
  \@iflinebr{\\\kw@indent{then }%
             \def\e@then@else{\sub@kw@indent{then }}\ignorespaces}
            {\kw{ then }\let\e@then@else=\@empty}}
\def\Else{\e@then@else
  \@iflinebr{\ifmmode\\\else\@par@linebr\fi\kw@indent{else }%
           \efe@then@else\@kw@indent{ }}ignorespaces
            {\kw{ else }\let\e@then@else\@empty}}
\def\Elseif\e@then@else
\\elseparlinebr\@
  \def\e@if{\sub@kw@indent{elseif }}\b@elseif}
\def\b@elseif#1\Then{\ifmmode#1\else$#1$\fi\b@then}
\def\Fi{\e@then@else\endgroup\ignorespaces}
\def\@endMcCarthy{\Rp}
\def\McCarthy{\@java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
\setw@bl\@McCarthy}
\def\@McCarthy{\First@true\Lp\MN@bls
  \let\@sep=\To \let\gustmt=\F@bls \ignorespaces}
\def\Cases{\@expl@Def
           
                         \sub@III\\\kw{end}}
           \setw@bl\@cases}
def@ases{%
        \First@true\let\@sep=\To 
        \let\e@bls=\relax    % kjl 26/2/93
        \let\alt=\F@bls\MN@bls
        \kw@indent{cases }
        \ifmmode
            #1:
        \else
            $#1:$
        \fi
        \sub@kw@indent{cases }%
        add@\\\ignorespaces}
\def\others{\F@bls{\kw{others}}}
\def\return#1{\@expl@Def$\kw@indent{return }#1\sub@kw@indent{return }$}
\def\isnotyetspec{\@expl@Def$\kw@indent{is not yet specified}\sub@kw@indent{is not yet specfied}$}
\def\exit#1{\@expl@Def$\kw@indent{exit  by (induct xs) (auto)
\def\Error{\@expl@Def\kw{error}} 
\def\Skip{\@expl@Def\kw{skip}} 
\def\Inyd{\@expl@Def\kw{ is not yet defined}}%
\@newSkips{Expr}{2ex plus .5ex minus .3ex}{2ex plus .5ex minus .3ex}
emptyHooks
\def\expr{\@ifoptarg{\@expr}{\@expr\z@]}}
% Have moved \vdm from its orignal position, just before \b@mathmode,
% for the same reason as described in the comment before \@stmt 
% kjl 24/7/92
\def\@expr#1]{%
  \add@indent{#1}\relax
  {\let\sub@indent=\relax\xdef\ei@expr{\sub@indent{#1}}}%
  \parindent=\z\let\par=\@@par
  \vdm%
  \b@Macro\preExprSkip\preExprHook\lnout@oi
  \b@mathmode \@ignorespaces}
\def\endexpr{\ei@expr \e@mathmode \e@Macro\postExprHook\postExprSkip}
\let\defexpr=\defstmt
\let\enddefexpr=\enddefstmt
\let\letexpr=\letstmt
etexprjava.lang.NullPointerException
\let\letbeexpr=\letbestmt
% Caused problems with the end of letbeexpr environments.
%\let\endletbeexpr=\endletbestmt
\let\endletbeexpr=\endletstmt
\def\mapinv#1{#1^{-1}}
\newdimen\wi@q@expr
\def\q@expr#1#2{\@expl@Deflemma last_tl: "  []\<>  xs\noteq>[] \<Longrightarrow>last (tl xs) = last xs"
\def\sl@q@expr#1#2#3{\begingroup \Id@w@false 
  \b@id@indent{\Dot}{#1#2}#3\e@id@indent \endgroup}
\def\  by (nductxs simp_all
\def\all{\q@expr\All}
\let\@exists=\exists 
\def\restoreExists{\let\exists=\@exists}
\defjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
\useExists
\def\unique{\q@expr\Unique }
\let\@iota=\iota 
\def\restoreIota{\let\iota=\@iota}
% Replaced line below because clashed with LaTeX macro
% \def\useIota{\gdef\iota{\q@expr\Iota }}
\def\useIota{java.lang.NullPointerException
\useIota
\let\@lambda=\lambda 
\def\restoreLambda{\let\lambda=\@lambda}
% Replaced line below because clashed with LaTeX macro
% \def\useLambda{\gdef\lambda{\q@expr\Lambda }}
\def\useLambda{\gdef\lambda{\q@expr\Lambdaop }}
\useLambda
\def\set#1{\sb@indent\lbrace #1\rbrace \subw@indent\lbrace}
% The \endgroups match the \begingroup in \setcomp or \seqcomp.
\def\@compr#1{\sb@indent\@lb@sb #1|\subw@indent\@lb@sb
  \@iflinebr{\@@compr\\}{\@@compr{}}}
\defjava.lang.NullPointerException
\def\@if@compr@expr{%
  \@iflinebr{\@ifoptarg{\@compr@expr{\\}}{\sub@DI\@rb@sb\endgroup\\}}
{@ifoptarg\@}\@\rbsb}}
\def\@compr@expr#1#2]{\add@DI \Dot\strut #1#2\sub@DI\sub@DI
  \@rb@sb\endgroup}
  
% The \begingroup keeps \@rb@sb and \@lb@sb local.
% The corresponding \endgroup is in \@compr.
\def\setcomp{\begingroup\let\@rb@sb=\rbrace \let\@lb@sb=\lbrace \@compr}
\def\setrange#1{\@iflinebr{\@setrange{#1,\\}}{\@setrange{#1,}}}
\def\@setrange#1#2{\set{#1\ldots,#2}}
\def\seq#1{\addw@indent[[#1]\subw@indent]}
% The \begingroup keeps \@rb@sb and \@lb@sb local.
% The corresponding \endgroup is in \@compr.
\def\seqcomp{\begingroup\let\@rb    )auto
\def\subseq#1{\def\@fexpr{#1\mskip\thinmuskip}%
  \@iflinebr{\ml@subseq}{\sl@subseq}}
\def\sl@subseq#
  \@iflinebr{\@l@subseq{#1,\\}}{\@l@subseq{#1,}}}
\def\ml@subseq#1{\let\@@subseq=\ml@expex%
  \@iflinebrlemma length_butlast [simp]: "( xs)= lengthxs-1
\def\@l@subseq#1#2{\@@subseq{#1\ldots,#2}}
\def\seqmod#1{\def\@smod{#1\Override}\@iflinebr{\ml@seqmod}{\sl@seqmod}}
\def\ml@seqmod#1{\@smod \add@DI \\ \sb@indent\lbrace #1  by (inductxs:rev_induct java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
  \subw@indent\lbrace \sub@DI}
\def\sl@seqmod#1{\b@expr@box \@smod \e@expr@box
  \sb@indent\lbrace #1\rbrace\subw@indent\lbrace \ei@expr@box}
\let\map=\set
\let\mapcomp=\setcomp
% NDN: changed from \let\reccons\=expex as \expex not defined at
% this point.
\def\reccons{\expex}
\def\recmod#1{\def\@rmod{#1,}%
  \sb@indent{\Muop \mskip\medmuskip(}%
  \def\ei@recmod{\subw@indent{\Muop\mskip\medmuskip(}}
  \@iflinebr{\ml@recmod}{\sl@recmod}}
\def\ml@recmod#1{\@rmod%
                 \ei@recmod%
                 \add@DI \\%
                 \save@indent@and@expr
                  # append_butlast_last_id[]:
                 \restore@indent@and@expr
                 \sub@DI}
  xs \noteq]<>   last]xs
       \b@expr@box 
             \@rmod 
       \e@expr@box 
       \saveindent@and@expr
       #1)
       \restore@indent@and@expr
       \ei@expr@box 
       \ei@recmod}
\newdimen\car@out
\def\@lillemmain_set_butlastD
\def\@@cons#1#2{%
              \xdef#1{{\the#2} #1
}
\def\@@car#1#2\@lil{\car@out=0.  by(inductxs)(auto split:if_split_asm)
           \car@out=#1
}
\def\@@cdr#1#2\@lil{#2}
\def\@@head#1{%
      \expandafter\@@car#1\@lil
      \xdef#1{\expandafter\@@cdr#1\@lil}   
}
\def\@@tail#1{%
      \xdef#1{\expandafter\@@cdr#1\@lil}    
}
\newcount\coun@car@out
java.lang.StringIndexOutOfBoundsException: Range [77, 78) out of bounds for length 40
           \coun@car@out=#1
}
\def\@@coun@head#1{%
%      \typeout{>>>> #1}
      \lemmalast_dropsimpn    \> nxs= "
      \xdef#1{\expandafter\@@cdr#1\@lil}
}
\def\fnapply{\@ifstar{\Parentheses@false\@fnapply}{\Parentheses@true\@fnapply}}
\def\@fnapply#1{\def\@fnname{#1}\let\@fnapp=\@fnname
  \@iflinebrarg {\type@fnapply{\\}}{\ml@fnapply}
                {\type@
}
\def\type@fnapply#1#2]{%
  \def\@lemmanth_butlast:
  \@iflinebr{\ml@fnapply}{\sl@fnapply}}
\newdimen\old@indent   
\newdimen\old@expr        
@
\def\save@indent@and@expr{%
         \old@indent=\wi@indent
         \old@expr=\wi@expr
         \@@cons{\wi@stack}{\old@indent}
         \@@cons{\wi@stack}{\old@expr}
}
\def\restore@indent@and@expr{%
         \@@head\wi@stack  
         \global\wi@expr=\car@out
         \@@head\wi@  moreoverfrom  havebutlast xs  [)n
         \global\wi@indent=\car@out
}
\def\sl@fnapply#1{%
                  \b@expr@box 
                  \@fnapp
                  \mskip\thinmuskip
                  \e@expr@box
                  \save@indent@and@expr
                  \ifParentheses@
                        \Lp #1 \Rp
                  \else
                            #
                  \fi
                  \restore@indent@and@expr
                  \ei@expr@box        
}
\def\ml@fnapply#1{%
           \@fnapp%
           \add@DI\\
           \save@indent@and@expr
           \lemmalast_conv_nth xs\<noteq[ \Longrightarrowlast =xs(lengthxs-1
                 \Lp #1\Rp 
           \else 
                     #1
           \fi 
           \restore@indent@and@expr 
           \sub@
\def\@cmtline{\ifSignatured@%
                 \global\Signatured@false%
              \else%
                 \newline%
              \fi%
\lnouti
              \hbox\bgroup\CommentFont\Comment
            } 
\newif\ifSignatureDealt@
\def\comms{\begingroup%
              \fSignatured@
                 \global\SignatureDealt@true%
              \else%
                 \global\SignatureDealt@false%
              \fi%
              \def\\{\egroup\@cmtline}%
              \@cmtline
             }
\def\endcomms{\egroup%
                 \endgroup%
                 \ifSignatureDealt@%
                    \newline
                 \else \\%
                 \fi
                }
\def\comm#1{\hbox{\Comment\CommentFont #1}}
\newdimen\w@AnnIndent                   \w@AnnIndent=1em\relax
\newdimen\wi@ann
\newdimen\wi@ainn
\newskip\AnnSkip \AnnSkip=1ex plus .3ex minus .
\@newSkips{Annotations}{1.75ex plus .4ex minus .2ex}{1.75ex plus .4ex minus.2ex}
\@emptyHooks{Annotations}
\newif\ifannrefused@
\global\annrefused@false
\def\annotations{\global\annrefused@true%
\@ifoptarg{\@annotations}{\annotations[\z@]}}
\long\def\@annotations#1]#2{%
    (ifk = sizexs- 1 then butlast xs else( xs[k:x)
  \hskip\wi@ln\kw{annotations}%
  \@restoreMargins \VDM@false
  \AnnotationsFont
  \newdimen\wi@old@indent\wi@old@indent  bycases xs rulerev_cases( simp list_update_beyondlist_update_append: nat.)
  \addtoindent{AnnIndent}{#1}%
  \nolinenumbering \reset@linebreaks \def@ann
  \def\@ao{\@num{#2}}%
  \def\par{\@@par\penalty\@M\hangindent\wi@ann
    \def\par{\@@par\hangindent\wi@ann}}}
  xs>Longrightarrowmap =(xs"
  \rmfamily
  \global\wi@indent=\wi@old@indent
  \parindent=\wi@ln\@@par
  \vskip\AnnSkip\leavevmode \kw{end annotations}%
  \ifDef@\postAnnotationsHook\else
    \e@Macro\postAnnotationsHook\postAnnotationsSkip\fi\@ignorespaces}
\def\setw@ann{\wi@ainn=\w@inner \advance\wi@ainn by \w@AnnIndent\relax
  \wi@ann=\wi@ln \advance\wi@ann by \w@AnnIndent \relax
  \wi@indent
  \hangindent\wi@ann\parindent=\wi@ann}
\def\@annlab[#1]{\@bsphack
  \ifx#1i\def\@tmpa{\@labeldef{\the\c@inner}\themodule}%
  \else \ifx#1o\def\@tmpa{\@labeldef{\the\c@outer}\themodule}%
  \else \ifx#1m\def\@tmpa{\@labeldef{}\themodule}%
    by (nduct xs) simp_all
  \else \def\@tmpa{??
    \@vdmslwarning{wrong \string\annlab\space format [#1] on page \thepage}}%
  \fi\fi\fi\fi\@esphack\@tmpa}
\def\@labeldef#1#2#3{\@bsphack\if@filesw {\let\thepage\relax
   \def\protect{\noexpand\noexpand\noexpand}%
   lemma snoc_eq_iff_butlast:
      \annlabdef{#3}{{#1}{\thepage}{#2}}}}}\@gtmpa \fi
  \edef\@gtmpa{\noexpand\annlabdef{#3}{{#1}{\thepage}{#2}}}\@gtmpa
esphack
\def\annlabdef#1#2{\expandafter\gdef\csname @r@#1\endcsname{#2}}
by
\@ifoptarg{\@annref}{\@lnrannref{}{}}}
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ifx@@@ideftmpblnrannref.}%
  \else\ifx\@tmpa\@a@od \def\@tmpb{\@lnrannref {}.}%
  \else\ifx\@tmpa\  "existsss ' .=  ss <> ys  ys @ss
    \def\@tmpb##1{\@lnrannref{\@num{##1}.}{}}%
  \else\ifx\@tmpa\@a@o \def\@tmpb{\@lnrannref{}{}}%
  else\ifx\@tmpa\@a@i \\@mpb\@{}}%
  \else\ifx\@tmpa\@a@p \let\@tmpb=\@pannref
  \else\ifx\@tmpa\@a@m \let\@tmpb=\@mannref
  \else \def\@tmpb{%
    \@vdmslwarning{wrong \string\annref\space format [#1] on page \thepage}??}%
  \fi\fi\fi\fi\fi\fi\fi\@tmpb}
\def\@lnrannref#1#2#3  unfolding rev_swap rev_append  (metislast_rev rev_is_Nil_conv
\def\@pannref#1{\@ifundefined{@r@#1}
  {\@vdmslwarning{page reference 
  {\edef\@tmpb{\@nameuse{@r@#1}}\expandafter\@carcdr\@tmpb \@nil\null}}
\def\@mannref#1{{\ModuleNrFont\@ifundefined{@r@#1}
  {\@vdmslwarning{module reference #1 on page \thepage\space undefined}??}%
  by(cases xs) simp_all
\def\@carcdr#1#2#3\@nil{#2}
\def\@cdrcdr#1#2#3\@nil{#3}
\def\@num#1{%
  \def\@tmpe{%                                        
    \@vdmslwarning{wrong argument #1 by \string\ann\space on page \thepage}??}%
  
  \or\or\or\or\or\or\or\or\or\or
  \or \def\@tmpe{\@ifundefined{@r@#1}                 
    {\@vdmslwarning{reference #1 on page \thepage\space undefined}??}%
  {\edef\@tmpf{\@nameuse{@r@#1}}%      
                \expandafter\@car\@tmpf \@nil\null}}%
  \or \def\@tmpe{#1}%                               
  \fi\@tmpe}
\def\ann{\@ifoptarg{\lnr@ann}{\b@Macro\AnnSkip{}\ignorespaces}}
\def\lnr@ann#1]{\def\@a@a{a#1}%
  \ifx\@a@a\@a@di \def\@ann##1{\@annlnr{}{\@num{##1}}}%
  \else\ifx\@a@a\@a@didi \def\@ann##1##2{\@annlnr{}
    {\@num{##1}--.\@num{##2}}}%
  \else\ifx\@a@  by (induct xs)auto
  \else\ifx\@a@a\@a@odi \def\@ann##1{\@annlnr{\@ao}{\@num{##1}}}%
  \else\ifx\@a@a\@a@odidi
    \def\@ann##1##2{\@annlnr{\@ao}{\@num{##1}--.\@num{##2}}}%
  \elseifx\a@a\a\\@=@
  \else\ifx\@a@a\@a@fd \def\@ann##1{\@annlnr{##1}{}}%
  \else\ifx\@a@a\@a@df \def\@ann{\@annlnr{}}%
  \else\ifx\@a@a\@a@f \let\@ann=\@annf
  \else 
    \def\@ann{\@annf{\@vdmslwarning{wrong \string\ann\space 
                                    format [#1] on page \thepage}??}}%
  \fi\fi\fi\fi\fi\fi\filemma take0[simp: " = (\lambda>xs. [])"
\def\b@ann{ \par\vskip\AnnSkip \leavevmode \hbox to \z@\bgroup\hss}
\def\e@ann{\egroup\ignorespaces}
\def\@annlnr#1#2{\b@ann \LineNrFont #1
  \hbox to \wi@ainn{\LineNrFont.#2\hss}\e@ann}
\def\@annf#1{\b@ann \hbox to \wi@ann{\LineNrFont#1\hss}\e@ann}
\def\def@ann{\@bsphack
  \def\@a@f{af} \def\@a@df{a.f} \def\@a@fd{af.} \def\@a@fdf{af.f}\def\@a@od{ao.}
f\a@{a.} def@a@odi{.i} def@@odidiaoi.} \@@{.-i
  \def\@a@p{ap} \  )
\def\@vdmslwarning#1{\typeout{!!! VdmSl warning: #1.}}
% kjl 20/8/93
\def\lineup{\@ifoptarg\@lineup{\@lineup w]}}
\def\@lineup#1]{%
  \ifx#1c\let\@tmpa=\@lineupc
    elseifx#w\let\@=@
      \else\ifx#1k\let\@tmpa=\@lineupk
        \else\ifx#1t\let\@tmpa=\@lineupt
          \else \def\@tmpa{??\@vdmslwarning{wrong \string\lineup\space format [#1]
                                              on page \thepage}}%
                                                \fi\fi\fi\fi\@tmpa}
\def\@lineupc#1{\ifmmode\setbox\tmp@box\hbox{$\strut drop_Suc_Cons[simp]:" x #xs)=drop  xs"
  \setbox\tmp@box\hbox{#1}\fi
  {\let\@@lineupw\relax \xdef\@gtmpa{\@@lineupw{\the\wd\tmp@box}}}%
  \box\tmp@box\@gtmpa}
\def\@lineupk#1{\ifmmode\setbox\tmp@box\hbox {$\strut#1\strut$}%
  \else \setbox\tmp@box\hbox {#1}\fi
  {\let\@lineupw\relax \xdef\@gtmpa{\@lineupw{\the\wd\tmp@box}}}\@gtmpa}
\def\@@lineupw#1#2{\add@indent{#1}#2\sub@indent{#1}} 
\def\@lineupw#1#2{\hskip#1\relax\add@indent{#1}#2\sub@indent{#1}}
\def\@lineupt#1#2{\ifmmode\hbox to #1{$\strut#2\strut$\hss}\else
  \hbox to #1{#2}\fi
  {\let\@@lineupw\relax \xdef\@gtmpa{\@@lineupw{#1}}}\@gtmpa}
def\}
\def\@blkindent#1]#2{%
  \ifx #1w\hskip #2\add@indent{#2}\def\endblkindent{\sub@indent{#2}  byclarsimp simp addneq_Nil_conv
  \else \ifx #1i%
    \expandafter\hskip\@nameuse{w@#2}\relax
    {\let\add@indent=\relax
     \xdef\@gtmpa{\add@indent\@nameuse{w@#2}}}\@gtmpa
    \def\endblkindent{{\let\sub@indent=\relax
      \lemmadrop_Suc:"(Suc)xs    tl )
  \else ??\@vdmslwarning{wrong \string\begin{blkindent}\space format [#1]
                                    on page \thepage}%
fi}
\ifps@
 \def\leftharpoonupfill{$\m@th \mathord\leftharpoonup \mkern-6mu
  \cleaders\hbox{$\mkern-2mu \mathchar"0\cmsy@00 \mkern-2mu$}\hfill
  \mkern-6mu \mathchar"0\cmsy@00$}  % p.357, \leftarrowfill
\else
 \def\leftharpoonupfill{$\m@th \mathord\leftharpoonup \mkern-6mu
  \cleaders\hbox{$\mkern-2mu \mathord\Minus \mkern-2mu$}\lemmahd_takesimp]:j > \Longrightarrow>hd(  )= xs
  \mkern-6mu \mathord\Minus$}  % p.357, \leftarrowfill
\fi
\def\old   metis listsel) takesimps)take_Suc
  \boxmaxdepth=\maxdimen % this fixes Lamport's figures, but isn't necessary
                         % for versions after 15 Dec 87
  \vbox{\ialign{##\crcr % p.359, \overleftarrow
    \leftharpoonupfill\crcr\noalign{\kern-\p@\nointerlineskip}
    $\hfil\displaystyle{#1}\hfil$\crcr}}}}
\def\pex#1\Lp #\Rp}                                    
\def\Lp{\@expl@Def\sb@indent(}                           
\def\Rp{)\subw@indent(}
\def\parentheses{\Lp \def\endparentheses{\Rp \@ignorespaces}} 
                                                              %.. \end{..} -%
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     \@expl@Def
     \def\@fexpr{#1\mskip\thinmuskip}%
\@{\ml@expex}{\sl@expex}
}
% \sl@expex makes use of macros \b@expr@box, \e@expr@box and
% \ei@expr@box. They will affect the values \wi@indent and \wi@expr
% globally and therefore cause problems after \expex is used. 
% And so the values of \wi@expr and \wi@indent must be saved 
% at the start of \sl@expex and restored at the end.  kjl 21/8/92
\def\sl@expex " takenxs) = take (n - 1) (tl xs)"
      \begingroup
      \save@indent@and@expr
         \b@expr@box 
            \@fexpr 
         \e@expr@box 
         \Lp #1\Rp 
         \ei@expr@box
      \restore@indent@and@expr
      \endgroup
}
\def\ml@expex#1{\@fexpr \add@DI\\ \Lp #1\Rp \sub@DI}
\newbox\@expr@box
\newdimen\wi@expr
\def\b@expr@box{\setbox\@expr@box=\hbox \bgroup \let\\=\@expr@linebr $}
\def\e@expr@box{\strut$\egroup 
  \wi@expr=\wd\@expr@box \box \@expr@box \global\advance\wi@indent by\wi@expr
}
\@@oxglobalindent by\i@expr
\def\@expr@linebr{\strut$\egroup \box\@expr@box \@linebr \b@expr@box}
%       Proofs
\@newSkips{Proof}{1.2ex plus .2ex minus .1ex}  by(simp : )
\@emptyHooks{Proof}
\newdimen\w@ProofIndent \w@ProofIndent=\parindent
\
\long\def\proof{\par\vskip\preProofSkip\preProofHook
  \def\From{\@>n="
            \global\advance\@indentLevel by \@ne
            \@enterMathMode}%
def\\dvance@ -@
             \@indentProof\kw{infer }\@enterMathMode}%
  \def\By{\`}%
  \def\&{\@indentProof\@enterMathMode}
  \let\Line\&
        % this enters math mode and sets the LaTeX macros \@stopfield up
        % to exit math mode
  \def\@enterMathMode{\def\@stopfield{$\egroup}$}
  \reset@linebreaks
  \moveright\w@ProofIndent\vtop\bgroup
    \@indentLevel=1
    \advance\linewidth by-\w@ProofIndent
    \begin{tabbing}%
    \hbox to\w@ProofNumber{}\=\kill}    % template line
\def\endproof{\end{tabbing}\egroup % ends the \vtop
        \e@Macro\postProofHook\postProofSkip}
\newcount\@indentLevel
\newcount\@indentCount
\def\@indentProof{% do \>, \@indentLevel times
        \global\@indentCount=\@indentLevel
        \@gloop \>\global\advance\@indentCount by-\@ne
        \ifnum\@indentCount>0
        \repeat}
\def\@gloop#1\repeat{\gdef\@body{#1}\@giterate}
\def\@giterate{\@body \global\let\@gloopNext=\@giterate
        \else \global\let\@gloopNext=\relax \fi \@gloopNext}
\def\trace{\tracingcommands=2\tracingmacros2}
\@changeOtherMathcodes 
\let\@@@end=\@@end
\def\@@end{%
  \ifannrefused@\@vdmslwarning{%
  To get references right it is necessary to run ^^J
  \@spaces\@spaces\@spaces\@spaces\space\space LaTeX TWICE.
}\fi\@@@end}
\leftalignment
\linenumbering
\nomodulenumbering
\initialise@fonts     
\setindent{inner}{1.7em}   
\setindent{outer}{1.5em}  
\endinput

Messung V0.5 in Prozent
C=91 H=94 G=92

¤ Dauer der Verarbeitung: 0.66 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.