Skip to content
Snippets Groups Projects
Commit d3f6584a authored by Virgile Prevosto's avatar Virgile Prevosto
Browse files

[userman] typos and listings style

parent ba4d7672
No related branches found
No related tags found
No related merge requests found
\chapter{ACSL extensions} % here we do not use the macro (avoids a warning) \chapter{ACSL Extensions} % here we do not use the macro (avoids a warning)
\label{cha:acsl-extensions} \label{cha:acsl-extensions}
\section{Extension syntaxes} \section{Extension Syntaxes}
\label{acsl:syntax} \label{acsl:syntax}
When a plug-in registers an extension, it can be used in \acsl annotations When a plug-in registers an extension, it can be used in \acsl annotations
...@@ -16,7 +16,7 @@ ignored with a warning, whereas \lstinline|unroll _| cannot be identified as ...@@ -16,7 +16,7 @@ ignored with a warning, whereas \lstinline|unroll _| cannot be identified as
being supported by Eva, which means that it can only be treated as a user being supported by Eva, which means that it can only be treated as a user
error. error.
\section{Handling indirect calls with \texttt{calls}} \section{Handling Indirect Calls with \texttt{calls}}
\label{acsl:calls} \label{acsl:calls}
In order to help plug-ins support indirect calls (i.e. calls through In order to help plug-ins support indirect calls (i.e. calls through
...@@ -33,23 +33,23 @@ indicates that the pointer \lstinline|f| can point to any one of ...@@ -33,23 +33,23 @@ indicates that the pointer \lstinline|f| can point to any one of
It is in particular used by the WP plug-in (see \cite{wp} for more information). It is in particular used by the WP plug-in (see \cite{wp} for more information).
\section{Module Support} \section{Importing External Module Definitions}
\label{acsl:modules} \label{acsl:modules}
Support for \acsl modules has been introduced since \nextframacversion. Support for \acsl modules has been introduced in \nextframacversion.
Module definitions can be nested. Inside a module \verb+A+, Module definitions can be nested. Inside a module \verb+A+,
a sub-module \verb+B+ will actually defines the module \verb+A::B+, and so on. a sub-module \verb+B+ will actually defines the module \verb+A::B+, and so on.
Notice than for long-identifiers like \verb+A::B::C+ to be valid, no space is Notice than for long identifiers like \verb+A::B::C+ to be valid, no space is
allowed around the \verb+:+ characters, and \verb+A+, \verb+B+, \verb+C+ must be allowed around the \verb+:+ characters, and \verb+A+, \verb+B+, \verb+C+ must be
regular \acsl identifiers, ie. they shall only consist of upper case or lower case letters, digits, regular \acsl identifiers, i.e.~they shall only consist of upper case or lower case letters, digits,
underscores, and must start with a letter. underscores, and must start with a letter.
Inside module \verb+M+ declaration, where \verb+M+ it the long-identifier of the Inside module \verb+M+ declaration, where \verb+M+ it the long identifier of the
module being declared, a logic declaration \verb+a+ will actually define the module being declared, a logic declaration \verb+a+ will actually define the
symbol \verb+M::a+. You shall always use the complete name of an identifier to symbol \verb+M::a+. You shall always use the complete name of an identifier to
avoid ambiguities in your specifications. However, in order to ease reading, is avoid ambiguities in your specifications. However, in order to ease reading, it
it also possible to use shortened names instead. is also possible to use shortened names instead.
The rules for shortening long identifiers generalize to any depth of nested The rules for shortening long identifiers generalize to any depth of nested
modules. We only illustrate them in a simple case. Consider for instance a logic modules. We only illustrate them in a simple case. Consider for instance a logic
...@@ -59,11 +59,12 @@ its name as follows: ...@@ -59,11 +59,12 @@ its name as follows:
\item Everywhere, you can use \verb+A::B::a+; \item Everywhere, you can use \verb+A::B::a+;
\item Inside module \verb+A+, you can use \verb+B::a+; \item Inside module \verb+A+, you can use \verb+B::a+;
\item Inside module \verb+A::B+, you can use \verb+a+; \item Inside module \verb+A::B+, you can use \verb+a+;
\item After annotation \verb+import A::B+, you can use \verb+B::a+; \item After annotation \lstinline[language=ACSL]|import A::B|, you can use \verb+B::a+;
\item After annotation \verb+import A::B as C+, you can use \verb+C::a+; \item After annotation \lstinline[language=ACSL]|import A::B as C|, you can use \verb+C::a+;
\end{itemize} \end{itemize}
You may also use local \verb+import+ annotations inside module definitions, in You may also use local \lstinline[language=ACSL]+import+ annotations inside
module definitions, in
which case the introduced aliases will be only valid until the end of the module which case the introduced aliases will be only valid until the end of the module
scope. scope.
...@@ -72,12 +73,12 @@ from external specifications, generally from an external proof assistant like ...@@ -72,12 +73,12 @@ from external specifications, generally from an external proof assistant like
\textsf{Coq} or \textsf{Why3}. The \acsl extended syntax for importing external \textsf{Coq} or \textsf{Why3}. The \acsl extended syntax for importing external
specifications is as follows: specifications is as follows:
\begin{lstlisting} \begin{lstlisting}[language=ACSL]
import <Driver>: <ModuleName> [ as <Name> ]; import <Driver>: <ModuleName> [ as <Name> ];
\end{lstlisting} \end{lstlisting}
This is a generalization of the regular \acsl \verb+import+ clause just This is a generalization of the regular \acsl \lstinline[language=ACSL]|import|
mentioned above. The \verb+<Driver>+ name identifies the kind of external clause just mentioned above. The \verb+<Driver>+ name identifies the kind of external
specifications to be loaded. Drivers are defined by dedicated plug-in support specifications to be loaded. Drivers are defined by dedicated plug-in support
only, and you shall consult the documentation of each plug-in to known which only, and you shall consult the documentation of each plug-in to known which
drivers are available. drivers are available.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment