[ocl] Camera ready Visualization / Map Type slides
diff --git a/ocl/docs/publications/OCL2019Keynote/OCL2019Keynote.pdf b/ocl/docs/publications/OCL2019Keynote/OCL2019Keynote.pdf
new file mode 100644
index 0000000..3e4a382
--- /dev/null
+++ b/ocl/docs/publications/OCL2019Keynote/OCL2019Keynote.pdf
Binary files differ
diff --git a/ocl/docs/publications/OCL2019MapType/.gitignore b/ocl/docs/publications/OCL2019MapType/.gitignore
new file mode 100644
index 0000000..f56207e
--- /dev/null
+++ b/ocl/docs/publications/OCL2019MapType/.gitignore
@@ -0,0 +1,3 @@
+/OCLMapType.aux
+/OCLMapType.log
+/OCLMapType.synctex.gz
diff --git a/ocl/docs/publications/OCL2019MapType/OCLMapType.pdf b/ocl/docs/publications/OCL2019MapType/OCLMapType.pdf
new file mode 100644
index 0000000..591b8de
--- /dev/null
+++ b/ocl/docs/publications/OCL2019MapType/OCLMapType.pdf
Binary files differ
diff --git a/ocl/docs/publications/OCL2019MapType/OCLMapType.tex b/ocl/docs/publications/OCL2019MapType/OCLMapType.tex
new file mode 100644
index 0000000..53c1225
--- /dev/null
+++ b/ocl/docs/publications/OCL2019MapType/OCLMapType.tex
@@ -0,0 +1,82 @@
+% This is LLNCS.DEM the demonstration file of
+% the LaTeX macro package from Springer-Verlag
+% for Lecture Notes in Computer Science,
+% version 2.4 for LaTeX2e as of 16. April 2010
+%
+\documentclass{llncs}
+%
+\usepackage{makeidx}  % allows for indexgeneration
+\usepackage[pdftex]{graphicx}
+%
+\begin{document}
+%
+\mainmatter              % start of the contributions
+%
+\title{An OCL Map Type}
+%
+\titlerunning{An OCL Map Type}  % abbreviated title (for running head)
+%                                     also used for the TOC unless
+%                                     \toctitle is used
+%
+\author{Edward D. Willink}
+%
+\authorrunning{Edward Willink} % abbreviated author list (for running head)
+%
+%%%% list of authors for the TOC (use if author list has to be modified)
+\tocauthor{Edward Willink}
+%
+\institute{Willink Transformations Ltd, Reading, England,\\
+\email{ed\_at\_willink.me.uk}}
+
+
+\maketitle              % typeset the title of the contribution
+Lightning presentation at the 19th International Workshop in OCL and Textual Modeling, September 16, 2019, Munich, Germany.
+%
+\pagebreak
+%
+\section{An OCL Map Type - E.D.Willink}
+OCL's family of \verb$Collection$ types is well known, but a \verb$Map(K,V)$ type is missing. Some distinguished authors have suggested that the deficiency can be remedied by a \verb$Set(Tuple(K, V))$, but this is clearly misguided since a \verb$Set(Tuple)$ can have many different-valued entries for the same key, whereas a map can only have one value per key.
+
+The Java Map type is very familiar and might perhaps inspire an equally familiar library type for OCL, but this too is misguided since a Java Map is mutable while an OCL \verb$Map$ should be immutable.
+
+The ordered \verb$Collection$s are therefore a better source of inspiration. The following have obvious functionality:
+
+\verb$=$, \verb$<>$, \verb$isEmpty()$, \verb$notEmpty()$, \verb$size()$.
+
+New \verb$keys()$ and \verb$values()$ operations can access the two halves of the map. 
+
+Similarly obvious functionality with respect to the keys can be provided  by:
+
+\verb$excludes(k)$, \verb$excludesAll(c)$, \verb$excluding(k)$,
+
+\verb$excludingAll(c)$, \verb$includes(k)$, \verb$includesAll(c)$
+
+Further emulation of ordered Collections suggests that \verb$at(k)$ accesses the map at index \verb$k$. \verb$including(k,v)$ creates a new map with an additional or replacement \verb$k<-v$ binding. It returns \verb$null$ for a null value and \verb$invalid$ for a missing value.
+
+Richer support can be provided by:
+
+\verb$excludesMap(m)$, \verb$excludesValue(v$), \verb$excludingMap(m)$,
+
+\verb$includesMap(m)$, \verb$includesValue(v$), \verb$includingMap(m)$
+
+Construction of a \verb$Map$ literal can re-use the \verb$Tuple$ literal syntax in conjunction with a new binding operator \verb$<-$. Thus a map literal with two entries for two value to key bindings my be created by:
+
+\verb$Map{k1<-v1, k2<-v2}$
+
+The above facilities were prototyped in Eclipse OCL 2015-06. They provide an adequate ability to use a \verb$Map$ but prove very inefficient for Map construction since creating a Map with \verb$N$ entries requires progressive construction of \verb$N-1$ intermediate maps; the execution performance is therefore at best quadratic. The Eclipse OCL 2019-03 release therefore extends the create/operation \verb$Map$ functionality with iteration support.
+
+A \verb$Map$ is treated as a set of keys each with a bound co-value. All the standard \verb$Collection$ iterations apply to \verb$Map$s using the set of keys as the iteration domain. Additionally a co-iterator may be bound to the iterator to avoid the need to invoke \verb$at(k)$ to obtain the value of each key. Thus a map can be checked to ensure that each \verb$v$ bound to its \verb$k$ iterator is equal to the squared value of the iterator.
+
+\verb$let c : Map(Integer, Real)$ \verb$= ...$ \verb$in c->forAll(k<-v | v = k*k)$
+
+A new \verb$collectBy$ iterator, that may be used on \verb$Collection$s or \verb$Map$s, supports creation of a \verb$Map$ by collecting an expression value for each iterator key. A map from ten integer values to their squares may be built by:
+
+\verb$Sequence{1..10}->collectBy(k | k*k)$
+
+Future work might generalize \verb$k<-v$ from special purpose punctuation to an expression operator. The downside of this generalization is the cost/complexity of a new \verb$Entry(K,V)$ type for the new expression result and of course many new operations to allow an \verb$Entry$ type to be used sensibly. The upside is that the \verb$collectBy$ body may use let variables and may compute both key and value. A map that binds an integer value  to its string value could be built by: 
+
+\verb$Sequence{1..10}->collectBy(k | k.toString()<-k)$ 
+
+A consequence of permitting both key and value to be computed, is that, in general, uniqueness of the key values cannot be guaranteed. To avoid non-deterministic loss of colliding values, the \verb$Map$ parameterization would need to be a multimap: \verb$Map(K,Bag(V))$. 
+
+\end{document}
diff --git a/ocl/docs/publications/OCL2019MapType/llncs.cls b/ocl/docs/publications/OCL2019MapType/llncs.cls
new file mode 100644
index 0000000..40eae17
--- /dev/null
+++ b/ocl/docs/publications/OCL2019MapType/llncs.cls
@@ -0,0 +1,1208 @@
+% LLNCS DOCUMENT CLASS -- version 2.19 (31-Mar-2014)

+% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science

+%

+%%

+%% \CharacterTable

+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z

+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z

+%%   Digits        \0\1\2\3\4\5\6\7\8\9

+%%   Exclamation   \!     Double quote  \"     Hash (number) \#

+%%   Dollar        \$     Percent       \%     Ampersand     \&

+%%   Acute accent  \'     Left paren    \(     Right paren   \)

+%%   Asterisk      \*     Plus          \+     Comma         \,

+%%   Minus         \-     Point         \.     Solidus       \/

+%%   Colon         \:     Semicolon     \;     Less than     \<

+%%   Equals        \=     Greater than  \>     Question mark \?

+%%   Commercial at \@     Left bracket  \[     Backslash     \\

+%%   Right bracket \]     Circumflex    \^     Underscore    \_

+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|

+%%   Right brace   \}     Tilde         \~}

+%%

+\NeedsTeXFormat{LaTeX2e}[1995/12/01]

+\ProvidesClass{llncs}[2014/03/31 v2.19

+^^J LaTeX document class for Lecture Notes in Computer Science]

+% Options

+\let\if@envcntreset\iffalse

+\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue}

+\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y}

+\DeclareOption{oribibl}{\let\oribibl=Y}

+\let\if@custvec\iftrue

+\DeclareOption{orivec}{\let\if@custvec\iffalse}

+\let\if@envcntsame\iffalse

+\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue}

+\let\if@envcntsect\iffalse

+\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue}

+\let\if@runhead\iffalse

+\DeclareOption{runningheads}{\let\if@runhead\iftrue}

+

+\let\if@openright\iftrue

+\let\if@openbib\iffalse

+\DeclareOption{openbib}{\let\if@openbib\iftrue}

+

+% languages

+\let\switcht@@therlang\relax

+\def\ds@deutsch{\def\switcht@@therlang{\switcht@deutsch}}

+\def\ds@francais{\def\switcht@@therlang{\switcht@francais}}

+

+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}

+

+\ProcessOptions

+

+\LoadClass[twoside]{article}

+\RequirePackage{multicol} % needed for the list of participants, index

+\RequirePackage{aliascnt}

+

+\setlength{\textwidth}{12.2cm}

+\setlength{\textheight}{19.3cm}

+\renewcommand\@pnumwidth{2em}

+\renewcommand\@tocrmarg{3.5em}

+%

+\def\@dottedtocline#1#2#3#4#5{%

+  \ifnum #1>\c@tocdepth \else

+    \vskip \z@ \@plus.2\p@

+    {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm

+               \parfillskip -\rightskip \pretolerance=10000

+     \parindent #2\relax\@afterindenttrue

+     \interlinepenalty\@M

+     \leavevmode

+     \@tempdima #3\relax

+     \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip

+     {#4}\nobreak

+     \leaders\hbox{$\m@th

+        \mkern \@dotsep mu\hbox{.}\mkern \@dotsep

+        mu$}\hfill

+     \nobreak

+     \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%

+     \par}%

+  \fi}

+%

+\def\switcht@albion{%

+\def\abstractname{Abstract.}%

+\def\ackname{Acknowledgement.}%

+\def\andname{and}%

+\def\lastandname{\unskip, and}%

+\def\appendixname{Appendix}%

+\def\chaptername{Chapter}%

+\def\claimname{Claim}%

+\def\conjecturename{Conjecture}%

+\def\contentsname{Table of Contents}%

+\def\corollaryname{Corollary}%

+\def\definitionname{Definition}%

+\def\examplename{Example}%

+\def\exercisename{Exercise}%

+\def\figurename{Fig.}%

+\def\keywordname{{\bf Keywords:}}%

+\def\indexname{Index}%

+\def\lemmaname{Lemma}%

+\def\contriblistname{List of Contributors}%

+\def\listfigurename{List of Figures}%

+\def\listtablename{List of Tables}%

+\def\mailname{{\it Correspondence to\/}:}%

+\def\noteaddname{Note added in proof}%

+\def\notename{Note}%

+\def\partname{Part}%

+\def\problemname{Problem}%

+\def\proofname{Proof}%

+\def\propertyname{Property}%

+\def\propositionname{Proposition}%

+\def\questionname{Question}%

+\def\remarkname{Remark}%

+\def\seename{see}%

+\def\solutionname{Solution}%

+\def\subclassname{{\it Subject Classifications\/}:}%

+\def\tablename{Table}%

+\def\theoremname{Theorem}}

+\switcht@albion

+% Names of theorem like environments are already defined

+% but must be translated if another language is chosen

+%

+% French section

