Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
caisar
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
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
caisar
Commits
f7951355
Commit
f7951355
authored
2 years ago
by
Julien Girard-Satabin
Browse files
Options
Downloads
Patches
Plain Diff
[SAVer] Added option for loading a CSV dataset for SAVer.
parent
eed0c97f
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/main.ml
+17
-6
17 additions, 6 deletions
src/main.ml
src/verification.ml
+13
-6
13 additions, 6 deletions
src/verification.ml
src/verification.mli
+5
-1
5 additions, 1 deletion
src/verification.mli
with
35 additions
and
13 deletions
src/main.ml
+
17
−
6
View file @
f7951355
...
@@ -16,7 +16,7 @@ let () =
...
@@ -16,7 +16,7 @@ let () =
let
()
=
let
()
=
Pyrat
.
init
()
;
Pyrat
.
init
()
;
Marabou
.
init
()
;
Marabou
.
init
()
;
Saver
.
init
()
Saver
.
init
()
(* -- Logs. *)
(* -- Logs. *)
...
@@ -69,10 +69,12 @@ let config detect () =
...
@@ -69,10 +69,12 @@ let config detect () =
Whyconf
.
print_prover
Pp
.
nothing
)
Whyconf
.
print_prover
Pp
.
nothing
)
provers
))
provers
))
let
verify
format
loadpath
memlimit
timeout
prover
files
=
let
verify
format
loadpath
memlimit
timeout
prover
dataset_csv
files
=
let
debug
=
log_level_is_debug
()
in
let
debug
=
log_level_is_debug
()
in
List
.
iter
List
.
iter
~
f
:
(
Verification
.
verify
~
debug
format
loadpath
?
memlimit
?
timeout
prover
)
~
f
:
(
Verification
.
verify
~
debug
format
loadpath
?
memlimit
?
timeout
prover
~
dataset_csv
)
files
files
let
exec_cmd
cmdname
cmd
=
let
exec_cmd
cmdname
cmd
=
...
@@ -155,6 +157,13 @@ let verify_cmd =
...
@@ -155,6 +157,13 @@ let verify_cmd =
in
in
Arg
.(
required
&
opt
(
some
provers
)
None
&
info
[
"p"
;
"prover"
]
~
doc
)
Arg
.(
required
&
opt
(
some
provers
)
None
&
info
[
"p"
;
"prover"
]
~
doc
)
in
in
let
dataset_csv
=
let
doc
=
"Dataset under .csv format to use for analyse.
\n
\
\
Currently only supported by SAVer."
in
Arg
.(
value
&
opt
(
some
string
)
None
&
info
[
"dataset-csv"
]
~
doc
)
in
let
doc
=
let
doc
=
"Property verification of neural networks using external provers."
"Property verification of neural networks using external provers."
in
in
...
@@ -162,11 +171,13 @@ let verify_cmd =
...
@@ -162,11 +171,13 @@ let verify_cmd =
let
man
=
[
`S
Manpage
.
s_description
;
`P
doc
]
in
let
man
=
[
`S
Manpage
.
s_description
;
`P
doc
]
in
(
Term
.(
(
Term
.(
ret
ret
(
const
(
fun
format
loadpath
memlimit
timeout
prover
files
_
->
(
const
(
fun
format
loadpath
memlimit
timeout
prover
dataset_csv
files
_
->
`Ok
`Ok
(
exec_cmd
cmdname
(
fun
()
->
(
exec_cmd
cmdname
(
fun
()
->
verify
format
loadpath
memlimit
timeout
prover
files
)))
verify
format
loadpath
memlimit
timeout
prover
dataset_csv
files
)))
$
format
$
loadpath
$
memlimit
$
timeout
$
prover
$
files
$
setup_logs
))
,
$
format
$
loadpath
$
memlimit
$
timeout
$
prover
$
dataset_csv
$
files
$
setup_logs
))
,
Term
.
info
cmdname
~
sdocs
:
Manpage
.
s_common_options
~
exits
~
doc
~
man
)
Term
.
info
cmdname
~
sdocs
:
Manpage
.
s_common_options
~
exits
~
doc
~
man
)
let
default_cmd
=
let
default_cmd
=
...
...
This diff is collapsed.
Click to expand it.
src/verification.ml
+
13
−
6
View file @
f7951355
...
@@ -55,9 +55,13 @@ let combine_prover_answers answers =
...
@@ -55,9 +55,13 @@ let combine_prover_answers answers =
|
Call_provers
.
Valid
,
r
|
r
,
Call_provers
.
Valid
->
r
|
Call_provers
.
Valid
,
r
|
r
,
Call_provers
.
Valid
->
r
|
_
->
acc
)
|
_
->
acc
)
let
handle_task_saver
task
env
command
=
let
handle_task_saver
task
env
dataset_csv
command
=
let
open
Why3
in
let
open
Why3
in
let
dataset_filename
=
"test_data.csv"
in
let
dataset_filename
=
match
dataset_csv
with
|
Some
s
->
s
|
None
->
failwith
"Error, no dataset provided for SAVer."
in
let
goal
=
Task
.
task_goal_fmla
task
in
let
goal
=
Task
.
task_goal_fmla
task
in
let
eps
,
svm_filename
=
let
eps
,
svm_filename
=
match
goal
.
t_node
with
match
goal
.
t_node
with
...
@@ -96,12 +100,12 @@ let handle_task_saver task env command =
...
@@ -96,12 +100,12 @@ let handle_task_saver task env command =
command
command
let
call_prover
~
limit
config
(
prover
:
Why3
.
Whyconf
.
config_prover
)
driver
env
let
call_prover
~
limit
config
(
prover
:
Why3
.
Whyconf
.
config_prover
)
driver
env
task
=
dataset_csv
task
=
let
open
Why3
in
let
open
Why3
in
if
String
.
equal
prover
.
prover
.
prover_name
"SAVer"
if
String
.
equal
prover
.
prover
.
prover_name
"SAVer"
then
then
let
command
=
Whyconf
.
get_complete_command
~
with_steps
:
false
prover
in
let
command
=
Whyconf
.
get_complete_command
~
with_steps
:
false
prover
in
let
command
=
handle_task_saver
task
env
command
in
let
command
=
handle_task_saver
task
env
dataset_csv
command
in
let
res_parser
=
let
res_parser
=
{
{
Call_provers
.
prp_regexps
=
Call_provers
.
prp_regexps
=
...
@@ -174,7 +178,8 @@ let call_prover ~limit config (prover : Why3.Whyconf.config_prover) driver env
...
@@ -174,7 +178,8 @@ let call_prover ~limit config (prover : Why3.Whyconf.config_prover) driver env
Fmt
.
pr
"Goal %a: %a@."
Pretty
.
print_pr
(
Task
.
task_goal
task
)
Fmt
.
pr
"Goal %a: %a@."
Pretty
.
print_pr
(
Task
.
task_goal
task
)
Call_provers
.
print_prover_answer
answer
Call_provers
.
print_prover_answer
answer
let
verify
?
(
debug
=
false
)
format
loadpath
?
memlimit
?
timeout
prover
file
=
let
verify
?
(
debug
=
false
)
format
loadpath
?
memlimit
?
timeout
prover
~
dataset_csv
file
=
if
debug
then
Debug
.
set_flag
(
Debug
.
lookup_flag
"call_prover"
);
if
debug
then
Debug
.
set_flag
(
Debug
.
lookup_flag
"call_prover"
);
let
env
,
config
=
create_env
loadpath
in
let
env
,
config
=
create_env
loadpath
in
let
steplimit
=
None
in
let
steplimit
=
None
in
...
@@ -217,6 +222,8 @@ let verify ?(debug = false) format loadpath ?memlimit ?timeout prover file =
...
@@ -217,6 +222,8 @@ let verify ?(debug = false) format loadpath ?memlimit ?timeout prover file =
Driver
.
load_driver_absolute
env
file
prover
.
extra_drivers
Driver
.
load_driver_absolute
env
file
prover
.
extra_drivers
in
in
List
.
iter
List
.
iter
~
f
:
(
call_prover
~
limit
(
Whyconf
.
get_main
config
)
prover
driver
env
)
~
f
:
(
call_prover
~
limit
(
Whyconf
.
get_main
config
)
prover
driver
env
dataset_csv
)
tasks
)
tasks
)
mstr_theory
mstr_theory
This diff is collapsed.
Click to expand it.
src/verification.mli
+
5
−
1
View file @
f7951355
...
@@ -18,6 +18,7 @@ val verify :
...
@@ -18,6 +18,7 @@ val verify :
?
memlimit
:
int
->
?
memlimit
:
int
->
?
timeout
:
int
->
?
timeout
:
int
->
Prover
.
t
->
Prover
.
t
->
dataset_csv
:
string
option
->
File
.
t
->
File
.
t
->
unit
unit
(** [verify debug format loadpath memlimit timeout prover file] launches a
(** [verify debug format loadpath memlimit timeout prover file] launches a
...
@@ -28,4 +29,7 @@ val verify :
...
@@ -28,4 +29,7 @@ val verify :
@param loadpath is the additional loadpath.
@param loadpath is the additional loadpath.
@param memlimit
@param memlimit
is the memory limit (in megabytes) granted to the verification.
is the memory limit (in megabytes) granted to the verification.
@param timeout is the timeout (in seconds) granted to the verification. *)
@param timeout is the timeout (in seconds) granted to the verification.
@param dataset_csv
is the filepath of a dataset to analyze. Currently, it is only required
for SAVer. *)
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