%> do tex %F -l -l -d"-t a4"
%> do tex %F -l -l -d"-D" -p2

\documentstyle[12pt,times]{article}

\textwidth=16cm
\oddsidemargin=1cm
\evensidemargin=1cm
\textheight=22cm
\topmargin=0cm
\parindent=0mm
\parskip=4mm

\title{TOPO: Quick Reference	\\
	Auxiliary Tools --- version 3R6}

\author{Jos{\'e} A. Ma{\~n}a			\\
        Tom{\'a}s de Miguel			\\
        Tom{\'a}s Robles			\\
        Joaqu{\'\i}n Salvachua		\\
        Gabriel Huecas			\\
        Marcelino Veiga			\\
					\\
        Dpt. Ingenier{\'\i}a Telem{\'a}tica	\\
        E.T.S.I. de Telecomunicaci{\'o}n	\\
        Univ. Polit{\'e}cnica de Madrid	\\
        E-28040 Madrid, SPAIN		\\
					\\
        {\tt <topo@dit.upm.es>}
        }

\date{17 October, 1994}

\pagestyle{myheadings}
\markright{Quick Reference -- Auxiliary Tools}

\begin{document}

\maketitle

\begin{abstract}
TOPO is a set of interoperating LOTOS tools grouped in several packages.
This one contains some auxiliary tools:
a cross reference generator,
an ADT cross reference generator,
a pretty printer,
a symbolic data type interpreter, and
a test case generator for ADTs.

This paper is a quick reference guide for users.
\end{abstract}

%\newpage
%\tableofcontents

\newpage

\section{Getting Started \ldots}
TOPO is a set of interoperating LOTOS tools grouped in several packages.
This one includes some auxiliary tools
\begin{itemize}
\itemsep=-\parsep
\item
  \verb/lxref/: a cross reference generator
\item
  \verb/adtxr/: an ADT cross reference generator
\item
  \verb/pl/: a pretty printer
\item
  \verb/ildi/: an interactive symbolic data type interpreter
\item
  \verb/rdtts/: A language to specify ADT test suites, and execute them
\end{itemize}

But for working properly, this package must be together with
TOPO Front-End package.

%\newpage
\section{Calling Tools}
For calling the auxiliary tools of TOPO, it is used the same interface as
TOPO Front-End package. Only some options are added.
\begin{center}
\begin{tabular}{| l | l |}
  \hline
  \multicolumn{2}{| c |}{
    \rule[-3mm]{0mm}{6mm}
    \verb/topo/ spec[\verb/.lot/] \ldots
    } \\
  \hline
  -r \ldots      &
  \begin{minipage}[t]{10cm}
    Cross references.

    For every identifier in the spec,
    it generates a list of lines where it is referenced.
    Further options refine its behaviour: see below.
  \end{minipage}                                        \\
  \hline
  -a \ldots      &
  \begin{minipage}[t]{10cm}
    ADT cross references.

    By default it considers every ADT in the spec and prints all its
    evolution,
    that is the traces down to basic ADTs.
    The result is a tree of dependencies: union, renaming,
    actualization.
    Further options refine its behaviour: see below.
  \end{minipage}                                        \\
  \hline
  -pp \ldots   &
  \begin{minipage}[t]{10cm}
    Pretty printer.

    Produces in stdout a nice copy of the original specification.
    Further options refine its behaviour: see below.
  \end{minipage}                                        \\
  \hline
  -ildi   &
  \begin{minipage}[t]{10cm}
    Interactive Symbolic ADT Interpreter.

    Allows to excersise the rewrite system interactively
    (or even batch).
    Useful to debug ADT specifications.
  \end{minipage}                                        \\
  \hline
  -rdtts \ldots  &
  \begin{minipage}[t]{10cm}
    Real Data Types Test Specification.

    Permits to specify in a compact form a test suite to excercise the
    ADT specification.
    It derives a test system that may be compiled and executed.
    Or a specification that may be into LOLA,
    or even into {\tt ildi}.
    It pays attention to annotations,
    so it proves that the annotated specification works.
  \end{minipage}                                        \\
  \hline
\end{tabular}
\end{center}

Options may be specified on line,

\begin{center}
\begin{tabular}{| l | l | l | l |}
  \hline
  tool	 & help	& example		\\
  \hline
  adtxr	 & topo -ah 	& topo spec -a -iBoolean	\\
  lxref	 & topo -rh 	& topo spec -r -p	\\
  pl	 & topo -pph    & topo spec -pp -x70	\\
  rdtts  & topo null -rdtts -help & topo spec -rdtts -ildi	\\
  \hline
\end{tabular}
\end{center}

\subsection{Cross Reference}
\begin{center}
\begin{tabular}{| r | p{10cm} |}
  \hline
  \multicolumn{2}{| c |}{
    \rule[-3mm]{0mm}{6mm}
    \verb/topo/ spec[\verb/.lot/] \verb/-r/ \ldots
    } \\
  \hline
  \hline
  -h    &
    On-line help. Sharp.                                \\
  -p    &
    Only process identifiers.                           \\
  -g    &
    Only gate identifiers.                              \\
  -t    &
    Only type identifiers.                              \\
  -s    &
    Only sort identifiers.                              \\
  -S    &
    Only formal sort identifiers.                       \\
  -o    &
    Only operation identifiers.                         \\
  -O    &
    Only formal operation identifiers.                  \\
  -v    &
    Only variable identifiers.                          \\
  -P    &
    Only the specification identifier.                  \\
  -N    &
    Only names (sort-names and operation-names).        \\
  -b    &
    Brief listing: only line numbers.                   \\
  -c    &
    Listing is classified according to identifier class.   \\
  -u    &
    Lists those identifiers that are never used.        \\
  -l    &
    Work on syntax analysis (no semantics).             \\
  \hline
\end{tabular}
\end{center}

\subsection{ADT Cross Reference}
\begin{center}
\begin{tabular}{| r | p{10cm} |}
  \hline
  \multicolumn{2}{| c |}{
    \rule[-3mm]{0mm}{6mm}
    \verb/topo/ spec[\verb/.lot/] \verb/-a/ \ldots
    } \\
  \hline
  \hline
  -h    &
    On-line help. Sharp.                                \\
  -b    &
    Only basic types are considered.
    Basic types are those self--contained.                 \\
  -c    &
    Only types that are build as union of other types.  \\
  -u    &
    Lists those types that are not used by others.      \\
  -U    &
    Lists those types that are further used by others:
    used in unions, renamings, actualizations.          \\
  -r    &
    Lists those types that are derived as a renaming of another.  \\
  -a    &
    Lists those types that are derived as an actualization of another.  \\
  -nT	&
    Only reports on type T			\\
  -iT	&
    Only reports on types that use T		\\
  \hline
\end{tabular}
\end{center}

\subsection{Pretty Printer}
\begin{center}
\begin{tabular}{| r | p{10cm} |}
  \hline
  \multicolumn{2}{| c |}{
    \rule[-3mm]{0mm}{6mm}
    \verb/topo/ spec[\verb/.lot/] \verb/-pp/ \ldots
    } \\
  \hline
  \hline
  -h    &
    On-line help. Sharp.                                \\
  -i \# &
    indentation increment (default: -i2)                 \\
  -s \# &
    horizontal spacing between boxes (default: -s1)      \\
  -x \# &
    max characters per line (default: -x80)             \\
  \hline
\end{tabular}
\end{center}

\newpage
\subsection{Symbolic Data Interpreter}
Commands are usually provided interactively,
or may be read from a batch file.
Interactive access provides an emacs-like editing of the command line.
It provides the following commands:

\begin{verbatim}
  LOAD file
  EXEC file
  RENAME [ identifier IS identifier ]
  REWRITE expression
  CHECK expression '=' expression
  VAR variable_declaration
  LET identifier '=' expression
  FREE identifier_free_list [ ':' sort_identifier ]
  RESET identifier_reset_list [ ':' sort_identifier ]
  IF '(' expression '=' expression ')' cmdl [ '::' cmdl ] ';'
  DISPLAY [ item ]
  SETDEB [deb]
  TRACE [ON/OFF]
  STAT stat
  WRITE string
  RESET
  QUIT
  HELP
\end{verbatim}

\subsection{Real Data Types Test Specification}
\begin{center}
\begin{tabular}{| r | p{10cm} |}
  \hline
  \multicolumn{2}{| c |}{
    \rule[-3mm]{0mm}{6mm}
    \verb/topo/ spec[\verb/.lot/] \verb/-rdtts/ \ldots
    } \\
  \hline
  \hline
  -h    &
    On-line help. Sharp.                                \\
  -topo &
    generates code for topo compiler (default)          \\
  -lola &
    generates code for lola (or smile)	                \\
  -ildi &
    generates code for ildi                \\
  \hline
\end{tabular}
\end{center}

\end{document}
