\RequirePackage{amssymb,amsmath,stmaryrd,alltt,color}

\def\A#1{\mathcal{A}\left\llbracket#1\right\rrbracket}
\def\B#1{\mathcal{B}\left\llbracket#1\right\rrbracket}
\def\N#1{\mathcal{N}\left\llbracket#1\right\rrbracket}
\def\s{s\;}

\def\x{\mathtt{x}}
\def\y{\mathtt{y}}

\def\tt{\mathbf{tt}}
\def\ff{\mathbf{ff}}

\def\AND{\mathtt{\;\&\&\;}}
\def\OR{\mathtt{\;||\;}}

\newcommand{\sdowhile}[2]{\mbox{\texttt{do~}}#1\mbox{\texttt{~while~}}#2}
\def\ruleif#1{\using{\enspace\text{if }#1}}
\def\axif#1{\enspace\text{if }#1}

% Engelbert Hubbers, Annotated Programs
\input{sl1defs}
\newcommand{\pass}[2]{\left[#1\mapsto\calA{#2}\right]}
\newcommand{\smaller}[1]{{\small\textcolor{red}{#1}}}
\renewcommand{\allttsup}[1]{\begin{math}^{\textcolor{red}{#1}}\end{math}}
%\renewcommand{\allttsub}[1]{\begin{math}_{\textcolor{red}{#1}}\end{math}}
\renewcommand{\psqan}[5]{\{#1\}^{\textcolor{red}{#4}}\espace #2 \espace \{#3\}^{\textcolor{red}{#5}}}

\newcommand{\transl}[2]{\langle #1, #2\rangle}
\newcommand{\sfor}[4]{\mbox{\texttt{for~}}\sass#1#2\mbox{\texttt{~to~}}#3\mbox{\texttt{~do~}}#4}
\newcommand{\sassert}[2]{\mbox{\texttt{assert~}}#1\mbox{\texttt{~before~}}#2}
\newcommand{\sabort}{\mbox{\texttt{abort}}}

\def\rcompsos#1{[\mbox{comp}_{\mbox{\footnotesize{sos}}}^{#1}]}
\def\rasssos{[\mbox{ass}_{\mbox{\footnotesize{sos}}}]}
\def\rskipsos{[\mbox{skip}_{\mbox{\footnotesize{sos}}}]}
\def\rifsos#1{[\mbox{if}_{\mbox{\footnotesize{sos}}}^{\mbox{\footnotesize{#1}}}]}
\def\rwhilesos{[\mbox{while}_{\mbox{\footnotesize{sos}}}]}

\def\rassert{[\mbox{assert}_{\mbox{\footnotesize{sos}}}]}