+\def\switcht@francais{%\typeout{On parle francais.}%

+ \def\abstractname{R\'esum\'e.}%

+ \def\ackname{Remerciements.}%

+ \def\andname{et}%

+ \def\lastandname{ et}%

+ \def\appendixname{Appendice}%

+ \def\chaptername{Chapitre}%

+ \def\claimname{Pr\'etention}%

+ \def\conjecturename{Hypoth\`ese}%

+ \def\contentsname{Table des mati\`eres}%

+ \def\corollaryname{Corollaire}%

+ \def\definitionname{D\'efinition}%

+ \def\examplename{Exemple}%

+ \def\exercisename{Exercice}%

+ \def\figurename{Fig.}%

+ \def\keywordname{{\bf Mots-cl\'e:}}%

+ \def\indexname{Index}%

+ \def\lemmaname{Lemme}%

+ \def\contriblistname{Liste des contributeurs}%

+ \def\listfigurename{Liste des figures}%

+ \def\listtablename{Liste des tables}%

+ \def\mailname{{\it Correspondence to\/}:}%

+ \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}%

+ \def\notename{Remarque}%

+ \def\partname{Partie}%

+ \def\problemname{Probl\`eme}%

+ \def\proofname{Preuve}%

+ \def\propertyname{Caract\'eristique}%

+%\def\propositionname{Proposition}%

+ \def\questionname{Question}%

+ \def\remarkname{Remarque}%

+ \def\seename{voir}%

+ \def\solutionname{Solution}%

+ \def\subclassname{{\it Subject Classifications\/}:}%

+ \def\tablename{Tableau}%

+ \def\theoremname{Th\'eor\`eme}%

+}

+%

+% German section

+\def\switcht@deutsch{%\typeout{Man spricht deutsch.}%

+ \def\abstractname{Zusammenfassung.}%

+ \def\ackname{Danksagung.}%

+ \def\andname{und}%

+ \def\lastandname{ und}%

+ \def\appendixname{Anhang}%

+ \def\chaptername{Kapitel}%

+ \def\claimname{Behauptung}%

+ \def\conjecturename{Hypothese}%

+ \def\contentsname{Inhaltsverzeichnis}%

+ \def\corollaryname{Korollar}%

+%\def\definitionname{Definition}%

+ \def\examplename{Beispiel}%

+ \def\exercisename{\"Ubung}%

+ \def\figurename{Abb.}%

+ \def\keywordname{{\bf Schl\"usselw\"orter:}}%

+ \def\indexname{Index}%

+%\def\lemmaname{Lemma}%

+ \def\contriblistname{Mitarbeiter}%

+ \def\listfigurename{Abbildungsverzeichnis}%

+ \def\listtablename{Tabellenverzeichnis}%

+ \def\mailname{{\it Correspondence to\/}:}%

+ \def\noteaddname{Nachtrag}%

+ \def\notename{Anmerkung}%

+ \def\partname{Teil}%

+%\def\problemname{Problem}%

+ \def\proofname{Beweis}%

+ \def\propertyname{Eigenschaft}%

+%\def\propositionname{Proposition}%

+ \def\questionname{Frage}%

+ \def\remarkname{Anmerkung}%

+ \def\seename{siehe}%

+ \def\solutionname{L\"osung}%

+ \def\subclassname{{\it Subject Classifications\/}:}%

+ \def\tablename{Tabelle}%

+%\def\theoremname{Theorem}%

+}

+

+% Ragged bottom for the actual page

+\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil

+\global\let\@textbottom\relax}}

+

+\renewcommand\small{%

+   \@setfontsize\small\@ixpt{11}%

+   \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@

+   \abovedisplayshortskip \z@ \@plus2\p@

+   \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@

+   \def\@listi{\leftmargin\leftmargini

+               \parsep 0\p@ \@plus1\p@ \@minus\p@

+               \topsep 8\p@ \@plus2\p@ \@minus4\p@

+               \itemsep0\p@}%

+   \belowdisplayskip \abovedisplayskip

+}

+

+\frenchspacing

+\widowpenalty=10000

+\clubpenalty=10000

+

+\setlength\oddsidemargin   {63\p@}

+\setlength\evensidemargin  {63\p@}

+\setlength\marginparwidth  {90\p@}

+

+\setlength\headsep   {16\p@}

+

+\setlength\footnotesep{7.7\p@}

+\setlength\textfloatsep{8mm\@plus 2\p@ \@minus 4\p@}

+\setlength\intextsep   {8mm\@plus 2\p@ \@minus 2\p@}

+

+\setcounter{secnumdepth}{2}

+

+\newcounter {chapter}

+\renewcommand\thechapter      {\@arabic\c@chapter}

+

+\newif\if@mainmatter \@mainmattertrue

+\newcommand\frontmatter{\cleardoublepage

+            \@mainmatterfalse\pagenumbering{Roman}}

+\newcommand\mainmatter{\cleardoublepage

+       \@mainmattertrue\pagenumbering{arabic}}

+\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi

+      \@mainmatterfalse}

+

+\renewcommand\part{\cleardoublepage

+                 \thispagestyle{empty}%

+                 \if@twocolumn

+                     \onecolumn

+                     \@tempswatrue

+                   \else

+                     \@tempswafalse

+                 \fi

+                 \null\vfil

+                 \secdef\@part\@spart}

+

+\def\@part[#1]#2{%

+    \ifnum \c@secnumdepth >-2\relax

+      \refstepcounter{part}%

+      \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%

+    \else

+      \addcontentsline{toc}{part}{#1}%

+    \fi

+    \markboth{}{}%

+    {\centering

+     \interlinepenalty \@M

+     \normalfont

+     \ifnum \c@secnumdepth >-2\relax

+       \huge\bfseries \partname~\thepart

+       \par

+       \vskip 20\p@

+     \fi

+     \Huge \bfseries #2\par}%

+    \@endpart}

+\def\@spart#1{%

+    {\centering

+     \interlinepenalty \@M

+     \normalfont

+     \Huge \bfseries #1\par}%

+    \@endpart}

+\def\@endpart{\vfil\newpage

+              \if@twoside

+                \null

+                \thispagestyle{empty}%

+                \newpage

+              \fi

+              \if@tempswa

+                \twocolumn

+              \fi}

+

+\newcommand\chapter{\clearpage

+                    \thispagestyle{empty}%

+                    \global\@topnum\z@

+                    \@afterindentfalse

+                    \secdef\@chapter\@schapter}

+\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne

+                       \if@mainmatter

+                         \refstepcounter{chapter}%

+                         \typeout{\@chapapp\space\thechapter.}%

+                         \addcontentsline{toc}{chapter}%

+                                  {\protect\numberline{\thechapter}#1}%

+                       \else

+                         \addcontentsline{toc}{chapter}{#1}%

+                       \fi

+                    \else

+                      \addcontentsline{toc}{chapter}{#1}%

+                    \fi

+                    \chaptermark{#1}%

+                    \addtocontents{lof}{\protect\addvspace{10\p@}}%

+                    \addtocontents{lot}{\protect\addvspace{10\p@}}%

+                    \if@twocolumn

+                      \@topnewpage[\@makechapterhead{#2}]%

+                    \else

+                      \@makechapterhead{#2}%

+                      \@afterheading

+                    \fi}

+\def\@makechapterhead#1{%

+% \vspace*{50\p@}%

+  {\centering

+    \ifnum \c@secnumdepth >\m@ne

+      \if@mainmatter

+        \large\bfseries \@chapapp{} \thechapter

+        \par\nobreak

+        \vskip 20\p@

+      \fi

+    \fi

+    \interlinepenalty\@M

+    \Large \bfseries #1\par\nobreak

+    \vskip 40\p@

+  }}

+\def\@schapter#1{\if@twocolumn

+                   \@topnewpage[\@makeschapterhead{#1}]%

+                 \else

+                   \@makeschapterhead{#1}%

+                   \@afterheading

+                 \fi}

+\def\@makeschapterhead#1{%

+% \vspace*{50\p@}%

+  {\centering

+    \normalfont

+    \interlinepenalty\@M

+    \Large \bfseries  #1\par\nobreak

+    \vskip 40\p@

+  }}

+

+\renewcommand\section{\@startsection{section}{1}{\z@}%

+                       {-18\p@ \@plus -4\p@ \@minus -4\p@}%

+                       {12\p@ \@plus 4\p@ \@minus 4\p@}%

+                       {\normalfont\large\bfseries\boldmath

+                        \rightskip=\z@ \@plus 8em\pretolerance=10000 }}

+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%

+                       {-18\p@ \@plus -4\p@ \@minus -4\p@}%

+                       {8\p@ \@plus 4\p@ \@minus 4\p@}%

+                       {\normalfont\normalsize\bfseries\boldmath

+                        \rightskip=\z@ \@plus 8em\pretolerance=10000 }}

+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%

+                       {-18\p@ \@plus -4\p@ \@minus -4\p@}%

+                       {-0.5em \@plus -0.22em \@minus -0.1em}%

+                       {\normalfont\normalsize\bfseries\boldmath}}

+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%

+                       {-12\p@ \@plus -4\p@ \@minus -4\p@}%

+                       {-0.5em \@plus -0.22em \@minus -0.1em}%

+                       {\normalfont\normalsize\itshape}}

+\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use

+                  \string\subparagraph\space with this class}\vskip0.5cm

+You should not use \verb|\subparagraph| with this class.\vskip0.5cm}

+

+\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00}

+\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01}

+\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02}

+\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03}

+\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04}

+\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05}

+\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06}

+\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07}

+\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08}

+\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09}

+\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A}

+

+\let\footnotesize\small

+

+\if@custvec

+\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}}

+{\mbox{\boldmath$\textstyle#1$}}

+{\mbox{\boldmath$\scriptstyle#1$}}

+{\mbox{\boldmath$\scriptscriptstyle#1$}}}

+\fi

+

+\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}}

+\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil

+\penalty50\hskip1em\null\nobreak\hfil\squareforqed

+\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi}

+

+\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip

+\halign{\hfil

+$\displaystyle##$\hfil\cr\gets\cr\to\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets

+\cr\to\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets

+\cr\to\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr

+\gets\cr\to\cr}}}}}

+\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil

+$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr

+\noalign{\vskip1.2pt}=\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr

+\noalign{\vskip1pt}=\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr

+<\cr

+\noalign{\vskip0.9pt}=\cr}}}}}

+\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil

+$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr

+\noalign{\vskip1.2pt}=\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr

+\noalign{\vskip1pt}=\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr

+>\cr

+\noalign{\vskip0.9pt}=\cr}}}}}

+\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip

+\halign{\hfil

+$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr

+>\cr\noalign{\vskip-1pt}<\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr

+>\cr\noalign{\vskip-0.8pt}<\cr}}}

+{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr

+>\cr\noalign{\vskip-0.3pt}<\cr}}}}}

+\def\bbbr{{\rm I\!R}} %reelle Zahlen

+\def\bbbm{{\rm I\!M}}

+\def\bbbn{{\rm I\!N}} %natuerliche Zahlen

+\def\bbbf{{\rm I\!F}}

+\def\bbbh{{\rm I\!H}}

+\def\bbbk{{\rm I\!K}}

+\def\bbbp{{\rm I\!P}}

+\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l}

+{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}}

+\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox

+to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}

+{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox

+to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}

+{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox

+to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}

+{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox

+to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}}

+\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm

+Q$}\hbox{\raise

+0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}

+{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise

+0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}}

+{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise

+0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}

+{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise

+0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}}

+\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm

+T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}

+{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox

+to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}

+{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox

+to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}

+{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox

+to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}}

+\def\bbbs{{\mathchoice

+{\setbox0=\hbox{$\displaystyle     \rm S$}\hbox{\raise0.5\ht0\hbox

+to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox

+to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}

+{\setbox0=\hbox{$\textstyle        \rm S$}\hbox{\raise0.5\ht0\hbox

+to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox

+to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}}

+{\setbox0=\hbox{$\scriptstyle      \rm S$}\hbox{\raise0.5\ht0\hbox

+to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox

+to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}}

+{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox

+to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox

+to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}}

+\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}}

+{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}}

+{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}}

+{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}}

+

+\let\ts\,

+

+\setlength\leftmargini  {17\p@}

+\setlength\leftmargin    {\leftmargini}

+\setlength\leftmarginii  {\leftmargini}

+\setlength\leftmarginiii {\leftmargini}

+\setlength\leftmarginiv  {\leftmargini}

+\setlength  \labelsep  {.5em}

+\setlength  \labelwidth{\leftmargini}

+\addtolength\labelwidth{-\labelsep}

+

+\def\@listI{\leftmargin\leftmargini

+            \parsep 0\p@ \@plus1\p@ \@minus\p@

+            \topsep 8\p@ \@plus2\p@ \@minus4\p@

+            \itemsep0\p@}

+\let\@listi\@listI

+\@listi

+\def\@listii {\leftmargin\leftmarginii

+              \labelwidth\leftmarginii

+              \advance\labelwidth-\labelsep

+              \topsep    0\p@ \@plus2\p@ \@minus\p@}

+\def\@listiii{\leftmargin\leftmarginiii

+              \labelwidth\leftmarginiii

+              \advance\labelwidth-\labelsep

+              \topsep    0\p@ \@plus\p@\@minus\p@

+              \parsep    \z@

+              \partopsep \p@ \@plus\z@ \@minus\p@}

+

+\renewcommand\labelitemi{\normalfont\bfseries --}

+\renewcommand\labelitemii{$\m@th\bullet$}

+

+\setlength\arraycolsep{1.4\p@}

+\setlength\tabcolsep{1.4\p@}

+

+\def\tableofcontents{\chapter*{\contentsname\@mkboth{{\contentsname}}%

+                                                    {{\contentsname}}}

+ \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}}

+ \def\lastand{\ifnum\value{auco}=2\relax

+                 \unskip{} \andname\

+              \else

+                 \unskip \lastandname\

+              \fi}%

+ \def\and{\stepcounter{@auth}\relax

+          \ifnum\value{@auth}=\value{auco}%

+             \lastand

+          \else

+             \unskip,

+          \fi}%

+ \@starttoc{toc}\if@restonecol\twocolumn\fi}

+

+\def\l@part#1#2{\addpenalty{\@secpenalty}%

+   \addvspace{2em plus\p@}%  % space above part line

+   \begingroup

+     \parindent \z@

+     \rightskip \z@ plus 5em

+     \hrule\vskip5pt

+     \large               % same size as for a contribution heading

+     \bfseries\boldmath   % set line in boldface

+     \leavevmode          % TeX command to enter horizontal mode.

+     #1\par

+     \vskip5pt

+     \hrule

+     \vskip1pt

+     \nobreak             % Never break after part entry

+   \endgroup}

+

+\def\@dotsep{2}

+

+\let\phantomsection=\relax

+

+\def\hyperhrefextend{\ifx\hyper@anchor\@undefined\else

+{}\fi}

+

+\def\addnumcontentsmark#1#2#3{%

+\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline

+                     {\thechapter}#3}{\thepage}\hyperhrefextend}}%

+\def\addcontentsmark#1#2#3{%

+\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}}%

+\def\addcontentsmarkwop#1#2#3{%

+\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}}%

+

+\def\@adcmk[#1]{\ifcase #1 \or

+\def\@gtempa{\addnumcontentsmark}%

+  \or    \def\@gtempa{\addcontentsmark}%

+  \or    \def\@gtempa{\addcontentsmarkwop}%

+  \fi\@gtempa{toc}{chapter}%

+}

+\def\addtocmark{%

+\phantomsection

+\@ifnextchar[{\@adcmk}{\@adcmk[3]}%

+}

+

+\def\l@chapter#1#2{\addpenalty{-\@highpenalty}

+ \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup

+ \parindent \z@ \rightskip \@tocrmarg

+ \advance\rightskip by 0pt plus 2cm

+ \parfillskip -\rightskip \pretolerance=10000

+ \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip

+ {\large\bfseries\boldmath#1}\ifx0#2\hfil\null

+ \else

+      \nobreak

+      \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern

+      \@dotsep mu$}\hfill

+      \nobreak\hbox to\@pnumwidth{\hss #2}%

+ \fi\par

+ \penalty\@highpenalty \endgroup}

+

+\def\l@title#1#2{\addpenalty{-\@highpenalty}

+ \addvspace{8pt plus 1pt}

+ \@tempdima \z@

+ \begingroup

+ \parindent \z@ \rightskip \@tocrmarg

+ \advance\rightskip by 0pt plus 2cm

+ \parfillskip -\rightskip \pretolerance=10000

+ \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip

+ #1\nobreak

+ \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern

+ \@dotsep mu$}\hfill

+ \nobreak\hbox to\@pnumwidth{\hss #2}\par

+ \penalty\@highpenalty \endgroup}

+

+\def\l@author#1#2{\addpenalty{\@highpenalty}

+ \@tempdima=15\p@ %\z@

+ \begingroup

+ \parindent \z@ \rightskip \@tocrmarg

+ \advance\rightskip by 0pt plus 2cm

+ \pretolerance=10000

+ \leavevmode \advance\leftskip\@tempdima %\hskip -\leftskip

+ \textit{#1}\par

+ \penalty\@highpenalty \endgroup}

+

+\setcounter{tocdepth}{0}

+\newdimen\tocchpnum

+\newdimen\tocsecnum

+\newdimen\tocsectotal

+\newdimen\tocsubsecnum

+\newdimen\tocsubsectotal

+\newdimen\tocsubsubsecnum

+\newdimen\tocsubsubsectotal

+\newdimen\tocparanum

+\newdimen\tocparatotal

+\newdimen\tocsubparanum

+\tocchpnum=\z@            % no chapter numbers

+\tocsecnum=15\p@          % section 88. plus 2.222pt

+\tocsubsecnum=23\p@       % subsection 88.8 plus 2.222pt

+\tocsubsubsecnum=27\p@    % subsubsection 88.8.8 plus 1.444pt

+\tocparanum=35\p@         % paragraph 88.8.8.8 plus 1.666pt

+\tocsubparanum=43\p@      % subparagraph 88.8.8.8.8 plus 1.888pt

+\def\calctocindent{%

+\tocsectotal=\tocchpnum

+\advance\tocsectotal by\tocsecnum

+\tocsubsectotal=\tocsectotal

+\advance\tocsubsectotal by\tocsubsecnum

+\tocsubsubsectotal=\tocsubsectotal

+\advance\tocsubsubsectotal by\tocsubsubsecnum

+\tocparatotal=\tocsubsubsectotal

+\advance\tocparatotal by\tocparanum}

+\calctocindent

+

+\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}}

+\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}}

+\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}}

+\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}}

+\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}}

+

+\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn

+ \fi\section*{\listfigurename\@mkboth{{\listfigurename}}{{\listfigurename}}}

+ \@starttoc{lof}\if@restonecol\twocolumn\fi}

+\def\l@figure{\@dottedtocline{1}{0em}{1.5em}}

+

+\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn

+ \fi\section*{\listtablename\@mkboth{{\listtablename}}{{\listtablename}}}

+ \@starttoc{lot}\if@restonecol\twocolumn\fi}

+\let\l@table\l@figure

+

+\renewcommand\listoffigures{%

+    \section*{\listfigurename

+      \@mkboth{\listfigurename}{\listfigurename}}%

+    \@starttoc{lof}%

+    }

+

+\renewcommand\listoftables{%

+    \section*{\listtablename

+      \@mkboth{\listtablename}{\listtablename}}%

+    \@starttoc{lot}%

+    }

+

+\ifx\oribibl\undefined

+\ifx\citeauthoryear\undefined

+\renewenvironment{thebibliography}[1]

+     {\section*{\refname}

+      \def\@biblabel##1{##1.}

+      \small

+      \list{\@biblabel{\@arabic\c@enumiv}}%

+           {\settowidth\labelwidth{\@biblabel{#1}}%

+            \leftmargin\labelwidth

+            \advance\leftmargin\labelsep

+            \if@openbib

+              \advance\leftmargin\bibindent

+              \itemindent -\bibindent

+              \listparindent \itemindent

+              \parsep \z@

+            \fi

+            \usecounter{enumiv}%

+            \let\p@enumiv\@empty

+            \renewcommand\theenumiv{\@arabic\c@enumiv}}%

+      \if@openbib

+        \renewcommand\newblock{\par}%

+      \else

+        \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%

+      \fi

+      \sloppy\clubpenalty4000\widowpenalty4000%

+      \sfcode`\.=\@m}

+     {\def\@noitemerr

+       {\@latex@warning{Empty `thebibliography' environment}}%

+      \endlist}

+\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw

+     {\let\protect\noexpand\immediate

+     \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}

+\newcount\@tempcntc

+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi

+  \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do

+    {\@ifundefined

+       {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries

+        ?}\@warning

+       {Citation `\@citeb' on page \thepage \space undefined}}%

+    {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}%

+     \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne

+       \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}%

+     \else

+      \advance\@tempcntb\@ne

+      \ifnum\@tempcntb=\@tempcntc

+      \else\advance\@tempcntb\m@ne\@citeo

+      \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}}

+\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else

+               \@citea\def\@citea{,\,\hskip\z@skip}%

+               \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else

+               {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else

+                \def\@citea{--}\fi

+      \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi}

+\else

+\renewenvironment{thebibliography}[1]

+     {\section*{\refname}

+      \small

+      \list{}%

+           {\settowidth\labelwidth{}%

+            \leftmargin\parindent

+            \itemindent=-\parindent

+            \labelsep=\z@

+            \if@openbib

+              \advance\leftmargin\bibindent

+              \itemindent -\bibindent

+              \listparindent \itemindent

+              \parsep \z@

+            \fi

+            \usecounter{enumiv}%

+            \let\p@enumiv\@empty

+            \renewcommand\theenumiv{}}%

+      \if@openbib

+        \renewcommand\newblock{\par}%

+      \else

+        \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%

+      \fi

+      \sloppy\clubpenalty4000\widowpenalty4000%

+      \sfcode`\.=\@m}

+     {\def\@noitemerr

+       {\@latex@warning{Empty `thebibliography' environment}}%

+      \endlist}

+      \def\@cite#1{#1}%

+      \def\@lbibitem[#1]#2{\item[]\if@filesw

+        {\def\protect##1{\string ##1\space}\immediate

+      \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}

+   \fi

+\else

+\@cons\@openbib@code{\noexpand\small}

+\fi

+

+\def\idxquad{\hskip 10\p@}% space that divides entry from number

+

+\def\@idxitem{\par\hangindent 10\p@}

+

+\def\subitem{\par\setbox0=\hbox{--\enspace}% second order

+                \noindent\hangindent\wd0\box0}% index entry

+

+\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third

+                \noindent\hangindent\wd0\box0}% order index entry

+

+\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}

+

+\renewenvironment{theindex}

+               {\@mkboth{\indexname}{\indexname}%

+                \thispagestyle{empty}\parindent\z@

+                \parskip\z@ \@plus .3\p@\relax

+                \let\item\par

+                \def\,{\relax\ifmmode\mskip\thinmuskip

+                             \else\hskip0.2em\ignorespaces\fi}%

+                \normalfont\small

+                \begin{multicols}{2}[\@makeschapterhead{\indexname}]%

+                }

+                {\end{multicols}}

+

+\renewcommand\footnoterule{%

+  \kern-3\p@

+  \hrule\@width 2truecm

+  \kern2.6\p@}

+  \newdimen\fnindent

+  \fnindent1em

+\long\def\@makefntext#1{%

+    \parindent \fnindent%

+    \leftskip \fnindent%

+    \noindent

+    \llap{\hb@xt@1em{\hss\@makefnmark\ }}\ignorespaces#1}

+

+\long\def\@makecaption#1#2{%

+  \small

+  \vskip\abovecaptionskip

+  \sbox\@tempboxa{{\bfseries #1.} #2}%

+  \ifdim \wd\@tempboxa >\hsize

+    {\bfseries #1.} #2\par

+  \else

+    \global \@minipagefalse

+    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%

+  \fi

+  \vskip\belowcaptionskip}

+

+\def\fps@figure{htbp}

+\def\fnum@figure{\figurename\thinspace\thefigure}

+\def \@floatboxreset {%

+        \reset@font

+        \small

+        \@setnobreak

+        \@setminipage

+}

+\def\fps@table{htbp}

+\def\fnum@table{\tablename~\thetable}

+\renewenvironment{table}

+               {\setlength\abovecaptionskip{0\p@}%

+                \setlength\belowcaptionskip{10\p@}%

+                \@float{table}}

+               {\end@float}

+\renewenvironment{table*}

+               {\setlength\abovecaptionskip{0\p@}%

+                \setlength\belowcaptionskip{10\p@}%

+                \@dblfloat{table}}

+               {\end@dblfloat}

+

+\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname

+  ext@#1\endcsname}{#1}{\protect\numberline{\csname

+  the#1\endcsname}{\ignorespaces #2}}\begingroup

+    \@parboxrestore

+    \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par

+  \endgroup}

+

+% LaTeX does not provide a command to enter the authors institute

+% addresses. The \institute command is defined here.

+

+\newcounter{@inst}

+\newcounter{@auth}

+\newcounter{auco}

+\newdimen\instindent

+\newbox\authrun

+\newtoks\authorrunning

+\newtoks\tocauthor

+\newbox\titrun

+\newtoks\titlerunning

+\newtoks\toctitle

+

+\def\clearheadinfo{\gdef\@author{No Author Given}%

+                   \gdef\@title{No Title Given}%

+                   \gdef\@subtitle{}%

+                   \gdef\@institute{No Institute Given}%

+                   \gdef\@thanks{}%

+                   \global\titlerunning={}\global\authorrunning={}%

+                   \global\toctitle={}\global\tocauthor={}}

+

+\def\institute#1{\gdef\@institute{#1}}

+

+\def\institutename{\par

+ \begingroup

+ \parskip=\z@

+ \parindent=\z@

+ \setcounter{@inst}{1}%

+ \def\and{\par\stepcounter{@inst}%

+ \noindent$^{\the@inst}$\enspace\ignorespaces}%

+ \setbox0=\vbox{\def\thanks##1{}\@institute}%

+ \ifnum\c@@inst=1\relax

+   \gdef\fnnstart{0}%

+ \else

+   \xdef\fnnstart{\c@@inst}%

+   \setcounter{@inst}{1}%

+   \noindent$^{\the@inst}$\enspace

+ \fi

+ \ignorespaces

+ \@institute\par

+ \endgroup}

+

+\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or

+   {\star\star\star}\or \dagger\or \ddagger\or

+   \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger

+   \or \ddagger\ddagger \else\@ctrerr\fi}}

+

+\def\inst#1{\unskip$^{#1}$}

+\def\fnmsep{\unskip$^,$}

+\def\email#1{{\tt#1}}

+\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}%

+\@ifpackageloaded{babel}{%

+\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}%

+\@ifundefined{extrasfrenchb}{}{\addto\extrasfrenchb{\switcht@francais}}%

+\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}%

