% File              : splib-common.sty
% Version           : $Revision: 1.6 $
% Author            : Ralf Treinen <treinen@debian.org> (for RTALOOP)
% Last-modified     : $Date: 2002/11/15 09:13:37 $
% Last-modifier     : FJ

% protocol title
\newcommand{\localtitle}{}
% date of last change to submission
\newcommand{\locallastchange}{}

\newcommand{\settitle}[1]{\renewcommand{\localtitle}{#1}}
\newcommand{\setlastchange}[1]{\renewcommand{\locallastchange}{#1}}

% reference to another protocol
% cross references labels are defined in all.aux, in the following form:
% label=rootfilename (without .tex) ref = contents of \title in rootfilename.tex
%
% param #1 (optional)  the text for the html link (default is the
%                      reference \ref{#2})
% param #2  a label, i.e. the prefix of a protocol file name.
\newcommand{\crossref}[2][]{\ahref{{#2}.html}{\ifthenelse{\equal{#1}{}}{\ref{#2}}{#1}}}

% short description of the protocol.
\renewenvironment{abstract}{\textbf{Summary: }}{}

% the specification of the protocol messages (in splib syntax)
\newenvironment{core}{\subsection*{Protocol specification (in \ahref{format.html\#syntax}{common syntax})}}{}
%\newenvironment{core}{\section*{Protocol specification (in common syntax)}}{}

% the specification of the protocol messages (verbatim)
\newenvironment{verbcore}{\subsection*{Protocol specification}}{}

% protocol specification: variables declarations .
\newenvironment{declarations}{\begin{tabular}{ll}}{\end{tabular}}
% one declaration.
% param #1  variable(s)
% param #2  type
\newcommand{\dcl}[2]{\texttt{#1}\ :\quad & \texttt{#2}\\}
\newcommand{\freedcl}[1]{\multicolumn{2}{l}{#1}\\}

% protocol specification: messages.
\newenvironment{messages}{\par\begin{tabular}{lccccl}}{\end{tabular}}
% one message.
% param #1  label
% param #2  sender
% param #3  receiver
% param #4  contents
\newcommand{\msg}[4]{\ifthenelse{\equal{#1}{}}{}{\texttt{#1}.\quad }
& \texttt{#2} 
& \ifthenelse{\equal{#3}{}}{}{\texttt{-{>}}}
&  \texttt{#3} 
& \ifthenelse{\equal{#3}{}}{}{\ :\quad}
& \texttt{#4}\\}
\newcommand{\action}[1]{\freedcl{#1}}

% messages primitives
\newcommand{\crypt}[2]{\textrm{$\{$}\texttt{#1}\textrm{$\}$}\texttt{#2}}
\newcommand{\tuple}[1]{\texttt{[{#1}]}}
\newcommand{\apply}[2]{\texttt{{#1}({#2})}}
\newcommand{\var}[1]{\texttt{#1}}
\newcommand{\code}[1]{\texttt{#1}}

% natural language description of the messages
\newenvironment{explanation}{\subsection*{Description of the protocol rules}}{}

% properties to be satisfied by the protocol, has defined in the reference paper
\newenvironment{property}{\subsection*{Requirements}}{}

% the references where the protocol is defined / specified
\newenvironment{references}{\subsection*{References}}{}

% the references where the protocol has been shown to be correct
\newenvironment{proofs}{\subsection*{Proofs}}{}

% the references where the protocol has been shown to be flawed
\newenvironment{attacks}{\subsection*{Attacks}}{}

% for editorial comments
\newenvironment{remark}{\subsection*{Remark}}{}

% for contributed comments
% param #1  Name of contributor
% param #2  Date of contribution
\newenvironment{addcomment}[2]{\subsection*{Comment sent by #1 (\textit{{#2}})}}{}

% for cross references
\newenvironment{see}{\subsection*{See also}}{}

