| author | blanchet |
| Wed, 08 Jun 2011 08:47:43 +0200 | |
| changeset 43261 | a4aeb26a6362 |
| parent 32675 | 5fe601aff9be |
| permissions | -rwxr-xr-x |
|
32593
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
1 |
#!/usr/bin/perl -w |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
2 |
# |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
3 |
# eproof - run E and translate its output into TSTP format |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
4 |
# |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
5 |
# Author: Sascha Boehme, TU Muenchen |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
6 |
# |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
7 |
# This script is a port of a Bash script with the same name coming with |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
8 |
# E 1.0-004 (written by Stephan Schulz). |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
9 |
# |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
10 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
11 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
12 |
use File::Basename qw/ dirname /; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
13 |
use File::Temp qw/ tempfile /; |
| 32675 | 14 |
use English; |
|
32593
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
15 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
16 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
17 |
# E executables |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
18 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
19 |
my $edir = dirname($0); |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
20 |
my $eprover = "$edir/eprover"; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
21 |
my $epclextract = "$edir/epclextract"; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
22 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
23 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
24 |
# build E command from given commandline arguments |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
25 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
26 |
my $format = ""; |
|
32595
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
27 |
my $timelimit = 2000000000; # effectively unlimited |
|
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
28 |
|
|
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
29 |
my $eprover_cmd = "'$eprover'"; |
|
32593
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
30 |
foreach (@ARGV) {
|
|
32595
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
31 |
if (m/--cpu-limit=([0-9]+)/) {
|
|
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
32 |
$timelimit = $1; |
|
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
33 |
} |
|
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
34 |
|
|
32593
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
35 |
if (m/--tstp-out/) {
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
36 |
$format = $_; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
37 |
} |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
38 |
else {
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
39 |
$eprover_cmd = "$eprover_cmd '$_'"; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
40 |
} |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
41 |
} |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
42 |
$eprover_cmd = "$eprover_cmd -l4 -R -o- --pcl-terms-compressed --pcl-compact"; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
43 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
44 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
45 |
# run E, redirecting output into a temporary file |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
46 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
47 |
my ($fh, $filename) = tempfile(UNLINK => 1); |
| 32675 | 48 |
my $r = system "$eprover_cmd > '$filename'"; |
|
32593
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
49 |
exit ($r >> 8) if $r != 0; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
50 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
51 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
52 |
# analyze E output |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
53 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
54 |
my @lines = <$fh>; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
55 |
my $content = join "", @lines[-60 .. -1]; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
56 |
# Note: Like the original eproof, we only look at the last 60 lines. |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
57 |
|
|
32595
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
58 |
if ($content =~ m/Total time\s*:\s*([0-9]+\.[0-9]+)/) {
|
| 32675 | 59 |
$timelimit = int($timelimit - $1 - 1); |
|
32595
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
60 |
|
|
32593
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
61 |
if ($content =~ m/No proof found!/) {
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
62 |
print "# Problem is satisfiable (or invalid), " . |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
63 |
"generating saturation derivation\n"; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
64 |
} |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
65 |
elsif ($content =~ m/Proof found!/) {
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
66 |
print "# Problem is unsatisfiable (or provable), " . |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
67 |
"constructing proof object\n"; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
68 |
} |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
69 |
elsif ($content =~ m/Watchlist is empty!/) {
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
70 |
print "# All watchlist clauses generated, constructing derivation\n"; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
71 |
} |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
72 |
else {
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
73 |
print "# Cannot determine problem status\n"; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
74 |
exit $r; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
75 |
} |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
76 |
} |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
77 |
else {
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
78 |
print "# Cannot determine problem status within resource limit\n"; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
79 |
exit $r; |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
80 |
} |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
81 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
82 |
|
|
32595
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
83 |
# translate E output |
|
32593
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
84 |
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
85 |
foreach (@lines) {
|
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
86 |
print if (m/# SZS status/ or m/"# Failure"/); |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
87 |
} |
|
32595
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
88 |
$r = system ("exec bash -c \"ulimit -S -t $timelimit; " .
|
| 32675 | 89 |
"'$epclextract' $format -f --competition-framing '$filename'\""); |
|
32595
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
90 |
# Note: Setting the user time is not supported on Cygwin, i.e., ulimit fails |
|
2953c3917e21
added time limit for extraction phase (not supported on Cygwin)
boehmes
parents:
32593
diff
changeset
|
91 |
# and prints and error message. How could we then limit the execution time? |
|
32593
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
92 |
exit ($r >> 8); |
|
3711565687a6
undo changes from revision 719426c9e1eb: removed Perl script for ATP invocation, measuring time using Bash-builtin "time";
boehmes
parents:
diff
changeset
|
93 |