+\@ifundefined{extrasngerman}{}{\addto\extrasngerman{\switcht@deutsch}}%

+}{\switcht@@therlang}%

+\providecommand{\keywords}[1]{\par\addvspace\baselineskip

+\noindent\keywordname\enspace\ignorespaces#1}%

+}

+\def\homedir{\~{ }}

+

+\def\subtitle#1{\gdef\@subtitle{#1}}

+\clearheadinfo

+%

+%%% to avoid hyperref warnings

+\providecommand*{\toclevel@author}{999}

+%%% to make title-entry parent of section-entries

+\providecommand*{\toclevel@title}{0}

+%

+\renewcommand\maketitle{\newpage

+\phantomsection

+  \refstepcounter{chapter}%

+  \stepcounter{section}%

+  \setcounter{section}{0}%

+  \setcounter{subsection}{0}%

+  \setcounter{figure}{0}

+  \setcounter{table}{0}

+  \setcounter{equation}{0}

+  \setcounter{footnote}{0}%

+  \begingroup

+    \parindent=\z@

+    \renewcommand\thefootnote{\@fnsymbol\c@footnote}%

+    \if@twocolumn

+      \ifnum \col@number=\@ne

+        \@maketitle

+      \else

+        \twocolumn[\@maketitle]%

+      \fi

+    \else

+      \newpage

+      \global\@topnum\z@   % Prevents figures from going at top of page.

+      \@maketitle

+    \fi

+    \thispagestyle{empty}\@thanks

+%

+    \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}%

+    \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}%

+    \instindent=\hsize

+    \advance\instindent by-\headlineindent

+    \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else

+       \addcontentsline{toc}{title}{\the\toctitle}\fi

+    \if@runhead

+       \if!\the\titlerunning!\else

+         \edef\@title{\the\titlerunning}%

+       \fi

+       \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces\@title}%

+       \ifdim\wd\titrun>\instindent

+          \typeout{Title too long for running head. Please supply}%

+          \typeout{a shorter form with \string\titlerunning\space prior to

+                   \string\maketitle}%

+          \global\setbox\titrun=\hbox{\small\rm

+          Title Suppressed Due to Excessive Length}%

+       \fi

+       \xdef\@title{\copy\titrun}%

+    \fi

+%

+    \if!\the\tocauthor!\relax

+      {\def\and{\noexpand\protect\noexpand\and}%

+      \protected@xdef\toc@uthor{\@author}}%

+    \else

+      \def\\{\noexpand\protect\noexpand\newline}%

+      \protected@xdef\scratch{\the\tocauthor}%

+      \protected@xdef\toc@uthor{\scratch}%

+    \fi

+    \addtocontents{toc}{\noexpand\protect\noexpand\authcount{\the\c@auco}}%

+    \addcontentsline{toc}{author}{\toc@uthor}%

