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
db678d4e
Commit
db678d4e
authored
5 years ago
by
Loïc Correnson
Browse files
Options
Downloads
Patches
Plain Diff
[wp] improved manual for using Why-3
parent
5fc42da8
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/plugins/wp/doc/manual/wp_plugin.tex
+59
-31
59 additions, 31 deletions
src/plugins/wp/doc/manual/wp_plugin.tex
with
59 additions
and
31 deletions
src/plugins/wp/doc/manual/wp_plugin.tex
+
59
−
31
View file @
db678d4e
...
@@ -988,7 +988,7 @@ controlled by the following options:
...
@@ -988,7 +988,7 @@ controlled by the following options:
(default is:
\texttt
{
1000
}
).
(default is:
\texttt
{
1000
}
).
\end{description}
\end{description}
\subsection
{
Decision Procedures Interface
}
\subsection
{
Prover Selection
}
\label
{
wp-provers
}
\label
{
wp-provers
}
The generated proof obligations are submitted to external decision
The generated proof obligations are submitted to external decision
...
@@ -1103,41 +1103,69 @@ then save the proof scripts in order to replay them in batch mode.
...
@@ -1103,41 +1103,69 @@ then save the proof scripts in order to replay them in batch mode.
\item
[\tt -wp-coq-project='<name>']
override the
\verb
+
_CoqProject
+
file name
\item
[\tt -wp-coq-project='<name>']
override the
\verb
+
_CoqProject
+
file name
for Emacs and Proof General.
for Emacs and Proof General.
\end{description}
\end{description}
\hrule
\hrule
\paragraph
{
Why3.
}
Since
\textsf
{
WP
}
version
\verb
+
0.7
+
(Fluorine), native support for
\textsf
{
Why3
}
\pagebreak
and
\textsf
{
Why3-Ide
}
are provided. The older system
\textsf
{
Why
}
\paragraph
{
Why-3.
}
\verb
+
2.x
+
is
\emph
{
no
}
longer supported.
Native support for
\textsf
{
Why-3
}
is provided (for versions 1.0 and newer).
\\
Support for
\textsf
{
Why-3 IDE
}
is no longer provided.
\begin{description}
\begin{description}
\item
[\tt -wp-prover "why3
ide
"]
runs
\textsf
{
Why
3-Ide
}
with all
\item
[\tt -wp-prover "why3
:<p>
"]
runs
a
\textsf
{
Why
-3
}
prover named
\texttt
{
<p>
}
, and
generated goals. On exit, the
\textsf
{
WP
}
plug-in reads back you
r
exactly behaves like invoking
\verb
+
why3 prover -P <p>
+
. The list of prove
r
\textsf
{
Why3
}
session and updates the proof obligation status accordingly.
names
\verb
+
<p>
+
must be extracted from the
\verb
+
[alias]
+
section of your
\textsf
{
Why-3
}
\item
[\tt -wp-prover "<p>"]
runs a
\textsf
{
Why3
}
prover named
\texttt
{
<p>
}
.
configuration, which
\verb
+
frama-c -wp-detect
+
does for you (see below)
.
\item
[\tt -wp-prover "
why3:
<p>"]
useful alias when
\texttt
{
"<p>"
}
can
\item
[\tt -wp-prover "<p>"]
can also be used instead of
\verb
+
-wp-prover "why3:<p>"
+
be ambiguous. It is actually different to run
\texttt
{
alt-ergo
}
or
\texttt
{
coq
}
when
\verb
+
<p>
+
is not natively supported by
\textsf
{
WP
}
, like
\texttt
{
alt-ergo
}
,
directly from
\textsf
{
WP
}
or through
\textsf
{
Why3
}
.
\texttt
{
altgr-ergo
}
,
\texttt
{
coq
}
,
\texttt
{
coqide
}
,
\texttt
{
script
}
and
\texttt
{
tip
}
.
\item
[\tt -wp-detect]
lists the provers available
with
\textsf
{
Why3
}
.
\item
[\tt -wp-detect]
lists the provers available
for
\textsf
{
Why
-
3
}
.
This command ca
lls
\text
tt
{
why3
--list-provers
}
but you have to
This command ca
n only work if
\text
sf
{
why3
}
API was installed before building and
configure
\textsf
{
Why3
}
on your own before, for instance by using
installing
\textsf
{
Frama-C
}
.
\texttt
{
why3config
}
. Consult the
\textsf
{
Why3
}
user manual for details.
The option reads your
\textsf
{
Why
-
3
}
configuration and prints the available
The listed prover names can be directly used with the
\texttt
{
-wp-prover
}
option
.
provers with their
\verb
+
-wp-prover <p>
+
code names
.
\item
[\tt -wp-why3='<cmd>']
override the
\verb
+
why3
+
command.
\item
[\tt -wp-why3='<cmd>']
override
s the path to
the
\verb
+
why3
+
command.
\end{description}
\end{description}
\paragraph
{
Sessions.
}
\paragraph
{
Example of using Why-3.
}
Your
\textsf
{
Why3
}
session is saved in the
\texttt
{
"project.session"
}
Suppose you have the following configuration:
sub-directory of
\texttt
{
-wp-out
}
. You may run
\texttt
{
why3ide
}
by hand by issuing the following command:
\begin{logs}
\begin{shell}
# frama-c -wp-detect
# why3ide -I <frama-c-share>/wp <out>/project.session
[wp] Why3 provers detected:
\end{shell}
- Alt-Ergo 2.0.0 [why3:alt-ergo,altergo]
- CVC4 1.6 [cvc4]
- CVC4 1.6 (counterexamples) [cvc4-ce]
- Coq 8.9.0 [why3:coq]
- Z3 4.6.0 [z3]
- Z3 4.6.0 (counterexamples) [z3-ce]
- Z3 4.6.0 (noBV) [z3-nobv]
\end{logs}
Proof recovering features of
\textsf
{
Why3
}
are fully available, and
Then, to use (for instance)
\textsf
{
CVC4 1.6
}
,
you can interleave proving from
\textsf
{
WP
}
with manual runs of
you can use
\verb
+
-wp-prover cvc4
+
(since this name is not conflicting
\texttt
{
why3ide
}
. Interactive proofs with
\textsf
{
Why3
}
are completely
with any native prover). Alternatively, you can also use the less ambiguous
separated from those managed by the native
\textsf
{
WP
}
interface with
name
\verb
+
-wp-prover why3:cvc4
+
if you prefer.
\textsf
{
Coq
}
.
Similarly, if you want to use
\textsf
{
Z3 4.6.0
}
without bitvectors, you can use
\verb
+
-wp-prover z3-nobv
+
or
\verb
+
-wp-prover why3:z3-nobv
+
.
However, to use
\textsf
{
Alt-Ergo 2.0.0
}
\emph
{
via
}
\textsf
{
Why-3
}
, you shall use
\verb
+
-wp-prover why3:alt-ergo
+
, since
\verb
+
-wp-prover alt-ergo
+
would select
the native support of
\textsf
{
Alt-Ergo
}
prover. Finally, since
\textsf
{
Why-3
}
also provides the alias
\verb
+
altergo
+
for this prover,
\verb
+
-wp-prover altergo
+
will also run it
\emph
{
via
}
\textsf
{
Why-3
}
.
%% \paragraph{Sessions.}
%% Your \textsf{Why3} session is saved in the \texttt{"project.session"}
%% sub-directory of \texttt{-wp-out}. You may run
%% \texttt{why3ide} by hand by issuing the following command:
%% \begin{shell}
%% # why3ide -I <frama-c-share>/wp <out>/project.session
%% \end{shell}
%% Proof recovering features of \textsf{Why3} are fully available, and
%% you can interleave proving from \textsf{WP} with manual runs of
%% \texttt{why3ide}. Interactive proofs with \textsf{Why3} are completely
%% separated from those managed by the native \textsf{WP} interface with
%% \textsf{Coq}.
\subsection
{
Generated Proof Obligations
}
\subsection
{
Generated Proof Obligations
}
Your proof obligations are generated and saved to several text
Your proof obligations are generated and saved to several text
...
...
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