From 72b2afe0cad80cb303bba56d8e21201705a1d788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Correnson?= <loic.correnson@cea.fr> Date: Thu, 28 Oct 2021 11:39:49 +0000 Subject: [PATCH] [wp] fix some doc typos --- src/plugins/wp/doc/manual/wp_plugin.tex | 47 ++++++++++++------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/src/plugins/wp/doc/manual/wp_plugin.tex b/src/plugins/wp/doc/manual/wp_plugin.tex index 6a153e2cfa6..bd11618cab7 100644 --- a/src/plugins/wp/doc/manual/wp_plugin.tex +++ b/src/plugins/wp/doc/manual/wp_plugin.tex @@ -1021,8 +1021,8 @@ site: one must prove that \verb+fp+ is either \verb+f1+ or \verb+f2+. \subsubsection{Proof of \texttt{@terminates}} -In ACSL, a function can be specified to terminate some condition \verb+P+ holds -in precondition. +In ACSL, a function can be specified to terminate when some condition \verb+P+ holds +in pre-condition. \begin{lstlisting}[language=c, alsolanguage=acsl] /*@ terminates P ; */ @@ -1031,14 +1031,13 @@ void function(void){ } \end{lstlisting} -If terminates verification is active, WP collects all function calls and loops -and generate different VCs. +If terminates verification is active (depending on \verb+-wp+ options) WP collects all function calls and loops +and generate verification conditions (VCs) to prove them, as detailed below. \paragraph{Loop variants.} When a loop has a variant, no particular verification is generated for termination. However, if \verb+-wp-variant-with-terminates+ is -active, the variant is verified only if \verb+P+ holds at this program point. -Basically, "the variant has to hold only if the function has to terminate". For -example: +active, the variant is verified only when \verb+P+ holds in pre-condition. +Intuitively, this option means that variant has to decrease only if the function has to terminate. For example: \begin{lstlisting}[language=c, alsolanguage=acsl] //@ terminates i >= 0 ; @@ -1051,12 +1050,12 @@ void positive(int i){ } \end{lstlisting} -Note that it means that when one specifies \verb+terminates \false+ any loop -variant trivially holds. +Note that when \verb+terminates \false+ is specified, any loop +variant would trivially holds. When a loop does not have a variant, WP checks that the loop is unreachable -when \verb+P+ holds in precondition, which means "a loop is allowed not -terminating when the function does not have to". For example: +when \verb+P+ holds in precondition, which means that a loop is allowed to not +terminate when the function does not have to terminate. For example: \begin{lstlisting}[language=c, alsolanguage=acsl] //@ terminates i >= 0 ; @@ -1068,12 +1067,12 @@ void function(int i){ } \end{lstlisting} -\paragraph{Function call.} When a function \verb+f+ that terminates when -\verb+P+, calls a function \verb+g+ that terminates when \verb+Q+, WP tries to -prove that \verb+P@pre ==> Q@call-point+, "when \verb+f+ terminates, we must -call \verb+g+ in a way that guarantees that it also terminates". Note that it -means that if the function under verification must terminate, any call to a -non terminating function must be unreachable. For example: +\paragraph{Function call.} When a function \verb+f+ is required to terminate on +\verb+P+, and calling function \verb+g+ only terminates when \verb+Q+, WP tries to +prove that \verb+P@pre ==> Q@call-point+. Indeed, for \verb+f+ to terminates while calling +\verb+g+, then \verb+g+ shall terminate. Note that it +means that if the function under verification shall terminate, any call to a +non-terminating function shall be unreachable. For example: \begin{lstlisting}[language=c, alsolanguage=acsl] //@ terminates i <= 0 ; @@ -1099,18 +1098,18 @@ as specified by the options: \item \verb+-wp-definitions-terminate+. \end{itemize} -\paragraph{(Mutually) recursive function.} When a function is in a recursive -cluster (as defined in the ACSL manual) and must terminate, WP checks that a +\paragraph{(Mutually) recursive function.} When a function is involved in a +recursive cluster (as defined in the ACSL manual) and shall terminate, WP checks that a \verb+decreases+ clause is available for the function. Proving that existing recursive calls might be unreachable is delegated to the proof of the -\verb+decreases+ clause. Note however that currenlty the proof of such a clause -is not supported. +\verb+decreases+ clause. Note however that, currenlty, the proof of \verb+decreases+ +clauses is not supported yet. \paragraph{Function pointers. } On a call via a function pointer, WP checks that -a \verb+@calls+ is specified for this function pointer. If so, WP just behave -as explained before for function calls. If this specification is not available, +a \verb+@calls+ is specified for this function pointer. If so, WP just behaves +as explained before for function calls. If such a specification is not available, WP considers that the pointed function might call the function under -verification and thus that it is part of a recursive cluster and must provide +verification and thus that it is part of a recursive cluster and shall provide a \verb+decreases+ clause. \subsection{Smoke Tests} -- GitLab