708 lines
28 KiB
TeX
Executable File
708 lines
28 KiB
TeX
Executable File
\usepackage{float}
|
|
\usepackage{color}
|
|
\usepackage{xspace_spezial}
|
|
\usepackage{amsmath}
|
|
\usepackage{amssymb}
|
|
\usepackage{alltt}
|
|
\usepackage{fancybox}
|
|
\usepackage{stmaryrd}
|
|
\usepackage{verbatim}
|
|
\usepackage{epsfig}
|
|
\usepackage{multicol}
|
|
\newlength{\textwid}
|
|
\setlength{\textwid}{\textwidth}
|
|
\addtolength{\textwid}{-4ex}
|
|
\newlength{\textfighei}
|
|
\setlength{\textfighei}{\textheight}
|
|
\addtolength{\textfighei}{-10ex}
|
|
\DeclareSymbolFont{blackboard}{OT1}{bbm}{m}{sl}
|
|
\DeclareMathSymbol{\IR}{0}{blackboard}{"52}
|
|
\DeclareMathSymbol{\IN}{0}{blackboard}{"4E}
|
|
\DeclareMathSymbol{\IF}{0}{blackboard}{"46}
|
|
\DeclareMathSymbol{\IP}{0}{blackboard}{"50}
|
|
\DeclareMathSymbol{\IK}{0}{blackboard}{"4D}
|
|
\DeclareMathSymbol{\IZ}{0}{blackboard}{"5A}
|
|
\DeclareMathSymbol{\IQ}{0}{blackboard}{"51}
|
|
\DeclareMathSymbol{\IC}{0}{blackboard}{"43}
|
|
\parindent 0mm
|
|
\renewcommand{\unlhd}{<}
|
|
%\renewcommand{\lhd}{<\!\!|}
|
|
%\renewcommand{\rhd}{|\!\!>}
|
|
\definecolor{blue}{rgb}{0,0,1}
|
|
\definecolor{red}{rgb}{1,0,0}
|
|
\definecolor{green}{rgb}{0,1,0.3}
|
|
\definecolor{bluered}{rgb}{1,0,1}
|
|
\definecolor{bluegreen}{rgb}{1,0.3,0}
|
|
\newcommand{\red}[1]{\textcolor{red}{#1}}
|
|
\newcommand{\blue}[1]{\textcolor{blue}{#1}}
|
|
\newcommand{\green}[1]{\textcolor{green}{#1}}
|
|
\newcommand{\bluered}[1]{\textcolor{bluered}{#1}}
|
|
\newcommand{\bluegreen}[1]{\textcolor{bluegreen}{#1}}
|
|
\reversemarginpar
|
|
\newcommand{\commentary}[1]{\marginpar[\tiny #1]{\tiny #1}}
|
|
%\newcommand{\commentaryforKlaeren}[1]{\marginpar[\tiny #1]{\tiny #1}}
|
|
%\newcommand{\commentary}[1]{}
|
|
\newcommand{\commentaryforKlaeren}[1]{}
|
|
%
|
|
% figure - Einstellungen
|
|
%
|
|
\def\textfraction{0}
|
|
\def\topfraction{1.5}
|
|
\def\bottomfraction{1}
|
|
\def\floatpagefraction{1.0}
|
|
%\def\dbltopfraction{1}
|
|
%\def\dblfloatpagefraction{1.0}
|
|
\newcommand{\indexentry}[2]{\item[] #1 \dotfill #2\qquad\qquad\vspace{-0.8em}}
|
|
\newcommand{\sub}{\textrm{\,$\sqsubseteq$\,}\xspace}
|
|
\newcommand{\nsub}{\text{\,$\not\sqsubseteq$\,}\xspace}
|
|
\newcommand{\ecap}{\mbox{$\,\sqcap\,$}}
|
|
\newcommand{\ecup}{\mbox{$\,\sqcup\,$}}
|
|
\newcommand{\pre}{\mbox{$\,\preceq\,$}}
|
|
\newcommand{\botam}{{\{\, \bot,\ \amalg \,\}}\xspace}
|
|
|
|
%
|
|
% Substitutions
|
|
%
|
|
\newcommand{\subst}{\textrm{$\expbf{subst}{\normaltset}$}}
|
|
|
|
%
|
|
% Signaturen
|
|
%
|
|
\def\einf#1#2{\mbox{$(#1,~#2)$}\xspace}
|
|
\newcommand{\sig}{\einf{\normalbtermset}{\Theta}}
|
|
\newcommand{\typesig}{\einf{BTV}{TC}\xspace}
|
|
\newcommand{\einsig}{\einf{\normaltermset}{F}\xspace}
|
|
\newcommand{\msig}{\einsig}
|
|
\newcommand{\mssig}{\einf{\equivtermset}{F_{ms}}\xspace}
|
|
\newcommand{\ossig}{\einf{\normaltset, \sub}{F_{os}}\xspace}
|
|
\def\einfm#1#2{\langle #1,\ #2 \rangle}
|
|
%\def\pos#1#2{\einf{#1,\ \sqsubseteq}{#2}}
|
|
\def\pos#1#2#3{\einf{#1,\ #2}{#3}}
|
|
\def\posm#1#2{\pos{#1}{#2}}
|
|
\def\posSO#1{\pos{#1}{F}}
|
|
\def\posSIG#1{\pos{S}{#1}}
|
|
\newcommand{\posig}{\pos{\normaltset}{\olsub}{\Sigma}}
|
|
\newcommand{\posigM}{\pos{\normaltset}{\olsub}{M}}
|
|
%\newcommand{\posig}{\pos{S}{\Sigma}}
|
|
\newcommand{\overposig}{\pos{\overline{S}}{\overline{\Sigma}}}
|
|
\def\fsf#1#2#3{\mbox{$#1^{(#2,#3)}$}\xspace}
|
|
\def\Sigmaa#1#2{\fsf{F}{#1}{#2}\xspace}
|
|
\newcommand{\Sigmaws}{\Sigmaa{w}{s}}
|
|
\newcommand{\Sigmawt}{\Sigmaa{w}{\theta}}
|
|
\def\set#1{\{\,#1 \,\}}
|
|
\newcommand{\termset}[3]{\textrm{$\exp{#1_{#2}}{#3}$}\xspace}
|
|
\newcommand{\normaltset}{\termset{T}{\Theta}{TV}}
|
|
\newcommand{\normaltermset}{\termset{T}{\Theta}{TV}}
|
|
\newcommand{\normalbtermset}{\termset{T}{TC}{BTV}}
|
|
\newcommand{\equivtermset}{\textrm{$\exp{T_{\Theta_{\sim}}}{TV}$}\xspace}
|
|
\newcommand{\equiva}[1]{[#1]_{\sim}}
|
|
\newcommand{\popoSIG}[1]{\einf{\normaltset,~\sqsubseteq}{#1}}
|
|
\newcommand{\poposig}{\popoSIG{F}}
|
|
%\newcommand{\poss}{polymorphically order-sorted signature\xspace}
|
|
%\newcommand{\posa}{polymorphically order-sorted algebra\xspace}
|
|
\newcommand{\polyosalg}{\textrm{\rm \textbf{PolyOSAlg}$_{\SigO}$}}
|
|
\newcommand{\polyalg}{\textrm{\rm \textbf{PolyAlg}$_{\SigM}$}}
|
|
\newcommand{\SigO}{\textrm{$\Sigma_{\textit{os}}$}\xspace}
|
|
\newcommand{\FuO}{\textrm{$F$}\xspace}
|
|
\newcommand{\SigM}{\textrm{$\Sigma_{\textit{ms}}$}\xspace}
|
|
\newcommand{\FuM}{\textrm{$F$}\xspace}
|
|
\newcommand{\Sig}{\textrm{$\Sigma$}\xspace}
|
|
\newcommand{\SigE}{\textrm{$\Sigma_{\textit{ext}}$}\xspace}
|
|
\newcommand{\objprogram}{\textrm{$<\Sig, \, E>$}\xspace}
|
|
|
|
%
|
|
% Algebren
|
|
%
|
|
\let\oldsqsubseteq=\sqsubseteq
|
|
\renewcommand{\sqsubseteq}{\leq}
|
|
\def\alg#1#2{\textrm{{\rm (}$#1;#2${\rm )}}\xspace}
|
|
\def\algm#1#2{(#1;#2)}
|
|
\def\algME#1{\alg{#1}{\alpha}}
|
|
\def\algABB#1{\alg{A}{#1}}
|
|
\def\algebra{\alg{A}{\alpha}}
|
|
\def\termalg{\mbox{$\algm{T_{\text{\rm posig}}}{\iota}$}}
|
|
\def\termalgm#1{\algm{T_{\text{#1}}}{\iota_{\text{#1}}}}
|
|
\def\OStermsetvar#1{\textrm{$T_{\SigO}#1$}\xspace}
|
|
\def\OStermset{\OStermsetvar{(V)}}
|
|
\def\OStset{\OStermsetvar{}\xspace}
|
|
\def\OStermsettypevar#1#2{\textrm{$T^{#1}_{\SigO}#2$}\xspace}
|
|
\def\OStermsettype#1{\OStermsettypevar{#1}{(V)}}
|
|
\def\ops{\exp{Ops}{A}}
|
|
\def\exp#1#2{#1(\,#2\,)\xspace}
|
|
%\def\exptt#1#2{\exp{\text{\tt #1}}{\text{\tt #2}}}
|
|
\def\exptt#1#2{\exp{\mbox{$\mathtt{#1}$}}{\mbox{$\mathtt{#2}$}}}
|
|
\def\expsyn#1#2{\exp{\syn{#1}}{\syn{#2}}}
|
|
\def\expbf#1#2{\exp{\text{\bf #1}}{#2}}
|
|
\def\expsf#1#2{\exp{\text{\sf #1}}{#2}}
|
|
\def\exptype#1#2{#1\textrm{{\tt <}}#2\textrm{{\tt >}}\xspace}
|
|
\def\exptypett#1#2{\mathtt{#1}\textrm{{\tt <}}\mathtt{#2}\textrm{{\tt >}}\xspace}
|
|
\def\smalltt#1{\texttt{\small #1}}
|
|
\def\term{\textrm{$\exp{f}{t_1, \ \ldots \ ,t_n}$}\xspace}
|
|
\def\hverbandm#1#2{\textrm{$(#1,~#2)$}}
|
|
\def\partord#1#2{\hverbandm{#1}{#2}\xspace}
|
|
\def\eval#1{eval_{\left<#1\right>}\xspace}
|
|
\def\evalA{$\eval{\algm{A}{\alpha}}$\xspace}
|
|
\def\la#1#2{\mbox{$\lambda#1.#2$}\xspace}
|
|
\def\set#1{\{\, #1 \,\}}
|
|
|
|
\newcommand{\inletters}[1]{
|
|
\ifx\the
|
|
first
|
|
\fi}
|
|
|
|
%\newcommand{\olsub}{\textrm{$\, \ol{\sqsubseteq} \,$}\xspace}
|
|
\newcommand{\olsub}{\textrm{$\, \leq^\ast \,$}\xspace}
|
|
\newcommand{\olsubprime}{\textrm{$\, \ol{\sqsubseteq}' \,$}\xspace}
|
|
\newcommand{\nolsub}{\textrm{$\, \not\sqsubseteq^* \,$}\xspace}
|
|
\newcommand{\hverband}{\partord{S}{\sqsubseteq}\xspace}
|
|
\newcommand{\qverband}{\partord{\exp{\ol{T}_{\Theta}}{V}}{\olsub}}
|
|
\newcommand{\cloqverband}{\partord{\exp{T_{\Theta}}{V}}{\olsub}}
|
|
\newcommand{\hord}{\mbox{$(S,~\sqsubseteq)$}\xspace}
|
|
\def\einschr#1{|_{#1}}
|
|
%\newcommand{\lsem}{[\hspace*{-0.3ex}[}
|
|
%\newcommand{\rsem}{]\hspace*{-0.3ex}]}
|
|
\newcommand{\lsem}{\llbracket\hspace{.5ex}}
|
|
\newcommand{\rsem}{\hspace{.5ex}\rrbracket}
|
|
\newcommand{\lsemm}{\lsem}
|
|
\newcommand{\rsemm}{\rsem}
|
|
\newcommand{\semantic}[1]{\lsem #1 \rsem\xspace}
|
|
\newcommand{\ol}[1]{\overline{#1}}
|
|
\newcommand{\ul}[1]{\underline{#1}}
|
|
\newcommand{\dps}{\displaystyle}
|
|
\newcommand{\sema}[3]{{\cal #1}_{#2}\semantic{#3}}
|
|
\newcommand{\sem}[2]{\sema{#1}{}{#2}\xspace}
|
|
|
|
%
|
|
% Programming languages
|
|
%
|
|
|
|
\newcommand{\haskell}{\textsf{Haskell}\xspace}
|
|
\newcommand{\gofer}{\textsf{Gofer}\xspace}
|
|
\newcommand{\objp}{\mbox{\textsf{OBJ--P}}\xspace}
|
|
\newcommand{\java}{\mbox{\textsf{G--JAVA}}\xspace}
|
|
\newcommand{\oldjava}{\mbox{\textsf{JAVA}}\xspace}
|
|
\newcommand{\javafive}{\mbox{\textsf{JAVA 5.0}}\xspace}
|
|
\newcommand{\eclipse}{\mbox{\textsf{eclipse}}\xspace}
|
|
\newcommand{\pizza}{\mbox{\textsf{PIZZA}}\xspace}
|
|
\newcommand{\gj}{\mbox{\textsf{GJ}}\xspace}
|
|
\newcommand{\sml}{\mbox{\textsf{SML}}\xspace}
|
|
\newcommand{\ocaml}{\textsf{OCAML}}
|
|
\newcommand{\obj}{\mbox{\textsf{OBJ--3}}\xspace}
|
|
\newcommand{\objtwo}{\mbox{\textsf{OBJ--2}}\xspace}
|
|
|
|
\def\pot#1{{\cal P}(\, #1 \,)\xspace}
|
|
\def\partf{\overset{\text{\tiny part}}{\longrightarrow}\xspace}
|
|
%
|
|
% Deduktionssystem
|
|
%
|
|
\newcommand{\byrule}[1]{\raisebox{1.5ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}}
|
|
\newcommand{\byruleok}[1]{\raisebox{1.5ex}[0ex][0ex]{{{\rm \small #1}}}}
|
|
\newcommand{\byrulewb}[1]{\raisebox{2.5ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}}
|
|
\newcommand{\byruleokwb}[1]{\raisebox{2.5ex}[0ex][0ex]{{{\rm \small #1}}}}
|
|
\newcommand{\byrulesli}[1]{\raisebox{3.0ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}}
|
|
\newcommand{\inter}[1]{\bigwedge \hspace{-.55em} \bigwedge_{#1}}
|
|
|
|
%
|
|
% ARRAY WITH ARGUMENTS
|
|
%
|
|
\newcommand{\sarray}[2]{\begin{array}[t]{#1} #2 \end{array}}
|
|
\newcommand{\sarrayt}[2]{\begin{array}[t]{#1} #2 \end{array}}
|
|
\newcommand{\sarrayb}[2]{\begin{array}[b]{#1} #2 \end{array}}
|
|
\newcommand{\sarrayo}[2]{\begin{array}{#1} #2 \end{array}}
|
|
|
|
%
|
|
% INFERENCE RULES
|
|
%
|
|
\newcommand{\byrulenew}[1]{\raisebox{2.1ex}[0ex][0ex]{{{\rm [{\bf \small #1}]}}}}
|
|
\newcommand{\postcond}[1]{\raisebox{2.1ex}[0ex][0ex]{#1}}
|
|
\newcommand{\lef}[1]{\multicolumn{1}{@{}l}{#1}}
|
|
\newcommand{\ri}[1]{\multicolumn{1}{r@{}}{#1}}
|
|
\newcommand{\ce}[1]{\multicolumn{1}{@{}c}{#1}}
|
|
\newcommand{\axiom}[2]{\textrm{[}\textbf{\small #1}\textrm{]} & \lef{#2}}
|
|
\newcommand{\irule}[4]{& \sarray{c}{#2}\vspace{1ex}\\\cline{2-2}
|
|
\vspace{-2ex}\\ \byrulenew{#1} & \sarray{c}{#3} & \postcond{$#4$}}
|
|
\newcommand{\irulealign}[6]{& \sarray{#2}{#3}\vspace{1ex}\\\cline{2-2}
|
|
\vspace{-2ex}\\ \byrulenew{#1} & \sarray{#4}{#5} & \postcond{$#6$}}
|
|
\newenvironment{irules}{$\begin{array}{lcl}}{\end{array}$}
|
|
|
|
%
|
|
% Kategorien
|
|
%
|
|
\newcommand{\funs}[1]{\mbox{$F^S_{ERR}$(\, #1 \,)}\xspace}
|
|
\newcommand{\funa}[1]{\mbox{$F^A_{ERR}$(\, #1 \,)}\xspace}
|
|
\newcommand{\funh}[1]{\mbox{$F^H_{ERR}(\, #1 \,)$}\xspace}
|
|
|
|
%
|
|
% Typherleitungen
|
|
%
|
|
%\let\oldrhd=\rhd
|
|
%\newcommand{\rder}{\hspace*{0.5ex} \rhd_{\textrm{\tiny $\Sig$}} \hspace{0.5ex}}
|
|
\newcommand{\rder}{\hspace*{0.5ex} \rhd \hspace{0.5ex}}
|
|
%\newcommand{\lder}{\hspace*{0.5ex} \lhd_{\textrm{\tiny $\Sig$}} \hspace*{0.5ex}}
|
|
\newcommand{\lder}{\hspace*{0.5ex} \lhd \hspace*{0.5ex}}
|
|
\newcommand{\rderStmt}{\hspace*{0.5ex} \rhd_{Stmt} \hspace*{0.5ex}}
|
|
\newcommand{\rderExpr}{\hspace*{0.5ex} \rhd_{Expr} \hspace*{0.5ex}}
|
|
\newcommand{\rderIdent}{\hspace*{0.5ex} \rhd_{Id} \hspace*{0.5ex}}
|
|
\let\oldblacktriangleright=\blacktriangleright
|
|
%\newcommand{\fder}{\hspace*{1ex} \textrm{$\blacktriangleright_{\textsl{\tiny \hspace{-1ex}\Sig}}$}}
|
|
\newcommand{\fder}{\hspace*{1ex} \textrm{$\blacktriangleright$}}
|
|
|
|
\newcommand{\newtheo}[3]{\newtheorem{#1}[defhalbordnung]{#2}
|
|
\begin{#1} {\rm #3} \label{#1} \end{#1}}
|
|
\newcommand{\der}[2]{\mbox{$#1 \rhd\ #2$}\xspace}
|
|
\newcommand{\derl}[2]{#1 \lhd_{\textrm{\tiny $\Sig$}} #2\xspace}
|
|
\newcommand{\derr}[2]{#1 \rhd_{\textrm{\tiny \hspace{-1ex}$\Sig$}} #2\xspace}
|
|
\newcommand{\derf}[3]{( \, #1, \, #2 \, ) \fder #3\xspace}
|
|
|
|
\newcommand{\deri}[1]{\der{A}{K}{#1}\xspace}
|
|
\newcommand{\derif}[1]{\derf{A}{K}{D}{#1}\xspace}
|
|
\newcommand{\arity}[3]{\textrm{$\alpha^{(#1,#2)}_{#3}$}\xspace}
|
|
\newcommand{\coarity}[2]{\textrm{$\beta^{(#1,#2)}$}\xspace}
|
|
\newcommand{\sodaprg}{\textrm{$(\,\textsl{csig},\ D\,)$\xspace}}
|
|
|
|
%
|
|
% Typen
|
|
%
|
|
\newcommand{\typ}[3]{\textrm{$ #1 \times \ldots \times #2 \rightarrow #3$}\xspace}
|
|
\newcommand{\syn}[1]{{\rm \texttt{\small #1}}}
|
|
\newcommand{\sigmatyp}{\typ{\sigma_1}{\sigma_n}{\sigma}\xspace}
|
|
\newcommand{\sigmadef}{\mbox{$\sigma_1 \times \ldots \times \sigma_n$}\xspace}
|
|
\newcommand{\tautyp}{\typ{\tau_1}{\tau_n}{\tau}\xspace}
|
|
\newcommand{\tautypsup}[1]{\typ{\tau^{#1}_1}{\tau^{#1}_n}{\tau^{#1}}\xspace}
|
|
\newcommand{\taudef}{\mbox{$\tau_1 \times \ldots \times \tau_n$}\xspace}
|
|
\newcommand{\thetatyp}{\typ{\theta_1}{\theta_n}{\theta_0}\xspace}
|
|
\newcommand{\type}{\text{$\text{TYPE}(\,S,\ V\,)$}\xspace}
|
|
\newcommand{\typea}{\text{$\text{TYPE}_T(\,S,\ V\,)$}\xspace}
|
|
\newcommand{\ptype}{{\rm \expsf{Type}{\normalbtermset}}\xspace}
|
|
\newcommand{\ptypea}{\text{$\text{TYPE}_T(\,\Theta,\ V\,)$}\xspace}
|
|
\newcommand{\types}{\text{$\text{TYPE}_s(\,S,\ \Gamma\,)$}\xspace}
|
|
|
|
\newcommand{\epsbox}[2]{
|
|
%\begin{center}
|
|
\setlength{\fboxsep}{4mm}
|
|
\fbox{\epsfxsize=#1 \epsfbox{#2}}
|
|
%\end{center}
|
|
}
|
|
|
|
\newcommand{\epsxybox}[3]{
|
|
\begin{minipage}[t]{#1}
|
|
\setlength{\fboxsep}{4mm}
|
|
\fbox{\epsfysize=#2 \epsfbox{#3}}
|
|
\end{minipage}}
|
|
|
|
\newenvironment{program}{\begin{alltt}\small}
|
|
{\normalsize\end{alltt}\vspace*{-1em}}
|
|
\floatstyle{plain}
|
|
\newfloat{soda}{htp}{lop}
|
|
\floatname{soda}{SODA-Program}
|
|
|
|
%\sodaprog
|
|
% 1. width
|
|
% 2. figure
|
|
% 3. file
|
|
\newcommand{\sodaprog}[3]{
|
|
\begin{figure}%[#2]
|
|
%\begin{center}
|
|
\begin{Sbox}
|
|
\begin{minipage}{#1}
|
|
\small
|
|
\begin{alltt}
|
|
\verbatiminput{#3.soda}
|
|
\end{alltt}
|
|
\normalsize
|
|
\end{minipage}
|
|
\end{Sbox}
|
|
\setlength{\fboxsep}{2mm}
|
|
\fbox{\TheSbox}
|
|
%\end{center}
|
|
\caption{SODA module \texttt{#3}}
|
|
\label{fig:#3}
|
|
\end{figure}
|
|
}
|
|
|
|
%
|
|
% Theorem
|
|
%
|
|
\newcommand{\QED}{\rule{1.1ex}{1.1ex}}
|
|
%\newenvironment{proof}{\par \bigskip \noindent {\bf Proof:}
|
|
% }{\mbox{ } \hfill \QED \par \smallskip}
|
|
%\newenvironment{remark}{\par \bigskip \noindent {\bf Remark}
|
|
% }{\par \smallskip}
|
|
%\newtheorem{definition}{Definition}[section]
|
|
%\newtheorem{example}[definition]{Example}
|
|
%\newtheorem{theorem}[definition]{Theorem}
|
|
%\newtheorem{corollary}[definition]{Corollary}
|
|
%\newtheorem{lemma}[definition]{Lemma}
|
|
%\newtheorem{algorithm}[definition]{Algorithm}
|
|
%\newenvironment{abstract}{\small \begin{center} {\bf Abstract}\\[2ex]
|
|
%\begin{minipage}{0.85\textwidth}}{\end{minipage} \end{center}}
|
|
\newenvironment{Zusammenfassung}{\small \begin{center} {\bf Zusammenfassung}\\[2ex]
|
|
\begin{minipage}{0.85\textwidth}}{\end{minipage} \end{center}}
|
|
\newlength{\level}
|
|
\newlength{\wid}
|
|
|
|
|
|
%\newcommand{\thelb}{
|
|
\def\notunlhd{\mathrel{\unlhd\!\!\!\!\!\mid}}
|
|
\def\In#1#2{#1 \! \in \! #2}
|
|
\def\Leq#1#2#3{#1 \! \leqslant \! #2 \! \leqslant \! #3}
|
|
\def\Lequ#1#2#3{#1 \leqslant #2 \leqslant #3}
|
|
\newcommand{\ma}[1]{\text{``}#1\text{''}\xspace}
|
|
\newcommand{\ttm}[1]{\mbox{\tt #1}\xspace}
|
|
\newcommand{\ret}[2]{\ttm{r}^{\ttm{\footnotesize #1}}_{\ttm{\footnotesize #2}}\xspace}
|
|
\newcommand{\retm}[2]{\ttm{r}^{#1}_{#2}\xspace}
|
|
\newcommand{\re}[2]{\displaystyle r^{#1}_{#2}\xspace}
|
|
\newlength{\qwert}
|
|
%\newcommand{\htext}[1]{\settowidth{\qwert}{#1} \addtolength{\qwert}{-0.65ex} \hspace*{\qwert}}
|
|
\newcommand{\htext}[1]{\settowidth{\qwert}{#1} \hspace*{\qwert}}
|
|
\newcommand{\leng}[1]{\settowidth{\qwert}{#1} \qwert}
|
|
\newcommand{\ldo}{, \ldots , }
|
|
|
|
|
|
%
|
|
% Algorithmus
|
|
%
|
|
\newcommand{\nll}{\newline\hspace*{\level}}
|
|
\newcommand{\nlevel}{\addtolength{\level}{0.4cm}}
|
|
\newcommand{\llevel}{\addtolength{\level}{-0.4cm}}
|
|
\newcommand{\ifc}[1]{\textbf{if} \nlevel #1 \llevel}
|
|
\newcommand{\elsifc}[1]{\textbf{elsif} \nlevel #1 \llevel}
|
|
\newcommand{\foreachc}[2]{\textbf{foreach} #1 \nlevel #2 \llevel}
|
|
\newcommand{\thenc}[1]{\textbf{then} \nlevel #1 \llevel}
|
|
\newcommand{\ifthenc}[2]{\textbf{if} #1 \textbf{then} \nlevel #2 \llevel}
|
|
\newcommand{\elsec}[1]{\textbf{else} \nlevel #1 \llevel}
|
|
\newcommand{\eifc}{\textbf{endif}\\}
|
|
\newcommand{\casec}[2]{\fbox{\textbf{case} #1}\ \nlevel \nlevel #2 \llevel \llevel}
|
|
\newcommand{\letc}[2]{\textbf{let} \nlevel \\ #1 = \nlevel #2 \llevel \llevel}
|
|
\newcommand{\letbf}[1]{\textbf{let} \nlevel \\ #1 \llevel}
|
|
\newcommand{\inc}[1]{\textbf{in} \nlevel #1 \llevel \nopagebreak\\ \textbf{end}}
|
|
\newcommand{\lam}[2]{\textbf{fn } #1 \textrm{$\, \Rightarrow \,$} #2}
|
|
\newcommand{\inputc}[1]{\nll \textbf{Input:} \nlevel #1 \llevel}
|
|
\newcommand{\outputc}[1]{\nll \textbf{Output:} \nlevel #1 \llevel}
|
|
%\newcommand{\letforeachc}[3]{\textbf{let-foreach} \nlevel #1:\\ \ul{#2} = \nlevel #3 \llevel \llevel}
|
|
\newcommand{\letforeachc}[3]{\textbf{let-foreach} \nlevel #1:\\ #2 = \nlevel #3 \llevel \llevel}
|
|
%\newcommand{\letuc}[2]{\textbf{let} \nlevel \\ \ul{#1} = \nlevel #2 \llevel \llevel}
|
|
\newcommand{\letuc}[2]{\textbf{let} \nlevel \\ #1 = \nlevel #2 \llevel \llevel}
|
|
\newcommand{\letoeq}[3]{\textbf{let} \nlevel \\ #1 #2 \nlevel #3 \llevel \llevel}
|
|
\newcommand{\letoeqol}[3]{\nlevel \\ #1 #2 \nlevel #3 \llevel \llevel}
|
|
%\newcommand{\letu}[2]{\nlevel\\ \ul{#1} = \nlevel #2 \llevel\llevel}
|
|
\newcommand{\letu}[2]{\nlevel\\ #1 = \nlevel #2 \llevel\llevel}
|
|
\newcommand{\letnc}[2]{\nlevel\\ #1 = \nlevel #2 \llevel\llevel}
|
|
\newcommand{\misc}[1]{\nlevel\\ #1 \llevel}
|
|
\newcommand{\least}{\textrm{$\top$}\xspace}
|
|
\newenvironment{algocommands}{
|
|
\setlength{\level}{2mm}
|
|
\renewcommand{\\}{\nll}
|
|
\noindent
|
|
}{\renewcommand{\\}{\newline}
|
|
\vspace{1ex}
|
|
}
|
|
\newenvironment{algo}{\begin{algorithm} \rm %\mbox{}\\
|
|
\begin{algocommands}
|
|
}{\end{algocommands}
|
|
\end{algorithm}
|
|
}
|
|
|
|
\newenvironment{boxedalgo}{
|
|
\begin{Sbox}
|
|
\begin{minipage}{\textwid}
|
|
\begin{algo}
|
|
}{\end{algo}
|
|
\end{minipage}
|
|
\end{Sbox}
|
|
\fbox{\TheSbox}
|
|
}
|
|
|
|
\newenvironment{Liste}{\begin{list}{\textbf{--}}{
|
|
\setlength{\parsep}{0pt plus0.0ex}
|
|
\setlength{\labelwidth}{2ex}
|
|
\setlength{\itemsep}{0pt}
|
|
\setlength{\leftmargin}{\labelsep +\labelwidth}
|
|
}}{\normalsize \end{list}}
|
|
|
|
|
|
\newcounter{ficall}
|
|
\setcounter{ficall}{0}
|
|
\newcommand{\ficall}[1]{\addtocounter{ficall}{1}\subsubsection*{(\theficall) \
|
|
#1}
|
|
\setcounter{secall}{0}
|
|
\setcounter{thicall}{0}
|
|
\setcounter{focall}{0}
|
|
\setcounter{fifcall}{0}
|
|
\setcounter{sixcall}{0}
|
|
\setcounter{sevcall}{0}
|
|
\setcounter{eigcall}{0}
|
|
\setcounter{nicall}{0}
|
|
\setcounter{tencall}{0}
|
|
\setcounter{elecall}{0}
|
|
}
|
|
\newcommand{\reficall}[1]{\subsubsection*{(\theficall) \
|
|
#1}}
|
|
\newcounter{fifinum}
|
|
\newcommand{\finumset}{\setcounter{fifinum}{\value{ficall}}}
|
|
\newcommand{\finum}{\thefifinum}
|
|
\newcounter{fifinumold}
|
|
\newcommand{\finumoldset}{
|
|
\setcounter{fifinumold}{\value{fifinum}}
|
|
}
|
|
\newcommand{\finumold}{\thesefinumold}
|
|
|
|
\newcounter{secall}
|
|
\setcounter{secall}{0}
|
|
\newcounter{sefinum}\newcounter{sesenum}
|
|
\newcommand{\senumset}{\setcounter{sefinum}{\value{ficall}}\setcounter{sesenum}{\value{secall}}}
|
|
\newcommand{\secall}[1]{\addtocounter{secall}{1}\subsubsection*{(\theficall.\thesecall) \ #1}
|
|
\setcounter{thicall}{0}
|
|
\setcounter{focall}{0}
|
|
\setcounter{fifcall}{0}
|
|
\setcounter{sixcall}{0}
|
|
\setcounter{sevcall}{0}
|
|
\setcounter{eigcall}{0}
|
|
\setcounter{nicall}{0}
|
|
\setcounter{tencall}{0}
|
|
\setcounter{elecall}{0}
|
|
}
|
|
\newcommand{\resecall}[1]{\subsubsection*{(\theficall.\thesecall) \ #1}}
|
|
\newcommand{\senum}{\thesefinum.\thesesenum}
|
|
\newcounter{sefinumold}
|
|
\newcounter{sesenumold}
|
|
\newcommand{\senumoldset}{
|
|
\setcounter{sefinumold}{\value{sefinum}}
|
|
\setcounter{sesenumold}{\value{sesenum}}
|
|
}
|
|
\newcommand{\senumold}{\thesefinumold.\thesesenumold}
|
|
|
|
\newcounter{thicall}
|
|
\setcounter{thicall}{0}
|
|
\newcounter{thifinum}\newcounter{thisenum}\newcounter{thithinum}
|
|
\newcommand{\thinumset}{\setcounter{thifinum}{\value{ficall}}\setcounter{thisenum}{\value{secall}}\setcounter{thithinum}{\value{thicall}}}
|
|
\newcommand{\thicall}[1]{\addtocounter{thicall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall) \ #1}
|
|
\setcounter{focall}{0}
|
|
\setcounter{fifcall}{0}
|
|
\setcounter{sixcall}{0}
|
|
\setcounter{sevcall}{0}
|
|
\setcounter{eigcall}{0}
|
|
\setcounter{nicall}{0}
|
|
\setcounter{tencall}{0}
|
|
\setcounter{elecall}{0}
|
|
}
|
|
\newcommand{\rethicall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall) \ #1}}
|
|
\newcommand{\thinum}{\thethifinum.\thethisenum.\thethithinum}
|
|
|
|
\newcounter{focall}
|
|
\setcounter{focall}{0}
|
|
\newcounter{fofinum}\newcounter{fosenum}\newcounter{fothinum}\newcounter{fofonum}
|
|
\newcommand{\focall}[1]{\addtocounter{focall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall) \ #1}
|
|
\setcounter{fifcall}{0}
|
|
\setcounter{sixcall}{0}
|
|
\setcounter{sevcall}{0}
|
|
\setcounter{eigcall}{0}
|
|
\setcounter{nicall}{0}
|
|
\setcounter{tencall}{0}
|
|
\setcounter{elecall}{0}
|
|
}
|
|
\newcommand{\fonumset}{\setcounter{fofinum}{\value{ficall}}\setcounter{fosenum}{\value{secall}}\setcounter{fothinum}{\value{thicall}}\setcounter{fofonum}{\value{focall}}}
|
|
\newcommand{\fonum}{\thefofinum.\thefosenum.\thefothinum.\thefofonum}
|
|
\newcommand{\refocall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall) \ #1}}
|
|
|
|
\newcounter{fifcall}
|
|
\setcounter{fifcall}{0}
|
|
\newcommand{\fifcall}[1]{\addtocounter{fifcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall) \ #1}
|
|
\setcounter{sixcall}{0}
|
|
\setcounter{sevcall}{0}
|
|
\setcounter{eigcall}{0}
|
|
\setcounter{nicall}{0}
|
|
\setcounter{tencall}{0}
|
|
\setcounter{elecall}{0}
|
|
}
|
|
\newcounter{fiffinum}\newcounter{fifsenum}\newcounter{fifthinum}\newcounter{fiffonum}\newcounter{fiffifnum}
|
|
\newcommand{\fifnumset}{\setcounter{fiffinum}{\value{ficall}}\setcounter{fifsenum}{\value{secall}}\setcounter{fifthinum}{\value{thicall}}\setcounter{fiffonum}{\value{focall}}\setcounter{fiffifnum}{\value{fifcall}}}
|
|
\newcommand{\fifnum}{\thefiffinum.\thefifsenum.\thefifthinum.\thefiffonum.\thefiffifnum}
|
|
\newcommand{\refifcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall) \ #1}}
|
|
\newcounter{fiffinumold}
|
|
\newcounter{fifsenumold}
|
|
\newcounter{fifthinumold}
|
|
\newcounter{fiffonumold}
|
|
\newcounter{fiffifnumold}
|
|
\newcommand{\fifnumoldset}{
|
|
\setcounter{fiffinumold}{\value{fiffinum}}
|
|
\setcounter{fifsenumold}{\value{fifsenum}}
|
|
\setcounter{fifthinumold}{\value{fifthinum}}
|
|
\setcounter{fiffonumold}{\value{fiffonum}}
|
|
\setcounter{fiffifnumold}{\value{fiffifnum}}
|
|
}
|
|
\newcommand{\fifnumold}{\thefiffinumold.\thefifsenumold.\thefifthinumold.\thefiffonumold.\thefiffifnumold}
|
|
|
|
\newcounter{fiffinumoldold}
|
|
\newcounter{fifsenumoldold}
|
|
\newcounter{fifthinumoldold}
|
|
\newcounter{fiffonumoldold}
|
|
\newcounter{fiffifnumoldold}
|
|
\newcommand{\fifnumoldoldset}{
|
|
\setcounter{fiffinumoldold}{\value{fiffinum}}
|
|
\setcounter{fifsenumoldold}{\value{fifsenum}}
|
|
\setcounter{fifthinumoldold}{\value{fifthinum}}
|
|
\setcounter{fiffonumoldold}{\value{fiffonum}}
|
|
\setcounter{fiffifnumoldold}{\value{fiffifnum}}
|
|
}
|
|
\newcommand{\fifnumoldold}{\thefiffinumoldold.\thefifsenumoldold.\thefifthinumoldold.\thefiffonumoldold.\thefiffifnumoldold}
|
|
|
|
\newcounter{sixcall}
|
|
\setcounter{sixcall}{0}
|
|
\newcommand{\sixcall}[1]{\addtocounter{sixcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall) \ #1}
|
|
\setcounter{sevcall}{0}
|
|
\setcounter{eigcall}{0}
|
|
\setcounter{nicall}{0}
|
|
\setcounter{tencall}{0}
|
|
\setcounter{elecall}{0}
|
|
}
|
|
\newcounter{sixfinum}
|
|
\newcounter{sixsenum}
|
|
\newcounter{sixthinum}
|
|
\newcounter{sixfonum}
|
|
\newcounter{sixfifnum}
|
|
\newcounter{sixsixnum}
|
|
\newcommand{\sixnumset}{
|
|
\setcounter{sixfinum}{\value{ficall}}
|
|
\setcounter{sixsenum}{\value{secall}}
|
|
\setcounter{sixthinum}{\value{thicall}}
|
|
\setcounter{sixfonum}{\value{focall}}
|
|
\setcounter{sixfifnum}{\value{fifcall}}
|
|
\setcounter{sixsixnum}{\value{sixcall}}
|
|
}
|
|
\newcommand{\sixnum}{\thesixfinum.\thesixsenum.\thesixthinum.\thesixfonum.\thesixfifnum.\thesixsixnum}
|
|
\newcommand{\resixcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall) \ #1}}
|
|
|
|
\newcounter{sevcall}
|
|
\setcounter{sevcall}{0}
|
|
\newcommand{\sevcall}[1]{\addtocounter{sevcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall) \ #1}
|
|
\setcounter{eigcall}{0}
|
|
\setcounter{nicall}{0}
|
|
\setcounter{tencall}{0}
|
|
\setcounter{elecall}{0}
|
|
}
|
|
\newcounter{sevfinum}
|
|
\newcounter{sevsenum}
|
|
\newcounter{sevthinum}
|
|
\newcounter{sevfonum}
|
|
\newcounter{sevfifnum}
|
|
\newcounter{sevsixnum}
|
|
\newcounter{sevsevnum}
|
|
\newcommand{\sevnumset}{
|
|
\setcounter{sevfinum}{\value{ficall}}
|
|
\setcounter{sevsenum}{\value{secall}}
|
|
\setcounter{sevthinum}{\value{thicall}}
|
|
\setcounter{sevfonum}{\value{focall}}
|
|
\setcounter{sevfifnum}{\value{fifcall}}
|
|
\setcounter{sevsixnum}{\value{sixcall}}
|
|
\setcounter{sevsevnum}{\value{sevcall}}
|
|
}
|
|
\newcommand{\sevnum}{\thesevfinum.\thesevsenum.\thesevthinum.\thesevfonum.\thesevfifnum.\thesevsixnum.\thesevsevnum}
|
|
\newcommand{\resevcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall) \ #1}}
|
|
|
|
\newcounter{eigcall}
|
|
\newcounter{eigfinum}\newcounter{eigsenum}\newcounter{eigthinum}\newcounter{eigfonum}\newcounter{eigfifnum}\newcounter{eigsixnum}\newcounter{eigsevnum}\newcounter{eigeignum}
|
|
\setcounter{eigcall}{0}
|
|
\newcommand{\eignumset}{\setcounter{eigfinum}{\value{ficall}}\setcounter{eigsenum}{\value{secall}}\setcounter{eigthinum}{\value{thicall}}\setcounter{eigfonum}{\value{focall}}\setcounter{eigfifnum}{\value{fifcall}}\setcounter{eigsixnum}{\value{sixcall}}\setcounter{eigsevnum}{\value{sevcall}}\setcounter{eigeignum}{\value{eigcall}}}
|
|
\newcommand{\eignum}{\theeigfinum.\theeigsenum.\theeigthinum.\theeigfonum.\theeigfifnum.\theeigsixnum.\theeigsevnum.\theeigeignum}
|
|
\newcommand{\eigcall}[1]{\addtocounter{eigcall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall) \ #1}
|
|
\setcounter{nicall}{0}
|
|
\setcounter{tencall}{0}
|
|
\setcounter{elecall}{0}
|
|
}
|
|
\newcommand{\reeigcall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall) \ #1}}
|
|
|
|
\newcounter{nicall}
|
|
\newcounter{nifinum}\newcounter{nisenum}\newcounter{nithinum}\newcounter{nifonum}\newcounter{nififnum}\newcounter{nisixnum}\newcounter{nisevnum}\newcounter{nieignum}\newcounter{nininum}
|
|
\setcounter{nicall}{0}
|
|
\newcommand{\ninumset}{\setcounter{nifinum}{\value{ficall}}\setcounter{nisenum}{\value{secall}}\setcounter{nithinum}{\value{thicall}}\setcounter{nifonum}{\value{focall}}\setcounter{nififnum}{\value{fifcall}}\setcounter{nisixnum}{\value{sixcall}}\setcounter{nisevnum}{\value{sevcall}}\setcounter{nieignum}{\value{eigcall}}\setcounter{nininum}{\value{nicall}}}
|
|
\newcommand{\ninum}{\thenifinum.\thenisenum.\thenithinum.\thenifonum.\thenififnum.\thenisixnum.\thenisevnum.\thenieignum.\thenininum}
|
|
\newcommand{\nicall}[1]{\addtocounter{nicall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall)
|
|
\ #1}
|
|
\setcounter{tencall}{0}
|
|
\setcounter{elecall}{0}
|
|
}
|
|
\newcommand{\renicall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall)
|
|
\ #1}}
|
|
\newcounter{nifinumold}
|
|
\newcounter{nisenumold}
|
|
\newcounter{nithinumold}
|
|
\newcounter{nifonumold}
|
|
\newcounter{nififnumold}
|
|
\newcounter{nisixnumold}
|
|
\newcounter{nisevnumold}
|
|
\newcounter{nieignumold}
|
|
\newcounter{nininumold}
|
|
\newcommand{\ninumoldset}{
|
|
\setcounter{nifinumold}{\value{nifinum}}
|
|
\setcounter{nisenumold}{\value{nisenum}}
|
|
\setcounter{nithinumold}{\value{nithinum}}
|
|
\setcounter{nifonumold}{\value{nifonum}}
|
|
\setcounter{nififnumold}{\value{nififnum}}
|
|
\setcounter{nisixnumold}{\value{nisixnum}}
|
|
\setcounter{nisevnumold}{\value{nisevnum}}
|
|
\setcounter{nieignumold}{\value{nieignum}}
|
|
\setcounter{nininumold}{\value{nininum}}
|
|
}
|
|
\newcommand{\ninumold}{\thenifinumold.\thenisenumold.\thenithinumold.\thenifonumold.\thenififnumold.\thenisixnumold.\thenisevnumold.\thenieignumold.\thenininumold}
|
|
|
|
|
|
\newcounter{tencall}
|
|
\setcounter{tencall}{0}
|
|
\newcommand{\tencall}[1]{\addtocounter{tencall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall.\thetencall)
|
|
\ #1}
|
|
\setcounter{elecall}{0}
|
|
}
|
|
\newcommand{\retencall}[1]{\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall.\thetencall)
|
|
\ #1}}
|
|
\newcounter{tenfinum}
|
|
\newcounter{tensenum}
|
|
\newcounter{tenthinum}
|
|
\newcounter{tenfonum}
|
|
\newcounter{tenfifnum}
|
|
\newcounter{tensixnum}
|
|
\newcounter{tensevnum}
|
|
\newcounter{teneignum}
|
|
\newcounter{tenninum}
|
|
\newcounter{tentennum}
|
|
\newcommand{\tennumset}{
|
|
\setcounter{tenfinum}{\value{ficall}}
|
|
\setcounter{tensenum}{\value{secall}}
|
|
\setcounter{tenthinum}{\value{thicall}}
|
|
\setcounter{tenfonum}{\value{focall}}
|
|
\setcounter{tenfifnum}{\value{fifcall}}
|
|
\setcounter{tensixnum}{\value{sixcall}}
|
|
\setcounter{tensevnum}{\value{sevcall}}
|
|
\setcounter{teneignum}{\value{eigcall}}
|
|
\setcounter{tenninum}{\value{nicall}}
|
|
\setcounter{tentennum}{\value{tencall}}}
|
|
\newcommand{\tennum}{\thetenfinum.\thetensenum.\thetenthinum.\thetenfonum.\thetenfifnum.\thetensixnum.\thetensevnum.\theteneignum.\thetenninum.\thetentennum}
|
|
|
|
\newcounter{elecall}
|
|
\setcounter{elecall}{0}
|
|
\newcommand{\elecall}[1]{\addtocounter{elecall}{1}\subsubsection*{(\theficall.\thesecall.\thethicall.\thefocall.\thefifcall.\thesixcall.\thesevcall.\theeigcall.\thenicall.\thetencall.\theelecall) \ #1}}
|
|
\newcounter{elefinum}
|
|
\newcounter{elesenum}
|
|
\newcounter{elethinum}
|
|
\newcounter{elefonum}
|
|
\newcounter{elefifnum}
|
|
\newcounter{elesixnum}
|
|
\newcounter{elesevnum}
|
|
\newcounter{eleeignum}
|
|
\newcounter{eleninum}
|
|
\newcounter{eletennum}
|
|
\newcounter{eleelenum}
|
|
\newcommand{\elenumset}{
|
|
\setcounter{elefinum}{\value{ficall}}
|
|
\setcounter{elesenum}{\value{secall}}
|
|
\setcounter{elethinum}{\value{thicall}}
|
|
\setcounter{elefonum}{\value{focall}}
|
|
\setcounter{elefifnum}{\value{fifcall}}
|
|
\setcounter{elesixnum}{\value{sixcall}}
|
|
\setcounter{elesevnum}{\value{sevcall}}
|
|
\setcounter{eleeignum}{\value{eigcall}}
|
|
\setcounter{eleninum}{\value{nicall}}
|
|
\setcounter{eletennum}{\value{tencall}}
|
|
\setcounter{eleelenum}{\value{elecall}}
|
|
}
|
|
\newcommand{\elenum}{\theelefinum.\theelesenum.\theelethinum.\theelefonum.\theelefifnum.\theelesixnum.\theelesevnum.\theeleeignum.\theeleninum.\theeletennum.\theeleelenum} |