Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
frama-c
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container Registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
pub
frama-c
Commits
d3f6584a
Commit
d3f6584a
authored
6 months ago
by
Virgile Prevosto
Browse files
Options
Downloads
Patches
Plain Diff
[userman] typos and listings style
parent
ba4d7672
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
doc/userman/user-acsl.tex
+17
-16
17 additions, 16 deletions
doc/userman/user-acsl.tex
with
17 additions
and
16 deletions
doc/userman/user-acsl.tex
+
17
−
16
View file @
d3f6584a
\chapter
{
ACSL
e
xtensions
}
% here we do not use the macro (avoids a warning)
\chapter
{
ACSL
E
xtensions
}
% here we do not use the macro (avoids a warning)
\label
{
cha:acsl-extensions
}
\label
{
cha:acsl-extensions
}
\section
{
Extension
s
yntaxes
}
\section
{
Extension
S
yntaxes
}
\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
i
ndirect
c
alls with
\texttt
{
calls
}}
\section
{
Handling
I
ndirect
C
alls 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
s
in
ce
\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, i
s
avoid ambiguities in your specifications. However, in order to ease reading, i
t
i
t
also possible to use shortened names instead.
i
s
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.
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment