Skip to content
Snippets Groups Projects
Commit 208f0345 authored by Michele Alberti's avatar Michele Alberti
Browse files

Several updates following the new Why3 (version 1.6.0) API changes.

Fix issue #26.
parent a6f901ff
No related branches found
No related tags found
No related merge requests found
version=0.23.0 version=0.25.1
exp-grouping=parens exp-grouping=parens
if-then-else=keyword-first if-then-else=keyword-first
max-indent=2 max-indent=2
......
...@@ -29,7 +29,7 @@ depends: [ ...@@ -29,7 +29,7 @@ depends: [
"menhirLib" {>= "20210310"} "menhirLib" {>= "20210310"}
"ppx_deriving_yojson" {>= "3.6.1"} "ppx_deriving_yojson" {>= "3.6.1"}
"csv" {>= "2.4"} "csv" {>= "2.4"}
"why3" {= "1.5.1"} "why3" {>= "1.6.0"}
"re" {>= "1.10.4"} "re" {>= "1.10.4"}
"caisar-nnet" {= version} "caisar-nnet" {= version}
"caisar-ovo" {= version} "caisar-ovo" {= version}
......
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
(menhirLib (>= 20210310)) (menhirLib (>= 20210310))
(ppx_deriving_yojson (>= 3.6.1)) (ppx_deriving_yojson (>= 3.6.1))
(csv (>= 2.4)) (csv (>= 2.4))
(why3 (= 1.5.1)) (why3 (>= 1.6.0))
(re (>= 1.10.4)) (re (>= 1.10.4))
(caisar-nnet (= :version)) (caisar-nnet (= :version))
(caisar-ovo (= :version)) (caisar-ovo (= :version))
......
...@@ -74,10 +74,8 @@ let call_prover limit config config_prover ...@@ -74,10 +74,8 @@ let call_prover limit config config_prover
prp_model_parser = Model_parser.lookup_model_parser "no_model"; prp_model_parser = Model_parser.lookup_model_parser "no_model";
} }
in in
Call_provers.call_on_buffer ~libdir:(Whyconf.libdir config) Call_provers.call_on_buffer ~command ~config ~limit ~res_parser
~datadir:(Whyconf.datadir config) ~command ~limit ~res_parser ~filename:" " ~get_model:None ~gen_new_file:false (Buffer.create 10)
~filename:" " ~get_counterexmp:false ~gen_new_file:false
~printing_info:Printer.default_printing_info (Buffer.create 10)
in in
let prover_result = Call_provers.wait_on_call prover_call in let prover_result = Call_provers.wait_on_call prover_call in
build_answer predicate.property prover_result build_answer predicate.property prover_result
...@@ -131,10 +131,8 @@ let call_prover limit config config_prover predicate = ...@@ -131,10 +131,8 @@ let call_prover limit config config_prover predicate =
prp_model_parser = Model_parser.lookup_model_parser "no_model"; prp_model_parser = Model_parser.lookup_model_parser "no_model";
} }
in in
Call_provers.call_on_buffer ~libdir:(Whyconf.libdir config) Call_provers.call_on_buffer ~command ~config ~limit ~res_parser
~datadir:(Whyconf.datadir config) ~command ~limit ~res_parser ~filename:" " ~get_model:None ~gen_new_file:false (Buffer.create 10)
~filename:" " ~get_counterexmp:false ~gen_new_file:false
~printing_info:Printer.default_printing_info (Buffer.create 10)
in in
let prover_result = Call_provers.wait_on_call prover_call in let prover_result = Call_provers.wait_on_call prover_call in
build_answer predicate.property prover_result build_answer predicate.property prover_result
...@@ -78,7 +78,7 @@ let create_env ?(debug = false) loadpath = ...@@ -78,7 +78,7 @@ let create_env ?(debug = false) loadpath =
let config = Autodetect.autodetection ~debug () in let config = Autodetect.autodetection ~debug () in
let config = let config =
let main = Whyconf.get_main config in let main = Whyconf.get_main config in
let dft_timelimit = 20 (* 20 seconds *) in let dft_timelimit = 20.0 (* 20 seconds *) in
let dft_memlimit = 4000 (* 4 GB *) in let dft_memlimit = 4000 (* 4 GB *) in
let main = let main =
Whyconf.( Whyconf.(
...@@ -163,8 +163,7 @@ let nnet_or_onnx = Re__Core.(compile (str "%{nnet-onnx}")) ...@@ -163,8 +163,7 @@ let nnet_or_onnx = Re__Core.(compile (str "%{nnet-onnx}"))
let call_prover_on_task limit config command driver task = let call_prover_on_task limit config command driver task =
let prover_call = let prover_call =
Driver.prove_task_prepared ~libdir:(Whyconf.libdir config) Driver.prove_task_prepared ~command ~config ~limit driver task
~datadir:(Whyconf.datadir config) ~command ~limit driver task
in in
let prover_result = Call_provers.wait_on_call prover_call in let prover_result = Call_provers.wait_on_call prover_call in
prover_result.pr_answer prover_result.pr_answer
...@@ -282,7 +281,10 @@ let verify ?(debug = false) ?format ~loadpath ?memlimit ?timelimit ?dataset ...@@ -282,7 +281,10 @@ let verify ?(debug = false) ?format ~loadpath ?memlimit ?timelimit ?dataset
let main = Whyconf.get_main config in let main = Whyconf.get_main config in
let limit = let limit =
let memlimit = Option.value memlimit ~default:(Whyconf.memlimit main) in let memlimit = Option.value memlimit ~default:(Whyconf.memlimit main) in
let timelimit = Option.value timelimit ~default:(Whyconf.timelimit main) in let timelimit =
Option.value_map timelimit ~f:Float.of_int
~default:(Whyconf.timelimit main)
in
let def = Call_provers.empty_limit in let def = Call_provers.empty_limit in
{ {
Call_provers.limit_time = timelimit; Call_provers.limit_time = timelimit;
...@@ -318,27 +320,28 @@ let verify ?(debug = false) ?format ~loadpath ?memlimit ?timelimit ?dataset ...@@ -318,27 +320,28 @@ let verify ?(debug = false) ?format ~loadpath ?memlimit ?timelimit ?dataset
invalid_arg invalid_arg
(Fmt.str "No prover corresponds to %s%a" prover (Fmt.str "No prover corresponds to %s%a" prover
(if String.equal altern "" (if String.equal altern ""
then Fmt.nop then Fmt.nop
else Fmt.(any " " ++ parens string)) else Fmt.(any " " ++ parens string))
altern) altern)
| Whyconf.ProverAmbiguity _ -> | Whyconf.ProverAmbiguity _ ->
invalid_arg invalid_arg
(Fmt.str "More than one prover correspond to %s%a" prover (Fmt.str "More than one prover correspond to %s%a" prover
(if String.equal altern "" (if String.equal altern ""
then Fmt.nop then Fmt.nop
else Fmt.(any " " ++ parens string)) else Fmt.(any " " ++ parens string))
altern) altern)
in in
let driver = let driver =
match String.chop_prefix ~prefix:"caisar_drivers/" config_prover.driver with match String.chop_prefix ~prefix:"caisar_drivers/" config_prover.driver with
| None -> Whyconf.(load_driver (get_main config) env config_prover) | None -> Driver.load_driver_for_prover main env config_prover
| Some file -> | Some file ->
let file = let file =
Filename.concat Filename.concat
(Filename.concat (List.hd_exn Dirs.Sites.config) "drivers") (Filename.concat (List.hd_exn Dirs.Sites.config) "drivers")
file file
in in
Driver.load_driver_absolute env file config_prover.extra_drivers Driver.load_driver_file_and_extras main env file
config_prover.extra_drivers
in in
Wstdlib.Mstr.map Wstdlib.Mstr.map
(fun theory -> (fun theory ->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment