Change to DHBW beamertheme. Add WIldcard creation slide

This commit is contained in:
Andreas Stadelmeier 2024-04-27 19:38:25 +02:00
parent 2e0909dcea
commit 22a8f80484
10 changed files with 1407 additions and 14 deletions

214
beamerthemeDHBW.sty Executable file
View File

@ -0,0 +1,214 @@
\ProvidesPackage{beamerthemeDHBW}[2015/06/08]
\usepackage[size=custom,width=27.517,height=19.25,scale=0.8,orientation=portrait]{beamerposter}
\setbeamersize{text margin left=2.12cm,text margin right=1.7585cm}
\usepackage{ifthen}
\definecolor{DHBWrot}{RGB}{226,0,26}
\definecolor{DHBWgrau}{RGB}{92,105,113}
\definecolor{DHBWhellgrau}{RGB}{124,135,141}
\definecolor{DHBWrotgrau}{RGB}{137,3,19}
\pgfdeclareimage[height=1.56cm]{DHBWlogo_klein}{images/dhbw-horb} % Hier das Logo der DHBW angeben (ohne Dateiendung)
\pgfdeclareimage[height=2.39cm]{DHBWlogo_gross}{images/dhbw-horb} % Hier das Logo der DHBW angeben (ohne Dateiendung)
\pgfdeclareimage[height=4.6cm,width=\paperwidth]{titel_bg}{images/DHBWtitel_bg}
\pgfdeclareimage[height=0.45cm]{itemize_items}{images/DHBW_itemize_items}
\pgfdeclareimage[height=0.45cm]{itemize_subitem}{images/DHBW_itemize_subitem}
\newcommand\DHBWurl{\internetadresse}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Befehl um Kapitel und Unterkapitel auf den Folien anzuzeigen
% (Verwendung duch \zeigeKapitel am Anfang eines \begin{frame})
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand\zeigeKapitel{
\begin{textblock*}{237.1mm}(21.2mm,40.2mm)
{\fontsize{12}{0}\selectfont\usebeamercolor[fg]{section}\insertsection}% Kapitel
\vskip.5ex %Zeilenumbruch
{\fontsize{22}{0}\selectfont\usebeamercolor[fg]{subsection}\insertsubsection}% Unterkapitel
% Frametitle kann experimentell eingeblendet werden - ist eigentlich nicht vorgesehen!
{\fontsize{15}{0}\selectfont\usebeamercolor[fg]{subsection}\insertframetitle}% Frametitle
\end{textblock*}
\vskip27.5mm% Abstand von oben vor Folieninhalt
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Befehl um Kopfzeile und Fußzeile auf den Folien anzuzeigen.
% Wird im Abschnitt Outer theme verwendet.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand\HeadlineFootline{
\setbeamertemplate{headline}{%
\ifnum\c@framenumber<2% Titlefolie ohne Kopfzeile
\else
\pgftext[left, top, at={\pgfpoint{15.6mm}{-7.7mm}}]{\pgfuseimage{DHBWlogo_klein}}
\begin{textblock*}{\paperwidth}(0mm,13.9mm)
\hfill\fontsize{12}{0}\selectfont\usebeamercolor[fg]{headline}\insertshortdate\hspace{1.7585cm} % rechtsbündig das Datum der Präsentation
\end{textblock*}
\begin{textblock*}{0mm}(117.5mm,19mm)
\noindent\rule{140.344mm}{0.4pt}
\end{textblock*}
\begin{textblock*}{\paperwidth}(0mm,22.5mm)
\fontsize{12}{0}\selectfont\usebeamercolor[fg]{headline}
%\hspace{12cm}\insertsection
\hfill\insertshorttitle\hspace{1.7585cm} % rechtsbündig der Titel der Präsentation
\end{textblock*}
\fi
\vskip27.2mm% Abstand von oben vor Folieninhalt
%\vskip40.2mm% Abstand von oben vor Folieninhalt
}
\setbeamertemplate{footline}{%
\ifnum\c@framenumber<2% Titlefolie ohne Fußzeile
\else
\begin{textblock*}{0mm}(17mm,173.53mm)
\noindent\rule{241.375mm}{0.4pt}
\end{textblock*}
\begin{textblock*}{\paperwidth}(0mm,177.3mm)
\hfill\fontsize{12}{0}\selectfont\usebeamercolor[fg]{footline}\insertsection\hspace{.5em}
\textbar\hspace{.5em}Seite \insertframenumber\hspace{1.7585cm} % rechtsbündig die Foliennummer
\end{textblock*}
\fi
\vspace{1.5cm} % unterer Rand des Folieninhalts
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Title Page
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setbeamertemplate{title page}
{
\begin{textblock*}{\paperwidth}(14.4mm,7mm)
\pgfuseimage{DHBWlogo_gross}
\end{textblock*}
\begin{textblock*}{\paperwidth}(0mm,58.3mm)
\begin{center}
{\usebeamerfont{title}\fontsize{46}{0}\selectfont\usebeamercolor[fg]{title}\inserttitle}
\end{center}
\end{textblock*}
\begin{textblock*}{192.7mm}(62.9mm,99mm)
{\usebeamerfont{subtitle}\fontsize{25}{0}\selectfont\usebeamercolor[fg]{subtitle}\insertsubtitle}
\end{textblock*}
\begin{textblock*}{162.9mm}(63.5mm,114.3mm)
{\usebeamerfont{author}\fontsize{15}{0}\selectfont\usebeamercolor[fg]{author}\insertauthor}
\end{textblock*}
\begin{textblock*}{\paperwidth}(0mm,133.4mm)
\pgfuseimage{titel_bg}
\end{textblock*}
\begin{textblock*}{\paperwidth}(0mm,149.5mm)
\begin{center}
{\fontsize{20}{12} \selectfont \color{white} \textbf{\DHBWurl}}
\end{center}
\end{textblock*}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Outer theme
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\useoutertheme{default}
\HeadlineFootline
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Inner Theme
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\useinnertheme{rectangles}
\setbeamertemplate{navigation symbols}{} % Navigationssymbole sind ausgeblendet
% Setzen der Einzüge bei Aufzählungen
%\setlength{\leftmargini}{.5em}
%\setlength{\leftmarginii}{1.0em}
%\setlength{\leftmarginiii}{1.5em}
%\setlength{\leftmarginiv}{2.0em}
%\setlength{\leftmarginv}{2.5em}
%\setlength{\leftmarginvi}{3.0em}
\setbeamertemplate{itemize items}{\pgfuseimage{itemize_items}}% Aufzählungszeichen
\setbeamertemplate{itemize subitem}{\pgfuseimage{itemize_subitem}}% Aufzählungszeichen Unterpunkte
\setbeamertemplate{itemize subsubitem}{\pgfuseimage{itemize_subitem}}% Aufzählungszeichen Unter-Unterpunkt
\setbeamertemplate{frametitle}{\normalsize \insertframetitle} %Frametitle ausgeblendet (wird nicht verwendet!)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Setzen der Schriftgrößen für verschiedene Folieninhalte
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setbeamertemplate{block begin}{%
\fontsize{13}{14.3}{\selectfont\usebeamercolor[fg]{block title}\textbf{\insertblocktitle}}%
\vskip.5ex %
%\begin{beamercolorbox}{DHWBgrau}%
\fontsize{13}{14.3}\selectfont\usebeamercolor[fg]{block body}
}
\setbeamertemplate{block end}{%
%\end{beamercolorbox}\vskip\smallskipamount
\hfill\null%
}
\setbeamertemplate{block alerted begin}{%
\fontsize{13}{14.3}\selectfont\usebeamercolor[fg]{block title}\textbf{\insertblocktitle}
\vskip.5ex %
\fontsize{13}{14.3}\selectfont\usebeamercolor[fg]{block alerted body}
}
\setbeamertemplate{block alerted end}{%
\hfill\null%
}
\setbeamertemplate{block example begin}{%
\fontsize{13}{14.3}\selectfont\usebeamercolor[fg]{block title}\textbf{\insertblocktitle}
\vskip.5ex %
\fontsize{13}{14.3}\selectfont\usebeamercolor[fg]{block example body}
}
\setbeamertemplate{block example end}{%
\hfill\null%
}
\setbeamertemplate{itemize/enumerate body begin}{\setlength{\labelwidth}{10ex}
%\fontsize{17}{14.3}
\selectfont\usebeamercolor[fg]{block itemize body}
}
\setbeamertemplate{itemize/enumerate body end}{%
\hfill\null%
}
\setbeamertemplate{itemize/enumerate subbody begin}{
%\fontsize{13}{14.3}
\selectfont\usebeamercolor[fg]{block itemize body}
}
\setbeamertemplate{itemize/enumerate subbody end}{%
\hfill\null%
}
\setbeamertemplate{itemize/enumerate subsubbody begin}{
\fontsize{13}{14.3}\selectfont\usebeamercolor[fg]{block itemize body}
}
\setbeamertemplate{itemize/enumerate subsubbody end}{%
\hfill\null%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% (Schrift-)Farben
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usecolortheme[named=DHBWgrau]{structure}
\setbeamercolor{title page}{fg=DHBWgrau, bg=white}
\setbeamercolor{logo}{bg=DHBWrot}
\setbeamercolor{title}{fg=DHBWgrau,bg=white}
\setbeamercolor{subtitle}{fg=DHBWgrau,bg=white}
\setbeamercolor{author}{fg=DHBWgrau,bg=white}
\setbeamercolor{date}{fg=DHBWgrau,bg=white}
\setbeamercolor{shorttitle}{fg=DHBWgrau,bg=white}
\setbeamercolor{frametitle}{fg=DHBWrot,bg=white}
\setbeamercolor{headline}{fg=DHBWgrau,bg=white}
\setbeamercolor{footline}{fg=DHBWgrau,bg=white}
\setbeamercolor{section}{fg=DHBWrot,bg=white}
\setbeamercolor{subsection}{fg=DHBWgrau,bg=white}
\setbeamercolor{enumerate item}{bg=white,fg=DHBWrot}
\setbeamercolor{description item}{bg=white,fg=DHBWrot}
\setbeamercolor{item projected}{bg=DHBWrot,fg=white}
\setbeamercolor{block title}{bg=white,fg=DHBWgrau}
\setbeamercolor{block body}{bg=white,fg=DHBWgrau}
\setbeamercolor{block alerted body}{bg=white,fg=DHBWrau}
\setbeamercolor{block example body}{bg=white,fg=DHBWgrau}
\setbeamercolor{block itemize body}{bg=white,fg=DHBWgrau}
\setbeamercolor*{block title example}{bg=white,fg=DHBWgrau}
\setbeamercolor*{block body example}{bg=white,fg=DHBWgrau}

9
einstellungen_liste.tex Executable file
View File

@ -0,0 +1,9 @@
\einstellung{titel}
\einstellung{untertitel}
\einstellung{datum}
\einstellung{studiengang}
\einstellung{dhbw}
\einstellung{autor}
\einstellung{sprache}
\einstellung{schriftart}
\einstellung{internetadresse}

BIN
images/DHBW_itemize_items.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

BIN
images/DHBW_itemize_subitem.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

BIN
images/DHBWtitel_bg.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

BIN
images/dhbw-horb.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -18,6 +18,8 @@
\lstdefinestyle{java}{backgroundcolor=\color{lightgray!20}}
\newcommand{\highlight}[1]{\begingroup\fboxsep=0pt\colorbox{yellow}{$\displaystyle #1$}\endgroup}
\newcommand{\tifj}{\texttt{TamedFJ}}
\newcommand{\wcSep}{\vdash}

786
prolog_slide.sty Executable file
View File

@ -0,0 +1,786 @@
\usepackage{float}
\usepackage{color}
\usepackage{xspace_spezial}
%\usepackage{amsmath}
%\usepackage{amssymb}
\usepackage{alltt}
\usepackage{fancybox}
\usepackage{stmaryrd}
\usepackage{verbatim}
\usepackage{epsfig}
%\usepackage{multicol}
\usepackage{longtable}
\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{\black}[1]{\textcolor{black}{#1}}
%\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]{}
%\newcommand{\commentaryN}[1]{\marginpar[\tiny #1]{\tiny #1}}
\newcommand{\commentaryN}[1]{}
\newcommand{\subsec}[1]{\textbf{\medskip\\\large #1\medskip}}
%
% figure - Einstellungen
%
\def\textfraction{0}
\def\topfraction{1}
\def\bottomfraction{1}
\def\floatpagefraction{0}
\renewcommand{\floatpagefraction}{0.9}
%\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}}
\def\typesig{\einf{\simpletype}{TC}}
\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\posm#1#2{\pos{#1}{#2}}
\def\posSO#1{\pos{#1}{F}}
\def\posSIG#1{\pos{S}{#1}}
\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\mathrmtt#1{\mbox{\rm \texttt{#1}}}
\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{\simpletype}{\textrm{$\expsf{SType$_{\mathit{TS}}$}{BTV}$}\xspace}
\newcommand{\QMextends}[1]{\textrm{\tt ?\,extends}\,#1}
\newcommand{\QMextendsabbr}[1]{\textrm{\tt ?\,ext.}\,#1}
\newcommand{\QMsuper}[1]{\textrm{\tt ?\,super}\,#1}
\newcommand{\alltype}{\textrm{$\expsf{Type$_{\mathit{TS}}$}{BTV}$}\xspace}
\newcommand{\lambdatype}[2]{\textrm{$\#\, #1 \, (#2)$}}
\newcommand{\funtype}[3]{\textrm{\exptype{{\texttt{Fun}}\textit{#1}}{$#2 , #3$}}}
\newcommand{\funtypett}[3]{\textrm{\exptype{{\texttt{Fun}}\texttt{#1}}{$\mathtt{#2} , \mathtt{#3}$}}}
\newcommand{\functiontype}[2]{\textrm{\exptype{{{\texttt{Function}}}}{$#1,#2$}}}
\newcommand{\functiontypett}[2]{\textrm{\exptype{{\texttt{Function}}}{$\mathtt{#1} , \mathtt{#2}$}}}
\newcommand{\funtypestar}[3]{\textrm{\exptype{\texttt{Fun#1}\$\$}{$#2$,$ #3$}}}
\newcommand{\funtypestarsmall}[3]{\textrm{\exptype{\small\texttt{Fun#1}\$\$}{$#2, #3$}}}
\newcommand{\funtypestartt}[3]{\textrm{\exptype{{\texttt{Fun}}\texttt{#1\$\$}}{$\mathtt{#2} $,\linebreak[0]$\mathtt{#3}$}}}
%\newcommand{\funtypestartt}[3]{\textrm{\exptype{{\rm \texttt{Fun}}\texttt{#1}$*$}{$\mathtt{#2} , \mathtt{#3}$}}}
\newcommand{\funtypettsmall}[3]{\exptype{\smallmathtt{Fun{#1}}}{\smallmathtt{#2} ,\smallmathtt{#3}}}
\newcommand{\funtypestarttsmall}[3]{\exptype{\smallmathtt{Fun{#1}*}}{\mbox{\smallmathtt{#2},}\smallmathtt{#3}}}
\newcommand{\lambdatypett}[2]{\lambdatype{\mathtt{#1}}{\mathtt{#2}}}
\newcommand{\extsimpletype}{\textrm{$\expsf{ExtSType$_{\mathit{TS}}$}{BTV}$}\xspace}
\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{\texttt{#1}}{\texttt{#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{\textbf{#1}}{#2}}
\def\expsf#1#2{\exp{\textsf{#1}}{#2}}
\def\exptype#1#2{#1\texttt{<}#2\texttt{>}\xspace}
\def\exptypett#1#2{\texttt{#1<#2>}\xspace}
%\def\exptypett#1#2{\mathtt{#1}\mathrm{{\tt <}}\mathtt{#2}\mathrm{{\tt >}}\xspace}
\def\smalltt#1{\texttt{\small #1}}
\def\smallmathtt#1{\textrm{\small $\tt #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{\lessdotQM}{\textrm{$\,\lessdot_?\,$}}
\newcommand{\olsubneq}{\textrm{$\, \lneq^\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}}
\def\uppereinschr#1{|^{#1}}
\def\lowereinschr#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}
% TI for FGJ wildcards
\newcommand\rulename[1]{\textup{\textsc{(#1)}}}
\newcommand{\generalizeRule}{General}
\newcommand{\generics}[1]{\ensuremath{\mathtt{\texttt{<} {#1} \texttt{>} }}}
\newcommand{\expr}[1]{\texttt{#1}}
\newcommand{\lessdotCC}{\ensuremath{\lessdot^{\texttt{c}}}}
\newcommand{\wtv}[1]{\ensuremath{\tv{#1}_?}}
\newcommand{\ntv}[1]{\ensuremath{\underline{\tv{#1}}}}
\newcommand{\rwildcard}[1]{\ensuremath{\mathtt{#1}}}
\newcommand{\wildcardEnv}{\ensuremath{\mathbb{W}}}
\newcommand{\wildcard}[3]{\ensuremath{\mathtt{#1 : [#3 .. #2]}}}
\newcommand{\wcNtype}[2]{\exists #1 .\ntype{#2}}
\newcommand{\wctype}[3]{\exists #1 .\exptype{#2}{#3}}
\newcommand{\wtype}[1]{\mathit{#1}}
\newcommand{\ntype}[1]{\mathtt{#1}}
\newcommand{\highlight}[1]{\begingroup\fboxsep=0pt\colorbox{yellow}{$\displaystyle #1$}\endgroup}
%
% 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{\javafive}{\mbox{\textsf{Java 5}}\xspace}
\newcommand{\java}{\mbox{\textsf{Java}}\xspace}
\newcommand{\javaseven}{\mbox{\textsf{Java 7}}\xspace}
\newcommand{\javaeight}{\mbox{\textsf{Java 8}}\xspace}
\newcommand{\javaten}{\mbox{\textsf{Java 10}}\xspace}
\newcommand{\javatx}{\mbox{\textsf{Java-TX}}\xspace}
\newcommand{\javafx}{\mbox{\textsf{JavaFX}}\xspace}
\newcommand{\javalam}{\mbox{\textsf{Java}$_\lambda$}\xspace}
\newcommand{\javabyte}{\mbox{\textsf{Java Byte Code}}\xspace}
\newcommand{\jvm}{\mbox{\textsf{JVM}}\xspace}
%\newcommand{\oldjava}{\mbox{\textsf{JAVA}}\xspace}
\newcommand{\oldjava}{\mbox{\textsf{Java}}\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}
\newcommand{\scala}{\mbox{\textsf{Scala}}\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{\sarrayc}[2]{\begin{array}[c]{#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]{&\multicolumn{1}{@{}l@{}}{\bf [#1]}\\ & \sarray{c}{#2}\vspace{1ex}\\\cline{2-2}
\vspace{-2ex}\\ %\byrulenew{#1}
& \sarray{c}{#3} & \postcond{$#4$}
}
\newenvironment{irules}{$\begin{array}{@{}l@{}c@{}l@{}}}{\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{\typ}[3]{\textrm{$( #1 \ldo #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{\typea}{\text{$\text{TYPE}_T(\,S,\ V\,)$}\xspace}
\newcommand{\ptype}{\expsf{Type}{\normaltset}\xspace}
\newcommand{\ptypea}{\text{$\text{TYPE}_T(\,\Theta,\ V\,)$}\xspace}
\newcommand{\types}{\text{$\text{TYPE}_s(\,S,\ \Gamma\,)$}\xspace}
\newcommand{\extends}[1]{{}_{?}#1}
\newcommand{\super}[1]{{}^{?}#1}
\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}[chapter]
%\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 , }
\newcommand{\tvar}[1]{\textit{$\mathtt{#1}$}\xspace}
%
% 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{\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}
}
%\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}}
\newcommand{\tabularfield}[1]{
\begin{tabular}{@{}l@{}}
#1
\end{tabular}
}
\newenvironment{Liste}{\begin{list}{\textbf{--}}{\setlength{\parsep}{0pt
plus0.0ex} \setlength{\itemsep}{0pt} \item[]}}{\end{list}}
\newenvironment{Listenullparsep}{\begin{list}{\textbf{--}}{
%\setlength{\topsep}{-5ex}
\setlength{\topsep}{0ex}
%\setlength{\parsep}{0pt plus1ex}
\setlength{\parsep}{0pt}
\setlength{\labelwidth}{2ex}
\setlength{\itemsep}{0pt}
\setlength{\leftmargin}{\labelsep +\labelwidth}
}}{\normalsize \end{list}}
%\landscapeonly
%\portraitonly
%\slidewidth9.7in
%\slideheight8.2in
%\slideframewidth0in
%\slideframesep0in
\newcounter{begriffnr}
\setcounter{begriffnr}{1}
\newcommand{\nextbegriff}[1]{\thebegriffnr. #1 \addtocounter{begriffnr}{1}}
\newcommand{\bflarge}[1]{\textbf{\large #1}}
\newcommand{\portraitslidey}[3]{
\begin{slide*}
\section*{#1}
\medskip
\begin{center}
\epsfysize#2
\epsfbox{#3}
\end{center}
\end{slide*}}
\newcommand{\portraitslidex}[3]{
\begin{slide*}
\section*{#1}
\medskip
\begin{center}
\epsfxsize#2
\epsfbox{#3}
\end{center}
\end{slide*}}
\newcommand{\landscapeslidex}[3]{
\landscapeslide{#1}{
\begin{center}
\epsfxsize#2
\epsfbox{#3}
\end{center}
}
}
\newcommand{\landscapeslidexoffset}[3]{
\landscapeslide{#1}{
\vspace*{-0.5cm}
\begin{center}
\hspace*{-2cm}
\epsfxsize#2
\epsfbox{#3}
\end{center}
}
}
\newcommand{\landscapeslidexlabel}[4]{
\begin{slide}
\section*{#1}
\medskip
\begin{center}
\epsfxsize#2
\epsfbox{#3}
\end{center}
#4
\end{slide}}
\newcommand{\landscapeslidexcomment}[4]{
\begin{slide}
\section*{#1}
\medskip
\begin{center}
\epsfxsize#2
\epsfbox{#3}
\end{center}
\comment{#4}
\end{slide}}
\newcommand{\landscapeslidexsubsub}[3]{
\begin{slide}
\subsubsection{#1}
\medskip
\begin{center}
\epsfxsize#2
\epsfbox{#3}
\end{center}
\end{slide}}
\newcommand{\landscapeslidextocsuboffset}[3]{
\landscapeslidetocsub{#1}{
\vspace*{-0.5cm}
\begin{center}
\hspace*{-2cm}
\epsfxsize#2
\epsfbox{#3}
\end{center}
}
}
\newcommand{\landscapeslidexoTnormal}[2]{
\begin{frame}
\begin{center}
\begin{minipage}[t]{#1}
%\vspace*{-5truecm}
%\vspace*{-2truecm}
\epsfxsize#1
%\hspace*{-5truecm}
%\hspace*{-3truecm}
\epsfbox{#2}
\end{minipage}
\end{center}
\end{frame}}
\newcommand{\landscapeslidexoT}[2]{\landscapeslidexoTXY{0cm}{0cm}{#1}{#2}}
\newcommand{\landscapeslidexoTXY}[4]{
\begin{frame}
\begin{center}
\begin{minipage}[t]{\textwidth}
\hspace*{#1}
\vspace*{#2}
\epsfxsize#3
\epsfbox{#4}
\end{minipage}
\end{center}
\end{frame}}
\newcommand{\landscapeslidexoTcomment}[3]{
\begin{slide}
\begin{center}
\begin{minipage}[t]{\slidewidth}
%\vspace*{-5truecm}
\vspace*{-2truecm}
\epsfxsize#1
%\hspace*{-5truecm}
\hspace*{-3truecm}
\epsfbox{#2}
\end{minipage}
\end{center}
\comment{#3}
\end{slide}}
\newcommand{\landscapeslidexoTlabel}[3]{
\begin{slide}
\begin{center}
\begin{minipage}[t]{\slidewidth}
%\vspace*{-5truecm}
\vspace*{-2truecm}
\epsfxsize#1
%\hspace*{-5truecm}
\hspace*{-3truecm}
\epsfbox{#2}
\end{minipage}
\end{center}
#3
\end{slide}}
\newcommand{\landscapeslideyoT}[2]{
\begin{slide}
\begin{center}
\begin{minipage}[t]{\slidewidth}
%\vspace*{-5truecm}
\vspace*{-3truecm}
\epsfysize#1
\hspace*{3truecm}
\epsfbox{#2}
\end{minipage}
\end{center}
\end{slide}}
\newcommand{\landscapeslidey}[3]{
\begin{slide}
\section*{#1}
\medskip
\begin{center}
\epsfysize#2
\epsfbox{#3}
\end{center}
\end{slide}}
%\newcommand{\landscapeslide}[2]{
% \begin{slide}
% \section*{#1}
% \medskip
% #2
% \end{slide}}
\newcommand{\landscapeslide}[2]{
\frame{
\frametitle{#1}
#2
}
}
\newcommand{\landscapeslidetocsub}[2]{
\subsection{#1}
\landscapeslide{#1}{#2}
}
\newcommand{\landscapeslidetocsubsub}[2]{
\begin{slide}
\subsubsection{#1}
\medskip
#2
\end{slide}}
\newcommand{\landscapeslidetoc}[3]{
\section{#1}
\landscapeslide{#2}{#3}
}
\newcommand{\landscapeslidetoctitle}[2]{
\landscapeslidetoc{#1}{#1}{#2}
}
\newenvironment{landscapeslideenv}[1]{
\begin{frame}
\frametitle{#1}
}
{\end{frame}}
\def\landscapesl#1{
\begin{slide}
\section*{#1}
\medskip}
%1.Breite links
%2.Inhalt links
%3.Breite oben rechts
%4.Inhalt oben rechts
%5. Inhaly Folie
\newcommand{\landscapeslideObenBild}[5]{
\begin{frame}
\frametitle{#2}
\begin{minipage}[b]{#1}
#5
\end{minipage}
\hfill
\parbox[b][\textheight-1cm]{#3}{
%\begin{minipage}[b]{#3}
\setlength{\epsfxsize}{#3}
\epsfbox{#4}
%\end{minipage}
\vfill
}
%#5
\end{frame}}
\newcommand{\portraitslide}[2]{
\begin{slide*}
\section*{#1}
\medskip
#2
\end{slide*}}
\definecolor{black}{rgb}{0,0,0}
\definecolor{blue}{rgb}{0,0,1}
\definecolor{blueA}{rgb}{0.2,0,0.4}
\definecolor{blueB}{rgb}{0.2,0,0.6}
\definecolor{blueC}{rgb}{0.2,0,0.8}
\definecolor{blueD}{rgb}{0.2,0,1.0}
\definecolor{blueE}{rgb}{0,0,0.8}
\definecolor{red}{rgb}{1,0,0}
\definecolor{redA}{rgb}{0.6,0,0.2}
\definecolor{green}{rgb}{0,1,0.3}
\definecolor{greenA}{rgb}{0.2,0.6,0}
\definecolor{greenB}{rgb}{0.2,0.6,0.2}
\definecolor{greenC}{rgb}{0.2,0.6,0.4}
\definecolor{bluered}{rgb}{1,0,1}
\definecolor{blueredB}{rgb}{0.4,0,0.6}
\definecolor{blueredC}{rgb}{0.4,0,1}
\definecolor{blueredD}{rgb}{0.6,0,1}
\definecolor{bluegreen}{rgb}{0.8,0.5,0}
\definecolor{yellow}{rgb}{1,1,0}
\definecolor{yellowA}{rgb}{1,0.8,0}
\definecolor{yellowB}{rgb}{1,0.6,0}
\definecolor{yellowC}{rgb}{1,0.4,0}
\definecolor{gray}{rgb}{0.662,0.662,0.662}
\definecolor{grayA}{rgb}{0.9,0.9,0.9}
\newcommand{\black}[1]{\textcolor{black}{#1}}
\newcommand{\red}[1]{\textcolor{red}{#1}}
\newcommand{\DHBWred}[1]{\textcolor{DHBWrot}{#1}}
\newcommand{\redA}[1]{\textcolor{redA}{#1}}
\newcommand{\blue}[1]{\textcolor{blue}{#1}}
\newcommand{\blueA}[1]{\textcolor{blueA}{#1}}
\newcommand{\blueB}[1]{\textcolor{blueB}{#1}}
\newcommand{\blueC}[1]{\textcolor{blueC}{#1}}
\newcommand{\blueD}[1]{\textcolor{blueD}{#1}}
\newcommand{\blueE}[1]{\textcolor{blueE}{#1}}
\newcommand{\green}[1]{\textcolor{green}{#1}}
\newcommand{\bluered}[1]{\textcolor{bluered}{#1}}
\newcommand{\blueredB}[1]{\textcolor{blueredB}{#1}}
\newcommand{\blueredC}[1]{\textcolor{blueredC}{#1}}
\newcommand{\blueredD}[1]{\textcolor{blueredD}{#1}}
\newcommand{\bluegreen}[1]{\textcolor{bluegreen}{#1}}
\newcommand{\greenA}[1]{\textcolor{greenA}{#1}}
\newcommand{\greenB}[1]{\textcolor{greenB}{#1}}
\newcommand{\greenC}[1]{\textcolor{greenC}{#1}}
\newcommand{\yellow}[1]{\textcolor{yellow}{#1}}
\newcommand{\yellowA}[1]{\textcolor{yellowA}{#1}}
\newcommand{\yellowB}[1]{\textcolor{yellowB}{#1}}
\newcommand{\yellowC}[1]{\textcolor{yellowC}{#1}}
\newcommand{\gray}[1]{\textcolor{gray}{#1}}
\newcommand{\grayA}[1]{\textcolor{grayA}{#1}}

View File

@ -1,14 +1,215 @@
\documentclass{beamer}
\input{prolog}
%Information to be included in the title page:
\title{Typinferenz für Java mit Wildcards}
\author{Andreas Stadelmeier}
\institute{DHBW Stuttgart Campus Horb}
\date{2024}
\documentclass[%
pdftex,
t, % Folieninhalt am oberen Rand beginnen.
10pt, % Schriftgroesse
]{beamer}
% Einstellungen laden
\usetheme{DHBW}
\usepackage{xstring}
\usepackage[utf8]{inputenc}
%\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage{amsmath}
%\usepackage{amsfonts}
%\usepackage{amssymb}
\usepackage{alltt}
\usepackage{nameref}
\newcommand{\einstellung}[1]{%
\expandafter\newcommand\csname #1\endcsname{}
\expandafter\newcommand\csname setze#1\endcsname[1]{\expandafter\renewcommand\csname#1\endcsname{##1}}
}
\input{einstellungen_liste} % verfügbare Einstellungen
%\input{einstellungen} % lese Einstellungen
\setzetitel{Scala-like function types in Featherweight Java}
\setzeuntertitel{Bad Honnef 2022}
\setzedatum{2. Mai 2022}
\setzestudiengang{Stuidengang Informatik}
\setzedhbw{DHBW Stuttgart Campus Horb}
\setzeinternetadresse{www.dhbw-stuttgart.de/horb}
\setzeautor{Andreas Stadelmeier}%\\Andreas Stadelmeier}
\setzeschriftart{palatino} % oder goudysans, lmodern, libertine
%% Farben (Angabe in HTML-Notation mit großen Buchstaben)
\newcommand{\ladefarben}{%
\definecolor{LinkColor}{HTML}{00007A}
\definecolor{ListingBackground}{HTML}{FCF7DE}
}
%% Mathematikpakete benutzen (Pakete aktivieren)
%\usepackage{amsmath}
%\usepackage{amssymb}
%% Programmiersprachen Highlighting (Listings)
\newcommand{\listingsettings}{%
\lstset{%
language=Java, % Standardsprache des Quellcodes
%numbers=left, % Zeilennummern links
stepnumber=1, % Jede Zeile nummerieren.
numbersep=5pt, % 5pt Abstand zum Quellcode
numberstyle=\tiny, % Zeichengrösse 'tiny' für die Nummern.
breaklines=false, % Zeilen umbrechen wenn notwendig.
breakautoindent=true, % Nach dem Zeilenumbruch Zeile einrücken.
postbreak=\space, % Bei Leerzeichen umbrechen.
tabsize=2, % Tabulatorgrösse 2
basicstyle=\ttfamily\small, % Nichtproportionale Schrift, klein für den Quellcode
showspaces=false, % Leerzeichen nicht anzeigen.
showstringspaces=false, % Leerzeichen auch in Strings ('') nicht anzeigen.
extendedchars=true, % Alle Zeichen vom Latin1 Zeichensatz anzeigen.
%captionpos=b, % sets the caption-position to bottom
%backgroundcolor=\color{ListingBackground}, % Hintergrundfarbe des Quellcodes setzen.
xleftmargin=0pt, % Rand links
xrightmargin=0pt, % Rand rechts
%frame=single, % Rahmen an
%frameround=ffff,
rulecolor=\color{darkgray}, % Rahmenfarbe
fillcolor=\color{ListingBackground}
showtabs=false,
%breaklines=true,
%breakatwhitespace=true,
%basicstyle=\ttfamily\fontsize{8}{9.6}\selectfont, %\footnotesize
escapeinside={(*@}{@*)},
captionpos=t,float,abovecaptionskip=-\medskipamount
}
}
\usepackage{prolog_slide}
%\input{prolog}
\usepackage[english, ngerman]{babel}
{\selectlanguage{ngerman}} % Paket babel benutzt neue deutsche Rechtschreibung
%{\selectlanguage{english}} % Paket babel benutzt Englisch
%%%%%%% Package Includes %%%%%%%
\usepackage[overlay, absolute]{textpos}
\usepackage{longtable}
\usepackage{pgffor} % für automatische Kapiteldateieinbindung
\usepackage{listings}
\usepackage{calc}
%%%%%% Configuration %%%%%
%% Anwenden der Einstellungen
\usepackage{\schriftart}
\ladefarben{}
% Titel, Autor und Datum
\title{\titel}
\subtitle{\untertitel}
\author{\autor}
\date{\datum}
% Literaturverweise (sowohl deutsch als auch englisch)
% \usepackage[
% %backend=biber, % empfohlen. Falls biber Probleme macht: bibtex
% %backend=bibtex, % empfohlen. Falls biber Probleme macht: bibtex
% bibwarn=true,
% bibencoding=utf8, % wenn .bib in utf8, sonst ascii
% sortlocale=de_DE, % oder en_US
% style=alphabetic %Zitierstil. Siehe http://ctan.mirrorcatalogs.com/macros/latex/contrib/biblatex/doc/biblatex.pdf
% ]{biblatex}
%%%%%% Additional settings %%%%%%
% Hurenkinder und Schusterjungen verhindern
% http://projekte.dante.de/DanteFAQ/Silbentrennung
\clubpenalty=10000
\widowpenalty=10000
\displaywidowpenalty=10000
% Bildpfad
\graphicspath{{images/}}
% Einige häufig verwendete Sprachen
\lstloadlanguages{PHP,Python,Java,C,C++,bash}
\listingsettings{}
%\includeonly{content/01kapitel}
%\includeonly{content/01kapitel,content/02kapitel}
%\includeonly{content/02kapitel}
%\includeonly{content/03kapitel}
%\includeonly{content/04kapitel}
%\includeonly{content/02kapitel,content/03kapitel}
%\includeonly{content/04kapitel,content/05kapitel}
%\includeonly{content/05kapitel}
%\includeonly{content/04kapitel,content/05kapitel,content/06kapitel}
%\includeonly{content/06kapitel}
%\includeonly{content/07kapitel}
%\includeonly{content/08kapitel}
%\includeonly{content/07kapitel, content/08kapitel}
\usepackage{amsmath}
\usepackage{amssymb}
\newcommand\ddfrac[2]{\frac{\displaystyle #1}{\displaystyle #2}}
\newcommand{\tv}[1]{\mathit{ #1 }}
\newcommand{\tto}{\texttt{ -> }}
\newcommand{\funcType}{\ensuremath{\exptype{Function}{\type{T}, \type{R}}}}
%\newcommand{\fjtypeInsert}{\textbf{FJTypeInsert}}
\newcommand{\unifyGenerics}{\ensuremath{\gamma}}% {\ensuremath{\overline{\type{G}\triangleleft \type{H}}}}
\newcommand{\fjtype}{\textbf{FJType}}
\newcommand{\unify}{\textbf{Unify}}
\newcommand{\typeMethod}{\textbf{TYPEMethod}}
\newcommand{\typeExpr}{\textbf{TYPEExpr}}
\newcommand{\constraint}{\ensuremath{\mathit{c}}}%{\ensuremath{\mathtt{C}}}
\newcommand{\consSet}{C}%{\ensuremath{\overline{\mathtt{C}}}}
\newcommand{\orCons}{\textit{oc}}%{\ensuremath{\textbf{C}_{||}}}
\newcommand{\simpleCons}{\textit{sc}}
\newcommand{\overridesFunc}{\textit{overrides}}
\newcommand{\typeAssumptionsSymbol}{\ensuremath{\Theta}}
\newcommand{\typeAssumptions}{\ensuremath{(\mv{\Pi} ; \overline{\localVarAssumption})}}%{\ensuremath{(\overline{\methodAssumption} ; \overline{\fieldAssumption}; \overline{\localVarAssumption})}}
\newcommand{\constraints}{\ensuremath{\mathit{\overline{c}}}}
\newcommand{\itype}[1]{\ensuremath{\mathit{#1}}}
\newcommand{\il}[1]{\ensuremath{\overline{\itype{#1}}}}
\newcommand{\gType}[1]{\texttt{#1}}
\newcommand{\mtypeEnvironment}{\ensuremath{\Pi}}
\newcommand{\methodAssumption}{\ensuremath{\mathtt{\lambda}}}
\newcommand{\localVarAssumption}{\ensuremath{\mathtt{\eta}}}
\newcommand{\expandLB}{\textit{expandLB}}
\newcommand{\type}[1]{\texttt{#1}}
\newcommand{\environmentvdash}{\Pi;\Delta;\Gamma \vdash}
\newcommand\subeq{\mathbin{\texttt{<:}}}
\newcommand\mv[1]{{\tt #1}}
\def\exptypett#1#2{\texttt{#1}\textrm{{\tt <#2}}\textrm{{\tt >}}\xspace}
\def\exp#1#2{#1(\,#2\,)\xspace}
\begin{document}
\bibliographystyle{unsrt}
% Titelfolie
\IfFileExists{content/00titelfolie}{%
\input{content/00titelfolie}
}
{%
%file does not exist
}
\frame{\titlepage}
% Inhalt
\IfFileExists{content/01inhalt}{%
\input{content/01inhalt}
}
{%
%file does not exist
}
% Kapitel
\foreach \i in {01,02,03,04,05,06,07,08,09,10,...,99} {%
\edef\FileName{content/\i kapitel}%
\IfFileExists{\FileName}{%
\include{\FileName}
}
{%
%file does not exist
}
}
%\small
%\renewcommand{\pause}{}
\bibliographystyle{alpha}
%\centerslidesfalse
\begin{frame}
\maketitle
\end{frame}
\newcommand{\rulenameAfter}[1]{\begin{array}[b]{l}\rulename{#1}\\[-0.5em] \ \end{array}}
@ -382,12 +583,89 @@ shuffle2D(l); // Fehler!
%TODO Unify erklären
% - es gibt die Capture Regel, welche Capture Conversion durchführt
% - die subst-Regel, welche keine Typen mit freien Variablen in normale Typvariablen einsetzt
\begin{frame}[fragile]{Unify}
$\begin{array}{c}
\tv{a} \lessdot \tv{b},
\tv{c} \lessdot \exptype{List}{\type{X}},
\begin{frame}[fragile]{Reduce}
\rulename{Reduce} $
\begin{array}[c]{@{}ll}
\begin{array}[c]{l}
\wildcardEnv \vdash
C \cup \, \set{ \exptype{C}{\ol{S}} \lessdot
\wctype{\overline{\rwildcard{A}}}{C}{\ol{T}} } \\
\hline
\vspace*{-0.4cm}\\
\wildcardEnv
\vdash C \cup \, \set{
\ol{\type{S}} \doteq [\ol{\wtv{a}}/\overline{\rwildcard{A}}]\ol{\type{T}} }
\end{array}
%\quad \ol{Y} = \textit{fresh}(\ol{X})
\quad \begin{array}[c]{l}
\ol{\wtv{a}} \ \text{fresh}\\
%\text{fv}(\exptype{C}{\ol{S}}) \subseteq \text{dom}(\overline{\wildcard{B}{\type{U'}}{\type{L'}}})
%\text{dom}(\overline{\wildcard{A}{\type{U}}{\type{L}}}) \subseteq \text{fv}(\exptype{C}{\ol{T}}) \\
%\text{fv}(\wctype{\overline{\wildcard{A}{\type{U}}{\type{L}}}}{C}{\ol{T}}) = \emptyset
\end{array}
\end{array}
$
\begin{itemize}
\item \textbf{Example:}
$\begin{array}[t]{c}
\exptype{List}{\type{String}} \lessdot \wctype{\rwildcard{A}}{List}{\type{A}}\\
\hline
\type{String} \doteq \wtv{a}
\end{array}$
\item \textbf{Example:}
$\begin{array}[t]{c}
\wctype{\rwildcard{A}}{List}{\type{A}} \lessdot \exptype{List}{\type{String}}\\
\hline
\type{A} \doteq \type{String}
\end{array}$
\end{itemize}
\end{frame}
\end{array}$
\begin{frame}[fragile]{Wildcard Creation}
\begin{lstlisting}
(*@\only<2>{$\color{red}\tv{r}$ }@*)someList(){
if(Math.random > 0.5){
return new List<String>();
} else {
return new List<Integer>();
}
}
\end{lstlisting}
\pause
$
\exptype{List}{String} \lessdot {\only<2>{\color{red}}\tv{r}},
\exptype{List}{Integer} \lessdot {\only<2>{\color{red}}\tv{r}}
$\\[1em]
\pause
\rulename{General} $
\begin{array}[c]{l}
\wildcardEnv \vdash C \cup \wctype{\Delta}{C}{\ol{T}} \lessdot \ntv{a}\\
\hline
\wildcardEnv \vdash C \cup \set{\wctype{\Delta}{C}{\ol{T}} \lessdot \ntv{a},
\ntv{a} \doteq \wctype{\overline{\rwildcard{X}}}{C}{\overline{\rwildcard{X}}}
}
\end{array} \quad \begin{array}[c]{l}
\texttt{class} \ \exptype{C}{\ol{X \triangleleft \type{S}}} \triangleleft \exptype{D}{\ol{N}} \\
\end{array}
$
\\[1em]
\pause
$
\exptype{List}{String} \lessdot {\tv{r}},
\exptype{List}{Integer} \lessdot {\tv{r}},
\highlight{\tv{r} \doteq \wctype{\rwildcard{X}}{List}{\rwildcard{X}}}
$
\pause
\\[0.5em]
\textbf{Substitution:}
$
\exptype{List}{String} \lessdot \highlight{\wctype{\rwildcard{X}}{List}{\rwildcard{X}}},
\exptype{List}{Integer} \lessdot \highlight{\wctype{\rwildcard{X}}{List}{\rwildcard{X}}},
$
\end{frame}
\begin{frame}[fragile]{Wildcard Elminiation}
\end{frame}
% wieso dürfen normale Typvariablen keine freien Variablen enthalten?
@ -404,6 +682,55 @@ $
\exptype{List}{\tv{x}} \lessdot \tv{r}
$
\end{frame}
\begin{frame}[fragile]
\begin{verbatim}
List<List<?>> l;
l2 = l.map(x -> shuffle(x));
shuffle2D(l2);
\end{verbatim}
$
\begin{array}{l}
\wctype{\rwildcard{A}}{List}{\rwildcard{A}} \lessdotCC \exptype{List}{\tv{x}}, \\
\exptype{List}{\exptype{List}{\tv{x}}} \lessdot \tv{l2}, \\
\tv{l2} \lessdotCC \exptype{List}{\exptype{List}{\tv{y}}}
\end{array}
$
\begin{itemize}
\item Falsche Lösung:
$
\begin{array}{l}
\wctype{\rwildcard{A}}{List}{\rwildcard{A}} \lessdotCC \exptype{List}{\highlight{\rwildcard{A}}}, \\
\exptype{List}{\exptype{List}{\tv{x}}} \lessdot \exptype{List}{\exptype{List}{\tv{x}}},
\tv{r} \lessdot \tv{l2},
\tv{l2} \lessdotCC \exptype{List}{\exptype{List}{\tv{y}}}
\end{array}
$
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Lösung durch Unify}
$
\begin{array}{l}
\wctype{\rwildcard{A}}{List}{\rwildcard{A}} \lessdotCC \exptype{List}{\tv{x}}, \\
\exptype{List}{\exptype{List}{\tv{x}}} \lessdot \tv{l2}, \\
\tv{l2} \lessdotCC \exptype{List}{\exptype{List}{\tv{y}}}
\end{array}
$
\begin{itemize}
\item Falsche Lösung:
$
\begin{array}{l}
\wctype{\rwildcard{A}}{List}{\rwildcard{A}} \lessdotCC \exptype{List}{\highlight{\rwildcard{A}}}, \\
\exptype{List}{\exptype{List}{\tv{x}}} \lessdot \exptype{List}{\exptype{List}{\tv{x}}},
\tv{r} \lessdot \tv{l2},
\tv{l2} \lessdotCC \exptype{List}{\exptype{List}{\tv{y}}}
\end{array}
$
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\begin{verbatim}
@ -413,10 +740,12 @@ $
\end{verbatim}
$
\wctype{\rwildcard{A}}{List}{\rwildcard{A}} \lessdotCC \exptype{List}{\tv{x}},
\begin{array}{l}
\wctype{\rwildcard{A}}{List}{\rwildcard{A}} \lessdotCC \exptype{List}{\tv{x}}, \\
\exptype{List}{\exptype{List}{\tv{x}}} \lessdot \tv{r},
\tv{r} \lessdot \tv{l2},
\tv{l2} \lessdotCC \exptype{List}{\exptype{List}{\tv{y}}}
\end{array}
$
\end{frame}

53
xspace_spezial.sty Executable file
View File

@ -0,0 +1,53 @@
%%
%% This is file `xspace.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% xspace.dtx (with options: `package')
%%
%% This is a generated file.
%%
%% Copyright 1993 1994 1995 1996 1997 1998 1999
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
%% This file is part of the Standard LaTeX `Tools Bundle'.
%% -------------------------------------------------------
%%
%% This file, and all the other files in this bundle as listed below,
%% may be distributed under the terms of the LaTeX Project Public
%% License, as described in lppl.txt in the base LaTeX distribution.
%% Either version 1.0 or, at your option, any later version.
%%
%% File: xspace.dtx Copyright (C) 1991-1996 David Carlisle
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{xspace_spezial}
[1997/10/13 v1.06 Space after command names (DPC)]
\DeclareRobustCommand\xspace{\futurelet\@let@token\@xspace}
\def\@xspace{%
\ifx\@let@token\bgroup\else
\ifx\@let@token\egroup\else
\ifx\@let@token\/\else
\ifx\@let@token\ \else
\ifx\@let@token~\else
\ifx\@let@token.\else
\ifx\@let@token!\else
\ifx\@let@token,\else
\ifx\@let@token:\else
\ifx\@let@token;\else
\ifx\@let@token?\else
\ifx\@let@token/\else
\ifx\@let@token'\else
\ifx\@let@token)\else
\ifx\@let@token>\else
\ifx\@let@token-\else
\ifx\@let@token\@xobeysp\else
\ifx\@let@token\space\else
\ifx\@let@token\@sptoken\else
\space
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
\endinput
%%
%% End of file `xspace.sty'.