+    \if@runhead

+       \if!\the\authorrunning!

+         \value{@inst}=\value{@auth}%

+         \setcounter{@auth}{1}%

+       \else

+         \edef\@author{\the\authorrunning}%

+       \fi

+       \global\setbox\authrun=\hbox{\small\unboldmath\@author\unskip}%

+       \ifdim\wd\authrun>\instindent

+          \typeout{Names of authors too long for running head. Please supply}%

+          \typeout{a shorter form with \string\authorrunning\space prior to

+                   \string\maketitle}%

+          \global\setbox\authrun=\hbox{\small\rm

+          Authors Suppressed Due to Excessive Length}%

+       \fi

+       \xdef\@author{\copy\authrun}%

+       \markboth{\@author}{\@title}%

+     \fi

+  \endgroup

+  \setcounter{footnote}{\fnnstart}%

+  \clearheadinfo}

+%

+\def\@maketitle{\newpage

+ \markboth{}{}%

+ \def\lastand{\ifnum\value{@inst}=2\relax

+                 \unskip{} \andname\

+              \else

+                 \unskip \lastandname\

+              \fi}%

+ \def\and{\stepcounter{@auth}\relax

+          \ifnum\value{@auth}=\value{@inst}%

+             \lastand

+          \else

+             \unskip,

+          \fi}%

+ \begin{center}%

+ \let\newline\\

+ {\Large \bfseries\boldmath

+  \pretolerance=10000

+  \@title \par}\vskip .8cm

+\if!\@subtitle!\else {\large \bfseries\boldmath

+  \vskip -.65cm

+  \pretolerance=10000

+  \@subtitle \par}\vskip .8cm\fi

+ \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}%

