Attention une mise à jour du serveur va être effectuée le vendredi 16 avril entre 12h et 12h30. Cette mise à jour va générer une interruption du service de quelques minutes.

Commit e556b0af authored by MARCHE Claude's avatar MARCHE Claude

Merge branch 'master' into itp

parents ec3ac79b 5c6821f9
...@@ -51,6 +51,7 @@ why3.conf ...@@ -51,6 +51,7 @@ why3.conf
/bench/programs/good/loops/ /bench/programs/good/loops/
/bench/programs/good/po/ /bench/programs/good/po/
/bench/valid/list/ /bench/valid/list/
/bench/ce/*.out
# /bin/ # /bin/
/bin/why3.byte /bin/why3.byte
......
#!/bin/sh
dir=`dirname $0`
case "$1" in
"-update-oracle")
updateoracle=true;;
"")
updateoracle=false;;
*)
echo "$0: Unknown option '$1'"
exit 2
esac
run_cvc4_15 () {
echo -n " $1... "
$dir/../bin/why3prove.opt -P "CVC4,1.5-prerelease" --get-ce $1 > $1.out
if cmp $1.oracle $1.out > /dev/null 2>&1 ; then
echo "ok"
else
if $updateoracle; then
echo "Updating oracle for $1"
mv $1.out $1.oracle
else
echo "FAILED!"
echo "diff is the following:"
diff $1.oracle $1.out
fi
fi
}
for f in $dir/ce/*.mlw; do
run_cvc4_15 $f
done
theory T
use import int.Int
goal g0 : forall x "model":int. ("model" x >= 42) -> ("model" x + 3 <= 50)
constant g : int
goal g1 : forall x "model":int. ("model" g >= x)
goal g2 : forall x1 "model" "model_trace:X" x2 "model" x3 "model" x4 "model" x5 "model" x6 "model" x7 "model" x8 "model".
("model" "model_trace: X1 + 1 = 2" x1 + 1 = 2) ->
("model" x2 + 1 = 2) ->
("model" x3 + 1 = 2) ->
("model" x4 + 1 = 2) ->
("model" x5 + 1 = 2) ->
("model" x6 + 1 = 2) ->
("model" x7 + 1 = 2) ->
("model" x8 + 1 = 2) ->
("model" x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 = 2)
end
bench/ce/logic.mlw T g0 : Invalid (0.00s)
Counter-example model:File bench/ce/logic.mlw:
Line 6:
x = {"type" : "Integer" ,
"val" : "48" }
bench/ce/logic.mlw T g1 : Invalid (0.00s)
Counter-example model:File bench/ce/logic.mlw:
Line 10:
x = {"type" : "Integer" ,
"val" : "0" }
bench/ce/logic.mlw T g2 : Invalid (0.00s)
Counter-example model:File bench/ce/logic.mlw:
Line 12:
X = {"type" : "Integer" , "val" : "1" }
x2 = {"type" : "Integer" ,
"val" : "1" }
x3 = {"type" : "Integer" ,
"val" : "1" }
x4 = {"type" : "Integer" ,
"val" : "1" }
x5 = {"type" : "Integer" ,
"val" : "1" }
x6 = {"type" : "Integer" ,
"val" : "1" }
x7 = {"type" : "Integer" ,
"val" : "1" }
x8 = {"type" : "Integer" ,
"val" : "1" }
This diff is collapsed.
This diff is collapsed.
...@@ -136,6 +136,16 @@ else ...@@ -136,6 +136,16 @@ else
echo "Make bench succeeded. " >> $REPORT echo "Make bench succeeded. " >> $REPORT
fi fi
# run regression bench for counterexamples
bench/ce-bench &> $OUT
if test "$?" != "0" ; then
echo "Counterexample regression tests FAILED" >> $REPORT
cat $OUT >> $REPORT
SUBJECT="$SUBJECT (CE regression failed)"
else
echo "Counterexample regression tests succeeded. " >> $REPORT
fi
# replay proofs # replay proofs
examples/regtests.sh &> $OUT examples/regtests.sh &> $OUT
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<prover id="4" name="Z3" version="4.4.0" timelimit="5" steplimit="0" memlimit="1000"/> <prover id="4" name="Z3" version="4.4.0" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="5" name="Alt-Ergo" version="1.01" timelimit="1" steplimit="0" memlimit="1000"/> <prover id="5" name="Alt-Ergo" version="1.01" timelimit="1" steplimit="0" memlimit="1000"/>
<file name="../bv.why" expanded="true"> <file name="../bv.why" expanded="true">
<theory name="CheckBV64" sum="a69e7936e9b3736b53a1a06d1557d503" expanded="true"> <theory name="CheckBV64" sum="a69e7936e9b3736b53a1a06d1557d503">
<goal name="ok_zero" expl=""> <goal name="ok_zero" expl="">
<proof prover="0"><result status="valid" time="0.02" steps="87"/></proof> <proof prover="0"><result status="valid" time="0.02" steps="87"/></proof>
<proof prover="1"><result status="valid" time="0.02"/></proof> <proof prover="1"><result status="valid" time="0.02"/></proof>
...@@ -208,19 +208,19 @@ ...@@ -208,19 +208,19 @@
<proof prover="3"><result status="timeout" time="0.92"/></proof> <proof prover="3"><result status="timeout" time="0.92"/></proof>
<proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof>
</goal> </goal>
<goal name="smoke6" expl="" expanded="true"> <goal name="smoke6" expl="">
<proof prover="0" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="0" timelimit="1"><result status="timeout" time="1.00"/></proof>
<proof prover="1"><result status="unknown" time="0.46"/></proof> <proof prover="1"><result status="unknown" time="0.46"/></proof>
<proof prover="2"><result status="unknown" time="0.00"/></proof> <proof prover="2"><result status="unknown" time="0.00"/></proof>
<proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof>
</goal> </goal>
<goal name="smoke7" expl="" expanded="true"> <goal name="smoke7" expl="">
<proof prover="0" timelimit="1"><result status="timeout" time="1.01"/></proof> <proof prover="0" timelimit="1"><result status="timeout" time="1.01"/></proof>
<proof prover="1"><result status="unknown" time="0.51"/></proof> <proof prover="1"><result status="unknown" time="0.51"/></proof>
<proof prover="2"><result status="unknown" time="0.01"/></proof> <proof prover="2"><result status="unknown" time="0.01"/></proof>
<proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof>
</goal> </goal>
<goal name="smoke8" expl="" expanded="true"> <goal name="smoke8" expl="">
<proof prover="0" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="0" timelimit="1"><result status="timeout" time="1.00"/></proof>
<proof prover="1"><result status="unknown" time="0.44"/></proof> <proof prover="1"><result status="unknown" time="0.44"/></proof>
<proof prover="2"><result status="unknown" time="0.00"/></proof> <proof prover="2"><result status="unknown" time="0.00"/></proof>
...@@ -382,7 +382,7 @@ ...@@ -382,7 +382,7 @@
<proof prover="4"><result status="valid" time="0.02"/></proof> <proof prover="4"><result status="valid" time="0.02"/></proof>
</goal> </goal>
</theory> </theory>
<theory name="CheckBV32" sum="9a0215c8a7245c48b487371f67df8950"> <theory name="CheckBV32" sum="9a0215c8a7245c48b487371f67df8950" expanded="true">
<goal name="ok_zero" expl=""> <goal name="ok_zero" expl="">
<proof prover="0"><result status="valid" time="0.03" steps="87"/></proof> <proof prover="0"><result status="valid" time="0.03" steps="87"/></proof>
<proof prover="1"><result status="valid" time="0.03"/></proof> <proof prover="1"><result status="valid" time="0.03"/></proof>
...@@ -596,15 +596,14 @@ ...@@ -596,15 +596,14 @@
<proof prover="3"><result status="timeout" time="0.96"/></proof> <proof prover="3"><result status="timeout" time="0.96"/></proof>
<proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof>
</goal> </goal>
<goal name="smoke8" expl=""> <goal name="smoke8" expl="" expanded="true">
<proof prover="0" timelimit="1"><result status="timeout" time="1.01"/></proof> <proof prover="0" timelimit="1"><result status="timeout" time="1.01"/></proof>
<proof prover="1"><result status="unknown" time="0.44"/></proof> <proof prover="1"><result status="unknown" time="0.44"/></proof>
<proof prover="2"><result status="unknown" time="0.00"/></proof> <proof prover="2"><result status="unknown" time="0.00"/></proof>
<proof prover="3"><result status="timeout" time="0.92"/></proof>
<proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof>
</goal> </goal>
</theory> </theory>
<theory name="CheckBV16" sum="b944f76414b884563c0502c12ba6dc16"> <theory name="CheckBV16" sum="b944f76414b884563c0502c12ba6dc16" expanded="true">
<goal name="ok_zero" expl=""> <goal name="ok_zero" expl="">
<proof prover="0"><result status="valid" time="0.04" steps="87"/></proof> <proof prover="0"><result status="valid" time="0.04" steps="87"/></proof>
<proof prover="1"><result status="valid" time="0.04"/></proof> <proof prover="1"><result status="valid" time="0.04"/></proof>
...@@ -784,7 +783,7 @@ ...@@ -784,7 +783,7 @@
<proof prover="3"><result status="timeout" time="0.96"/></proof> <proof prover="3"><result status="timeout" time="0.96"/></proof>
<proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof>
</goal> </goal>
<goal name="smoke3" expl=""> <goal name="smoke3" expl="" expanded="true">
<proof prover="0" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="0" timelimit="1"><result status="timeout" time="1.00"/></proof>
<proof prover="1"><result status="unknown" time="0.48"/></proof> <proof prover="1"><result status="unknown" time="0.48"/></proof>
<proof prover="2"><result status="unknown" time="0.01"/></proof> <proof prover="2"><result status="unknown" time="0.01"/></proof>
...@@ -818,15 +817,14 @@ ...@@ -818,15 +817,14 @@
<proof prover="3"><result status="timeout" time="0.95"/></proof> <proof prover="3"><result status="timeout" time="0.95"/></proof>
<proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof>
</goal> </goal>
<goal name="smoke8" expl=""> <goal name="smoke8" expl="" expanded="true">
<proof prover="0" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="0" timelimit="1"><result status="timeout" time="1.00"/></proof>
<proof prover="1"><result status="unknown" time="0.43"/></proof> <proof prover="1"><result status="unknown" time="0.43"/></proof>
<proof prover="2"><result status="unknown" time="0.00"/></proof> <proof prover="2"><result status="unknown" time="0.00"/></proof>
<proof prover="3"><result status="timeout" time="0.97"/></proof>
<proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof>
</goal> </goal>
</theory> </theory>
<theory name="CheckBV8" sum="05518dc91aa5666cf77ec6c0d7299767"> <theory name="CheckBV8" sum="05518dc91aa5666cf77ec6c0d7299767" expanded="true">
<goal name="ok_zero" expl=""> <goal name="ok_zero" expl="">
<proof prover="0"><result status="valid" time="0.04" steps="87"/></proof> <proof prover="0"><result status="valid" time="0.04" steps="87"/></proof>
<proof prover="1"><result status="valid" time="0.05"/></proof> <proof prover="1"><result status="valid" time="0.05"/></proof>
...@@ -1040,11 +1038,10 @@ ...@@ -1040,11 +1038,10 @@
<proof prover="3"><result status="timeout" time="0.94"/></proof> <proof prover="3"><result status="timeout" time="0.94"/></proof>
<proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof> <proof prover="4" timelimit="1"><result status="timeout" time="1.00"/></proof>
</goal> </goal>
<goal name="smoke8" expl=""> <goal name="smoke8" expl="" expanded="true">
<proof prover="0" timelimit="1"><result status="timeout" time="1.01"/></proof> <proof prover="0" timelimit="1"><result status="timeout" time="1.01"/></proof>
<proof prover="1"><result status="unknown" time="0.45"/></proof> <proof prover="1"><result status="unknown" time="0.45"/></proof>
<proof prover="2"><result status="unknown" time="0.01"/></proof> <proof prover="2"><result status="unknown" time="0.01"/></proof>
<proof prover="3"><result status="timeout" time="0.94"/></proof>
<proof prover="4" timelimit="1"><result status="timeout" time="0.99"/></proof> <proof prover="4" timelimit="1"><result status="timeout" time="0.99"/></proof>
</goal> </goal>
</theory> </theory>
......
...@@ -13,7 +13,6 @@ command = "%e -timelimit %t %f" ...@@ -13,7 +13,6 @@ command = "%e -timelimit %t %f"
command_steps = "%e -steps-bound %S %f" command_steps = "%e -steps-bound %S %f"
driver = "alt_ergo" driver = "alt_ergo"
editor = "altgr-ergo" editor = "altgr-ergo"
use_at_auto_level = 1
[ATP alt-ergo] [ATP alt-ergo]
name = "Alt-Ergo" name = "Alt-Ergo"
...@@ -28,6 +27,7 @@ command = "%e -timelimit %t %f" ...@@ -28,6 +27,7 @@ command = "%e -timelimit %t %f"
command_steps = "%e -steps-bound %S %f" command_steps = "%e -steps-bound %S %f"
driver = "alt_ergo" driver = "alt_ergo"
editor = "altgr-ergo" editor = "altgr-ergo"
use_at_auto_level = 1
[ATP alt-ergo] [ATP alt-ergo]
name = "Alt-Ergo" name = "Alt-Ergo"
......
...@@ -17,16 +17,27 @@ exception InvalidAnswer of string ...@@ -17,16 +17,27 @@ exception InvalidAnswer of string
let is_connected () = !socket <> None let is_connected () = !socket <> None
let client_connect socket_name = let client_connect ~fail socket_name =
if !socket <> None then raise AlreadyConnected; if !socket <> None then raise AlreadyConnected;
if Sys.os_type = "Win32" then begin try
let name = "\\\\.\\pipe\\" ^ socket_name in let sock =
socket := Some (Unix.openfile name [Unix.O_RDWR] 0) if Sys.os_type = "Win32" then
end else begin let name = "\\\\.\\pipe\\" ^ socket_name in
let sock = Unix.socket Unix.PF_UNIX Unix.SOCK_STREAM 0 in Unix.openfile name [Unix.O_RDWR] 0
Unix.connect sock (Unix.ADDR_UNIX socket_name); else
let sock = Unix.socket Unix.PF_UNIX Unix.SOCK_STREAM 0 in
Unix.connect sock (Unix.ADDR_UNIX socket_name);
sock
in
socket := Some sock socket := Some sock
end with
| Unix.Unix_error(err, func, arg) when fail ->
Format.eprintf "client_connect: connection failed: %s (%s,%s) (socket_name=%s)@." (Unix.error_message err) func arg socket_name;
exit 2
| e when fail ->
Format.eprintf "client_connect failed for some unexpected reason: %s@\nAborting.@."
(Printexc.to_string e);
exit 2
let client_disconnect () = let client_disconnect () =
match !socket with match !socket with
...@@ -86,7 +97,7 @@ let recv_buf : Buffer.t = Buffer.create 1024 ...@@ -86,7 +97,7 @@ let recv_buf : Buffer.t = Buffer.create 1024
let connect_external socket_name = let connect_external socket_name =
if is_connected () then raise AlreadyConnected; if is_connected () then raise AlreadyConnected;
Buffer.clear recv_buf; Buffer.clear recv_buf;
client_connect socket_name client_connect ~fail:true socket_name
let connect_internal () = let connect_internal () =
if is_connected () then raise AlreadyConnected; if is_connected () then raise AlreadyConnected;
...@@ -104,11 +115,11 @@ let connect_internal () = ...@@ -104,11 +115,11 @@ let connect_internal () =
Unix.chdir cwd; Unix.chdir cwd;
(* sleep before connecting, or the server will not be ready yet *) (* sleep before connecting, or the server will not be ready yet *)
let rec try_connect n d = let rec try_connect n d =
if n <= 0 then client_connect socket_name else if n <= 0 then client_connect ~fail:true socket_name else
try client_connect socket_name with _ -> try client_connect ~fail:false socket_name with _ ->
ignore (Unix.select [] [] [] d); ignore (Unix.select [] [] [] d);
try_connect (pred n) (d *. 4.0) in try_connect (pred n) (d *. 4.0) in
try_connect 4 0.1; (* 0.1, 0.4, 1.6, 6.4 *) try_connect 5 0.1; (* 0.1, 0.4, 1.6, 6.4, 25.6 *)
at_exit (fun () -> (* only if succesfully connected *) at_exit (fun () -> (* only if succesfully connected *)
(try client_disconnect () with NotConnected -> ()); (try client_disconnect () with NotConnected -> ());
ignore (Unix.waitpid [] pid)) ignore (Unix.waitpid [] pid))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment