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
8a0fcc80
Commit
8a0fcc80
authored
2 years ago
by
Loïc Correnson
Browse files
Options
Downloads
Patches
Plain Diff
[wp] take script into account for caching
parent
cce431a1
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/plugins/wp/ProverWhy3.ml
+20
-16
20 additions, 16 deletions
src/plugins/wp/ProverWhy3.ml
with
20 additions
and
16 deletions
src/plugins/wp/ProverWhy3.ml
+
20
−
16
View file @
8a0fcc80
...
...
@@ -1239,23 +1239,28 @@ let call_prover_task ~timeout ~steps ~conf prover call =
(* --- Batch Prover --- *)
(* -------------------------------------------------------------------------- *)
let
digest
wpo
drv
prover
task
=
let
digest
_task
wpo
drv
?
script
prover
task
=
let
file
=
Wpo
.
DISK
.
file_goal
~
pid
:
wpo
.
Wpo
.
po_pid
~
model
:
wpo
.
Wpo
.
po_model
~
prover
:
(
VCS
.
Why3
prover
)
in
let
_
=
Command
.
print_file
file
begin
Command
.
print_file
file
begin
fun
fmt
->
Format
.
fprintf
fmt
"(* WP Task for Prover %s *)@
\n
"
(
Why3Provers
.
ident_why3
prover
)
;
Why3
.
Driver
.
print_task_prepared
drv
fmt
task
;
end
in
Digest
.
file
file
|>
Digest
.
to_hex
let
old
=
Option
.
map
open_in
script
in
let
_
=
Why3
.
Driver
.
print_task_prepared
?
old
drv
fmt
task
in
Option
.
iter
close_in
old
;
end
;
Digest
.
file
file
|>
Digest
.
to_hex
end
let
batch
pconf
driver
~
conf
?
script
~
timeout
~
steplimit
prover
task
=
let
run_
batch
pconf
driver
~
conf
?
script
~
timeout
~
steplimit
prover
task
=
let
steps
=
match
steplimit
with
Some
0
->
None
|
_
->
steplimit
in
let
limit
=
let
memlimit
=
Why3
.
Whyconf
.
memlimit
(
Why3
.
Whyconf
.
get_main
(
Why3Provers
.
config
()
))
in
let
config
=
Why3
.
Whyconf
.
get_main
@@
Why3Provers
.
config
()
in
let
memlimit
=
Why3
.
Whyconf
.
memlimit
config
in
let
def
=
Why3
.
Call_provers
.
empty_limit
in
{
Why3
.
Call_provers
.
limit_time
=
Why3
.
Opt
.
get_def
def
.
limit_time
timeout
;
Why3
.
Call_provers
.
limit_steps
=
Why3
.
Opt
.
get_def
def
.
limit_time
steps
;
...
...
@@ -1305,11 +1310,10 @@ let updatescript ~script driver task =
let
d_new
=
Digest
.
file
script
in
if
String
.
equal
d_new
d_old
then
Extlib
.
safe_remove
backup
let
editor
~
script
~
merge
~
conf
wpo
pconf
driver
prover
task
=
let
editor
~
script
~
merge
~
conf
pconf
driver
task
=
Task
.
sync
editor_mutex
begin
fun
()
->
Wp_parameters
.
feedback
~
ontty
:
`Transient
"Editing %S..."
script
;
Cache
.
clear_result
~
digest
:
(
digest
wpo
driver
)
prover
task
;
if
merge
then
updatescript
~
script
driver
task
;
let
command
=
editor_command
pconf
in
Wp_parameters
.
debug
~
dkey
"Editor command %S"
command
;
...
...
@@ -1321,8 +1325,8 @@ let editor ~script ~merge ~conf wpo pconf driver prover task =
end
let
compile
~
script
~
timeout
~
conf
wpo
pconf
driver
prover
task
=
let
digest
=
digest
wpo
driver
in
let
runner
=
batch
~
conf
pconf
driver
~
script
in
let
digest
=
digest
_task
wpo
driver
~
script
in
let
runner
=
run_
batch
~
conf
pconf
driver
~
script
in
Cache
.
get_result
~
digest
~
runner
~
timeout
~
steplimit
:
None
prover
task
let
prepare
~
mode
wpo
driver
task
=
...
...
@@ -1362,13 +1366,13 @@ let interactive ~mode wpo pconf ~conf driver prover task =
compile
~
script
~
timeout
~
conf
wpo
pconf
driver
prover
task
|
VCS
.
Edit
->
let
open
Task
in
editor
~
script
~
merge
~
conf
wpo
pconf
driver
prover
task
>>=
fun
_
->
editor
~
script
~
merge
~
conf
pconf
driver
task
>>=
fun
_
->
compile
~
script
~
timeout
~
conf
wpo
pconf
driver
prover
task
|
VCS
.
Fix
->
let
open
Task
in
compile
~
script
~
timeout
~
conf
wpo
pconf
driver
prover
task
>>=
fun
r
->
if
VCS
.
is_valid
r
then
return
r
else
editor
~
script
~
merge
~
conf
wpo
pconf
driver
prover
task
>>=
fun
_
->
editor
~
script
~
merge
~
conf
pconf
driver
task
>>=
fun
_
->
compile
~
script
~
timeout
~
conf
wpo
pconf
driver
prover
task
|
VCS
.
FixUpdate
->
let
open
Task
in
...
...
@@ -1376,7 +1380,7 @@ let interactive ~mode wpo pconf ~conf driver prover task =
compile
~
script
~
timeout
~
conf
wpo
pconf
driver
prover
task
>>=
fun
r
->
if
VCS
.
is_valid
r
then
return
r
else
let
merge
=
false
in
editor
~
script
~
merge
~
conf
wpo
pconf
driver
prover
task
>>=
fun
_
->
editor
~
script
~
merge
~
conf
pconf
driver
task
>>=
fun
_
->
compile
~
script
~
timeout
~
conf
wpo
pconf
driver
prover
task
(* -------------------------------------------------------------------------- *)
...
...
@@ -1404,8 +1408,8 @@ let build_proof_task ?(mode=VCS.Batch) ?timeout ?steplimit ~prover wpo () =
interactive
~
mode
wpo
pconf
~
conf
drv
prover
task
else
Cache
.
get_result
~
digest
:
(
digest
wpo
drv
)
~
runner
:
(
batch
~
conf
pconf
drv
?
script
:
None
)
~
digest
:
(
digest
_task
wpo
drv
)
~
runner
:
(
run_
batch
~
conf
pconf
drv
?
script
:
None
)
~
timeout
~
steplimit
prover
task
with
exn
->
if
Wp_parameters
.
has_dkey
dkey_api
then
...
...
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