+ \def\thanks##1{}\@author}%

+ \global\value{@inst}=\value{@auth}%

+ \global\value{auco}=\value{@auth}%

+ \setcounter{@auth}{1}%

+{\lineskip .5em

+\noindent\ignorespaces

+\@author\vskip.35cm}

+ {\small\institutename}

+ \end{center}%

+ }

+

+% definition of the "\spnewtheorem" command.

+%

+% Usage:

+%

+%     \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font}

+% or  \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font}

+% or  \spnewtheorem*{env_nam}{caption}{cap_font}{body_font}

+%

+% New is "cap_font" and "body_font". It stands for

+% fontdefinition of the caption and the text itself.

+%

+% "\spnewtheorem*" gives a theorem without number.

+%

+% A defined spnewthoerem environment is used as described

+% by Lamport.

+%

+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

+

+\def\@thmcountersep{}

+\def\@thmcounterend{.}

+

+\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}}

+

+% definition of \spnewtheorem with number

+

+\def\@spnthm#1#2{%

+  \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}}

+\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}}

+

+\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname

+   {\@definecounter{#1}\@addtoreset{#1}{#3}%

+   \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand

+     \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}%

+   \expandafter\xdef\csname #1name\endcsname{#2}%

+   \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}%

+                              \global\@namedef{end#1}{\@endtheorem}}}

+

+\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname

+   {\@definecounter{#1}%

+   \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%

+   \expandafter\xdef\csname #1name\endcsname{#2}%

+   \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}%

+                               \global\@namedef{end#1}{\@endtheorem}}}

+

+\def\@spothm#1[#2]#3#4#5{%

+  \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}%

+  {\expandafter\@ifdefinable\csname #1\endcsname

+  {\newaliascnt{#1}{#2}%

+  \expandafter\xdef\csname #1name\endcsname{#3}%

+  \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}%

+  \global\@namedef{end#1}{\@endtheorem}}}}

+

+\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@

+\refstepcounter{#1}%

+\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}}

+

+\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}%

+                    \ignorespaces}

+

+\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname

+       the#1\endcsname}{#5}{#3}{#4}\ignorespaces}

+

+\def\@spbegintheorem#1#2#3#4{\trivlist

+                 \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4}

+

+\def\@spopargbegintheorem#1#2#3#4#5{\trivlist

+      \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5}

+

+% definition of \spnewtheorem* without number

+

+\def\@sthm#1#2{\@Ynthm{#1}{#2}}

+

+\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname

+   {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}%

+    \expandafter\xdef\csname #1name\endcsname{#2}%

+    \global\@namedef{end#1}{\@endtheorem}}}

+

+\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@

+\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}}

+

+\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces}

+

+\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1}

+       {#4}{#2}{#3}\ignorespaces}

+

+\def\@Begintheorem#1#2#3{#3\trivlist

+                           \item[\hskip\labelsep{#2#1\@thmcounterend}]}

+

+\def\@Opargbegintheorem#1#2#3#4{#4\trivlist

+      \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }}

+

+\if@envcntsect

+   \def\@thmcountersep{.}

+   \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape}

+\else

+   \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape}

+   \if@envcntreset

+      \@addtoreset{theorem}{section}

+   \else

+      \@addtoreset{theorem}{chapter}

+   \fi

+\fi

+

+%definition of divers theorem environments

+\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily}

+\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily}

+\if@envcntsame % alle Umgebungen wie Theorem.

+   \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}}

+\else % alle Umgebungen mit eigenem Zaehler

+   \if@envcntsect % mit section numeriert

+      \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}}

+   \else % nicht mit section numeriert

+      \if@envcntreset

+         \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4}

+                                   \@addtoreset{#1}{section}}

+      \else

+         \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4}

+                                   \@addtoreset{#1}{chapter}}%

+      \fi

+   \fi

+\fi

+\spn@wtheorem{case}{Case}{\itshape}{\rmfamily}

+\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily}

+\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape}

+\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape}

+\spn@wtheorem{example}{Example}{\itshape}{\rmfamily}

+\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily}

+\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape}

+\spn@wtheorem{note}{Note}{\itshape}{\rmfamily}

+\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily}

+\spn@wtheorem{property}{Property}{\itshape}{\rmfamily}

+\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape}

+\spn@wtheorem{question}{Question}{\itshape}{\rmfamily}

+\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily}

+\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily}

+

+\def\@takefromreset#1#2{%

+    \def\@tempa{#1}%

+    \let\@tempd\@elt

+    \def\@elt##1{%

+        \def\@tempb{##1}%

+        \ifx\@tempa\@tempb\else

+            \@addtoreset{##1}{#2}%

+        \fi}%

+    \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname

+    \expandafter\def\csname cl@#2\endcsname{}%

+    \@tempc

+    \let\@elt\@tempd}

+

+\def\theopargself{\def\@spopargbegintheorem##1##2##3##4##5{\trivlist

+      \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5}

+                  \def\@Opargbegintheorem##1##2##3##4{##4\trivlist

+      \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }}

+      }

+

+\renewenvironment{abstract}{%

+      \list{}{\advance\topsep by0.35cm\relax\small

+      \leftmargin=1cm

+      \labelwidth=\z@

+      \listparindent=\z@

+      \itemindent\listparindent

+      \rightmargin\leftmargin}\item[\hskip\labelsep

+                                    \bfseries\abstractname]}

+    {\endlist}

+

+\newdimen\headlineindent             % dimension for space between

+\headlineindent=1.166cm              % number and text of headings.

+

+\def\ps@headings{\let\@mkboth\@gobbletwo

+   \let\@oddfoot\@empty\let\@evenfoot\@empty

+   \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}%

+                  \leftmark\hfil}

+   \def\@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}%

+                 \llap{\thepage}}

+   \def\chaptermark##1{}%

+   \def\sectionmark##1{}%

+   \def\subsectionmark##1{}}

+

+\def\ps@titlepage{\let\@mkboth\@gobbletwo

+   \let\@oddfoot\@empty\let\@evenfoot\@empty

+   \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}%

+                  \hfil}

+   \def\@oddhead{\normalfont\small\hfil\hspace{\headlineindent}%

+                 \llap{\thepage}}

+   \def\chaptermark##1{}%

+   \def\sectionmark##1{}%

+   \def\subsectionmark##1{}}

+

+\if@runhead\ps@headings\else

+\ps@empty\fi

+

+\setlength\arraycolsep{1.4\p@}

+\setlength\tabcolsep{1.4\p@}

+

+\endinput

+%end of file llncs.cls

diff --git a/ocl/docs/publications/OCL2019Visuals/OCLVisualization-slides.pdf b/ocl/docs/publications/OCL2019Visuals/OCLVisualization-slides.pdf
new file mode 100644
index 0000000..4e1c520
--- /dev/null
+++ b/ocl/docs/publications/OCL2019Visuals/OCLVisualization-slides.pdf
Binary files differ
diff --git a/ocl/docs/publications/OCL2019Visuals/OCLVisualization.pdf b/ocl/docs/publications/OCL2019Visuals/OCLVisualization.pdf
index 9444676..77d0a10 100644
--- a/ocl/docs/publications/OCL2019Visuals/OCLVisualization.pdf
+++ b/ocl/docs/publications/OCL2019Visuals/OCLVisualization.pdf
Binary files differ
diff --git a/ocl/docs/publications/OCL2019Visuals/OCLVisualization.tex b/ocl/docs/publications/OCL2019Visuals/OCLVisualization.tex
index 69846e0..b436216 100644
--- a/ocl/docs/publications/OCL2019Visuals/OCLVisualization.tex
+++ b/ocl/docs/publications/OCL2019Visuals/OCLVisualization.tex
@@ -194,7 +194,7 @@
 	\vspace{-10pt}
 \end{figure}
 
-Once we can have multiple instances, and the reading order is clear, we can solve our example as shown in Fig~\ref{fig:vOCLinv}. The three blobs correspond to the three variables \verb$self$, \verb$p1$ and \verb$p2$, and each contributes a partial reading.
+Once we can have multiple instances, and the reading order is clear, we can solve our example as shown in Fig~\ref{fig:vOCLinv}. The three blobs correspond to the three variables \verb$self$, \verb$p1$ and \verb$p2$, and each contributes a partial reading. Since we have multiple blobs, it is no longer sensible to use grey for the background metamodel so that the one self blob can be black.
 
 The isolated blob for \verb$self$ is bound to \verb$Hospital$ and reads as \verb$self.patients$ to make available a \verb$Patient$ for binding to each of the other two blobs, one for \verb$p1$ and one for \verb$p2$.