Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Charles Southerland
frama-c
Commits
71073bba
Commit
71073bba
authored
Nov 16, 2020
by
Basile Desloges
Browse files
[eacsl:doc] Update reference manual according to ACSL 1.16
parent
7fd007d6
Changes
9
Hide whitespace changes
Inline
Side-by-side
src/plugins/e-acsl/doc/refman/assertions.tex
View file @
71073bba
...
...
@@ -2,7 +2,7 @@
C-compound-statement ::= "
{
" declaration* statement* assertion+ "
}
"
\
C-statement ::= assertion statement
\
assertion-kind ::= "assert" |
"check"
\
assertion-kind ::= "assert" |
clause-kind
\
assertion ::= "/*@" assertion-kind pred ";" "*/" ;
|
{
"/*@" "for" id ("," id)* ":" assertion-kind pred ";" "*/"
}
;
\end{syntax}
src/plugins/e-acsl/doc/refman/biblio.bib
View file @
71073bba
...
...
@@ -37,14 +37,14 @@
title
=
{{ACSL, ANSI/ISO C Specification Language}}
,
author
=
{Patrick Baudin and Pascal Cuoq and Jean-Christophe Filliâtre and
Claude Marché and Benjamin Monate and Yannick Moy and Virgile Prevosto}
,
note
=
{
Vesion 1.12.
\url{http://frama-c.com/acsl.html}}
,
note
=
{\url{http
s
://frama-c.com/
html/
acsl.html}}
,
}
@manual
{
acslimplem
,
title
=
{{ACSL
version 1.12
, Implementation in
Silicon-20161101
}}
,
title
=
{{ACSL, Implementation in
Frama-C
}}
,
author
=
{Patrick Baudin and Pascal Cuoq and Jean-Christophe Filliâtre and
Claude Marché and Benjamin Monate and Yannick Moy and Virgile Prevosto}
,
note
=
{\url{http://frama-c.com/
acsl.html
}}
,
note
=
{\url{http
s
://frama-c.com/
download/frama-c-acsl-implementation.pdf
}}
,
}
@manual
{
framac
,
...
...
@@ -52,20 +52,20 @@
author
=
{Loïc Correnson and Pascal Cuoq and Florent Kirchner and
André Maroneze and
Virgile Prevosto and Armand Puccetti and Julien Signoles and Boris Yakobowski}
,
note
=
{\url{http://frama-c.com}}
,
note
=
{\url{http
s
://frama-c.com
/download/frama-c-user-manual.pdf
}}
,
}
@manual
{
eacsl-plugin
,
title
=
{Frama-C's E-ACSL Plug-in}
,
author
=
{Julien Signoles and Kostyantyn Vorobyov}
,
note
=
{\url{http://frama-c.com/
e
acsl.html}}
,
note
=
{\url{http
s
://frama-c.com/
fc-plugins/e-
acsl.html}}
,
}
@manual
{
value
,
title
=
{Frama-C's
value
analysis plug-in}
,
title
=
{Frama-C's
Evolved Value Analysis
analysis plug-in}
,
author
=
{Pascal Cuoq and Boris Yakobowski and Matthieu Lemerre and
André Maroneze and Valentin Perelle and Virgile Prevosto}
,
note
=
{\url{http://frama-c.com/
value
.html}}
,
note
=
{\url{http
s
://frama-c.com/
fc-plugins/eva
.html}}
,
}
@book
{
KR88
,
...
...
src/plugins/e-acsl/doc/refman/changes_modern.tex
View file @
71073bba
\section
{
Changes
}
\subsection*
{
Version
\version
}
\begin{itemize}
\item
Update according to
\acsl
1.16
\begin{itemize}
\item
\changeinsection
{
fn-behavior
}{
add the
\lstinline
|check| and
\lstinline
|admit| clause kinds
}
\item
\changeinsection
{
assertions
}{
add the
\lstinline
|check| and
\lstinline
|admit| clause kinds
}
\item
\changeinsection
{
generalized-invariants
}{
add the
\lstinline
|check| and
\lstinline
|admit| clause kinds
}
\item
\changeinsection
{
loop
_
annot
}{
add the
\lstinline
|check| and
\lstinline
|admit| clause kinds
}
\end{itemize}
\end{itemize}
\subsection*
{
Version 1.15
}
\begin{itemize}
\item
Update according to
\acsl
1.15:
\begin{itemize}
\item
\changeinsection
{
ghost
}{
add the
\lstinline
|
\\
ghost| qualifier
}
\end{itemize}
\end{itemize}
\subsection*
{
Version 1.14
}
\begin{itemize}
\item
Update according to
\acsl
1.14:
\begin{itemize}
...
...
src/plugins/e-acsl/doc/refman/fn_behavior.tex
View file @
71073bba
...
...
@@ -3,7 +3,9 @@
{
decreases-clause?
}
simple-clause*
named-behavior* completeness-clause*
\
requires-clause ::= "requires" pred ";"
clause-kind ::= "check" |
{
"admit"
}
\
requires-clause ::= clause-kind? "requires" pred ";"
\
{
decreases-clause
}
::=
{
"decreases" term ("for" id)? ";"
}
\
...
...
@@ -16,7 +18,7 @@
\
{
location
}
::=
{
tset
}
\
ensures-clause ::= "ensures" pred ";"
ensures-clause ::=
clause-kind?
"ensures" pred ";"
\
named-behavior ::= "behavior" id ":" behavior-body
\
...
...
src/plugins/e-acsl/doc/refman/generalinvariants.tex
View file @
71073bba
\begin{syntax}
assertion ::= [ "/*@" "invariant" pred ";" "*/" ] ;
| [
{
"/*@" "for" id ("," id)* ":" "invariant" pred ";" "*/"
}
] ;
assertion ::= [ "/*@"
clause-kind?
"invariant" pred ";" "*/" ] ;
| [
{
"/*@" "for" id ("," id)* ":"
clause-kind?
"invariant" pred ";" "*/"
}
] ;
\end{syntax}
src/plugins/e-acsl/doc/refman/ghost.tex
View file @
71073bba
\begin{syntax}
C-type-qualifier ::= C-type-qualifier ;
|
{
"
\ghost
"
}
; only in ghost
\
ghost-type-specifier ::= C-type-specifier ;
|
{
logic-type
}
\
declaration ::= C-declaration ;
...
...
@@ -16,7 +19,8 @@
"(" C-argument-expression-list? ")";
{
"/*@" "ghost"
}
;
{
"(" ghost-argument-expression-list ")"
}
;
{
"*/"
}
; call with ghosts
{
"*/"
}
; call
; with ghosts
\
statement ::= C-statement ;
| statements-ghost
\
...
...
src/plugins/e-acsl/doc/refman/loops.tex
View file @
71073bba
...
...
@@ -16,13 +16,13 @@
loop-clause ::= loop-invariant ;
|
{
loop-assigns
}
\
[ loop-invariant ]
::= [ "loop" "invariant" pred ";" ] ;
[ loop-invariant ]
::=
{
clause-kind?
}
[ "loop" "invariant" pred ";" ] ;
\
{
loop-assigns
}
::=
{
"loop" "assigns" locations ";"
}
;
\
{
loop-behavior
}
::=
{
"for" id ("," id)* ":"
}
;
{
loop-clause*
}
;
\hspace
{
-3
0
mm
}
annotation for behavior
$
id
$
{
loop-clause*
}
;
\hspace
{
-3
5
mm
}
annotation for behavior
$
id
$
\
{
loop-variant
}
::=
{
"loop" "variant" term ";"
}
;
|
{
"loop" "variant" term "for" id ";"
}
;
\hspace
{
-3
0
mm
}
variant for relation
$
id
$
|
{
"loop" "variant" term "for" id ";"
}
;
\hspace
{
-3
5
mm
}
variant for relation
$
id
$
\end{syntax}
src/plugins/e-acsl/doc/refman/main.tex
View file @
71073bba
...
...
@@ -24,7 +24,7 @@
\usepackage
{
alltt
}
\makeindex
\newcommand
{
\eacsllangversion
}{
1.1
4
\xspace
}
\newcommand
{
\eacsllangversion
}{
1.1
6
\xspace
}
\newcommand
{
\version
}{
\eacsllangversion\xspace
}
\renewcommand
{
\textfraction
}{
0.01
}
...
...
src/plugins/e-acsl/doc/refman/speclang_modern.tex
View file @
71073bba
...
...
@@ -290,11 +290,6 @@ It is not possible to define logic types introduced by the specification writer
\eacsl
plug-in.
\end{notimplementedenv}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection
{
String literals
}
\nodiff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
...
...
@@ -385,7 +380,7 @@ set of all integers between 0 and 9 and between 20 and 29.
\begin{notimplementedenv}
Ranges are currently only supported in memory built-ins described in
Section~
\ref
{
subsec:memory
}
and~
\ref
{
sec:dangling
}
.
Section~
\ref
{
subsec:memory
}
,~
\ref
{
sec:initialized
}
and~
\ref
{
sec:dangling
}
.
\begin{example}
The predicate
\lstinline
|
\valid
(
&
t[0 .. 9])| is supported and denotes that
...
...
@@ -484,6 +479,7 @@ loop invariants are not inductive.
\end{example}
\subsubsection
{
General inductive invariant
}
\label
{
sec:generalized-invariants
}
Syntax of these kinds of invariant is shown Figure~
\ref
{
fig:advancedinvariants
}
\begin{figure}
[t]
...
...
@@ -725,7 +721,7 @@ predicates which are related to memory location.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection
{
A
llocation and deallocation
}
\subsection
{
Dynamic a
llocation and deallocation
}
\difficultswhy
{
All these constructs
}{
the implementation of a memory model
}
\label
{
sec:alloc-dealloc
}
\nodiff
...
...
@@ -852,13 +848,18 @@ same than the one of \acsl.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section
{
Undefined values, dangling pointers
}
\section
{
Initialization and undefined values
}
\label
{
sec:initialized
}
\nodiff
\difficultwhy
{
\lstinline
|
\\
initialized|
}{
the implementation of a memory model
}
\section
{
Dangling pointers
}
\label
{
sec:dangling
}
\nodiff
\difficultswhy
{
\lstinline
|
\\
initialized| and
\notimplemented
{
\lstinline
|
\\
dangling|
}}{
the implementation of a memory
model
}
\difficultwhy
{
\notimplemented
{
\lstinline
|
\\
dangling|
}}{
the implementation of a
memory model
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
...
...
@@ -867,3 +868,17 @@ same than the one of \acsl.
\section
{
Well-typed pointers
}
\label
{
sec:typedpointers
}
\absentexperimental
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section
{
Logic attribute annotations
}
\absentexperimental
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section
{
Preprocessing for ACSL
}
\nodiff
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment