diff --git a/src/plugins/e-acsl/doc/manuals/e-acsl-implementation.pdf b/src/plugins/e-acsl/doc/manuals/e-acsl-implementation.pdf index fe1ac7d29861b3f1992219b2ad2efedc2e944667..8851b13098b0a355d175cb508f9908c183eec1d1 100644 Binary files a/src/plugins/e-acsl/doc/manuals/e-acsl-implementation.pdf and b/src/plugins/e-acsl/doc/manuals/e-acsl-implementation.pdf differ diff --git a/src/plugins/e-acsl/doc/manuals/e-acsl.pdf b/src/plugins/e-acsl/doc/manuals/e-acsl.pdf index b4a9bfb6dbed2161525df474b1055de4a06c9c42..38e97aed810c91fc7a9b42167a98a9ffff8cafd7 100644 Binary files a/src/plugins/e-acsl/doc/manuals/e-acsl.pdf and b/src/plugins/e-acsl/doc/manuals/e-acsl.pdf differ diff --git a/src/plugins/e-acsl/doc/refman/Makefile b/src/plugins/e-acsl/doc/refman/Makefile index c6f936ac8ce3bbb75e66cc6619397b0def464058..534e9878a1508c5c79d1dd6786ef31350edbc77d 100644 --- a/src/plugins/e-acsl/doc/refman/Makefile +++ b/src/plugins/e-acsl/doc/refman/Makefile @@ -6,7 +6,7 @@ DEPS_MODERN=macros_modern.tex eacslversion.tex biblio.bib \ libraries_modern.tex concl_modern.tex changes_modern.tex \ term_modern.bnf binders_modern.bnf predicate_modern.bnf \ fn_behavior_modern.bnf oldandresult_modern.bnf \ - loc_modern.bnf memory_modern.bnf \ + loc_modern.bnf memory_modern.bnf list-gram.bnf \ assertions_modern.bnf loops_modern.bnf st_contracts_modern.bnf \ logic_modern.bnf data_invariants_modern.bnf model_modern.bnf \ ghost_modern.bnf generalinvariants_modern.bnf iterator_modern.bnf \ diff --git a/src/plugins/e-acsl/doc/refman/changes_modern.tex b/src/plugins/e-acsl/doc/refman/changes_modern.tex index 015978d8b81bdd6ae641c50736d3b74b7c8ce369..d79c15855c9149c27dfe53bf575d13b42f6eca3a 100644 --- a/src/plugins/e-acsl/doc/refman/changes_modern.tex +++ b/src/plugins/e-acsl/doc/refman/changes_modern.tex @@ -1,28 +1,41 @@ \section{Changes} -\subsection{Version \version} +\subsection*{Version \version} +\begin{itemize} +\item Update according to \acsl 1.12: + \begin{itemize} + \item \changeinsection{locations}{add subsections for build-in lists} + \item \changeinsection{statement_contract}{fix syntax rule for statement + contracts in allowing completeness clauses} + \item \changeinsection{memory}{add syntax for defining a set by giving + explicitely its element} + \item \changeinsection{typedpointers}{new section} + \end{itemize} +\end{itemize} + +\subsection*{Version 1.9} \begin{itemize} -\item \changeinsection{alloc-dealloc}{include this section} +\item \changeinsection{alloc-dealloc}{new section} \item Update according to \acsl 1.9. \end{itemize} -\subsection{Version 1.8} +\subsection*{Version 1.8} \begin{itemize} -\item \changeinsection{locations}{Fix example \ref{ex:tset}} -\item \changeinsection{pointers}{Add grammar of memory-related terms and +\item \changeinsection{locations}{fix example \ref{ex:tset}} +\item \changeinsection{pointers}{add grammar of memory-related terms and predicates} \end{itemize} -\subsection{Version 1.7} +\subsection*{Version 1.7} \begin{itemize} \item Update according to \acsl 1.7. \item \changeinsection{separation}{no more absent} \end{itemize} -\subsection{Version 1.5-4} +\subsection*{Version 1.5-4} \begin{itemize} \item Fix typos. @@ -36,7 +49,7 @@ in \lstinline|\\at|} \end{itemize} -\subsection{Version 1.5-3} +\subsection*{Version 1.5-3} \begin{itemize} \item Fix various typos. @@ -49,7 +62,7 @@ in \lstinline|\\at|} \item \changeinsection{logicalstates}{add hybrid functions and predicates} \end{itemize} -\subsection{Version 1.5-2} +\subsection*{Version 1.5-2} \begin{itemize} \item \changeinsection{expressions}{remove laziness of operator @@ -62,7 +75,7 @@ in \lstinline|\\at|} add example.} \end{itemize} -\subsection{Version 1.5-1} +\subsection*{Version 1.5-1} \begin{itemize} \item Fix many typos. @@ -82,7 +95,7 @@ in \lstinline|\\at|} \item \changeinsection{specmodules}{add specification modules} \end{itemize} -\subsection{Version 1.5-0} +\subsection*{Version 1.5-0} \begin{itemize} \item Initial version. @@ -95,20 +108,20 @@ in \lstinline|\\at|} { \section{Changes in \eacsl Implementation} -\subsection{Version \eacslversion} +\subsection*{Version \eacslversion} \begin{itemize} \item \changeinsection{alloc-dealloc}{support of \lstinline|\\freeable|} \end{itemize} -\subsection{Version 0.3} +\subsection*{Version 0.3} \begin{itemize} \item \changeinsection{loop_annot}{support of loop invariant} \end{itemize} -\subsection{Version 0.2} +\subsection*{Version 0.2} \begin{itemize} \item \changeinsection{expressions}{support of bitwise complementation} @@ -119,7 +132,7 @@ in \lstinline|\\at|} \item \changeinsection{dangling}{support of \lstinline|\\initialized|} \end{itemize} -\subsection{Version 0.1} +\subsection*{Version 0.1} \begin{itemize} \item Initial version. diff --git a/src/plugins/e-acsl/doc/refman/eacslversion.tex b/src/plugins/e-acsl/doc/refman/eacslversion.tex index 8aae7b9eff6f2de6fe20ee0bd3a55415809a6389..609006e8f99bb55b3a7dd87eabf18f5f8096c022 100644 --- a/src/plugins/e-acsl/doc/refman/eacslversion.tex +++ b/src/plugins/e-acsl/doc/refman/eacslversion.tex @@ -1 +1 @@ -\newcommand{\eacslversion}{0.5} +\newcommand{\eacslversion}{0.8} diff --git a/src/plugins/e-acsl/doc/refman/list-gram.tex b/src/plugins/e-acsl/doc/refman/list-gram.tex new file mode 100644 index 0000000000000000000000000000000000000000..de081932cead22daf4ba87f59ca580258a1fff98 --- /dev/null +++ b/src/plugins/e-acsl/doc/refman/list-gram.tex @@ -0,0 +1,7 @@ +\begin{syntax} + term ::= "[|" "|]" ; empty list + | "[|" term ("," term)* "|]" ; list of elements + | term "^" term ; list concatenation (overloading bitwise-xor + ; operator) + | term "*^" term ; list repetition +\end{syntax} diff --git a/src/plugins/e-acsl/doc/refman/loc.tex b/src/plugins/e-acsl/doc/refman/loc.tex index 23fbf3635333081f7164e4636227fbf5f204a2c1..f998e26dc08ca39989904fb0beae5a8ef8f9743a 100644 --- a/src/plugins/e-acsl/doc/refman/loc.tex +++ b/src/plugins/e-acsl/doc/refman/loc.tex @@ -10,8 +10,10 @@ | { "\inter" "(" tset ("," tset)* ")" }; intersection | tset "+" tset ; | "(" tset ")" ; - | [ { "{" tset "|" binder ";" guards ("&&" pred)? "}" } ]; set comprehension - | { "{" term "}" } ; explicit singleton + | {[the given term cannot itself be a set] + "{" tset "|" binders (";" pred)? "}"} ; set comprehension + | {[the given terms cannot themselves be a set] + "{" (tset ("," tset)*)? "}" }; | term ; implicit singleton \ pred ::= { "\subset" "(" tset "," tset ")" } ; set inclusion diff --git a/src/plugins/e-acsl/doc/refman/main.tex b/src/plugins/e-acsl/doc/refman/main.tex index 0a3803d504811c87c38ecceb411af61a4f3ba270..754211277a2fb0a7d8ec45365802b2c743a64f57 100644 --- a/src/plugins/e-acsl/doc/refman/main.tex +++ b/src/plugins/e-acsl/doc/refman/main.tex @@ -24,7 +24,7 @@ \usepackage{alltt} \makeindex -\newcommand{\acslversion}{1.9\xspace} +\newcommand{\acslversion}{1.12\xspace} \newcommand{\version}{\acslversion\xspace} \renewcommand{\textfraction}{0.01} @@ -55,9 +55,10 @@ CEA LIST, Software Reliability Laboratory\\ \vfill \begin{flushleft} - \textcopyright 2011-2013 CEA LIST + \textcopyright 2011-2017 CEA LIST - This work has been supported by the `Hi-Lite' FUI project (FUI AAP 9). + This work has been initially supported by the `Hi-Lite' FUI project (FUI AAP + 9). \end{flushleft} \end{titlepage} diff --git a/src/plugins/e-acsl/doc/refman/speclang_modern.tex b/src/plugins/e-acsl/doc/refman/speclang_modern.tex index a9d2e139285eac9ea8f1c23579f40209c8a97c2e..b868b10cdbd1e0126378107056d8fb430ae2eaf0 100644 --- a/src/plugins/e-acsl/doc/refman/speclang_modern.tex +++ b/src/plugins/e-acsl/doc/refman/speclang_modern.tex @@ -694,10 +694,24 @@ evolve in the future.} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Sets as first-class values} +\section{Sets and lists} \index{location} + +\subsection{Finite sets} +\nodiff + +\subsection{Finite lists} \nodiff +Figure~\ref{fig:gram:list} shows the notations for built-in lists. +\begin{figure}[t] + \begin{cadre} + \input{list-gram.bnf} + \end{cadre} + \caption{Notations for built-in list datatype} +\label{fig:gram:list} +\end{figure} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -792,3 +806,11 @@ same than the one of \acsl. \difficultswhy{\lstinline|\\initialized| and \notimplemented{\lstinline|\\dangling|}}{the implementation of a memory model} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Well-typed pointers} +\label{sec:typedpointers} +\absentexperimental diff --git a/src/plugins/e-acsl/doc/refman/st_contracts.tex b/src/plugins/e-acsl/doc/refman/st_contracts.tex index 7e574f5690e265a62b7c218c0d00b9928894e779..498e9a73899ed7fd58fe49dfa210018d10d93964 100644 --- a/src/plugins/e-acsl/doc/refman/st_contracts.tex +++ b/src/plugins/e-acsl/doc/refman/st_contracts.tex @@ -2,5 +2,11 @@ statement ::= "/*@" statement-contract "*/" statement \ [ statement-contract ] ::= {("for" id ("," id)* ":")?} requires-clause* ; - simple-clause* behavior-body* + simple-clause* named-behavior-stmt* ; + completeness-clause* + \ + named-behavior-stmt ::= "behavior" id ":" behavior-body-stmt + \ + behavior-body-stmt ::= assumes-clause* ; + requires-clause* simple-clause-stmt* \end{syntax}