contrib/SystemOnTPTP/remote
author immler@in.tum.de
Wed, 14 Jan 2009 20:19:47 +0100
changeset 29588 6cccea7c94d4
parent 29587 96599d8d8268
child 29590 479a2fce65e6
permissions -rwxr-xr-x
removed useless
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28573
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
     1
#!/usr/bin/env perl
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
     2
#
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
     3
# Wrapper for custom remote provers on SystemOnTPTP
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
     4
# Author: Fabian Immler, TU Muenchen
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
     5
#
29587
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
     6
# Usage: ./remote prover timelimit problemfile
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
     7
# 
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
     8
# where prover should be the name of the System from http://www.cs.miami.edu/~tptp/cgi-bin/SystemOnTPTP
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
     9
# tested and working with the standard settings: 
28573
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    10
#
29587
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
    11
# ./remote Vampire---9.0 timelimit file
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
    12
# ./remote SPASS---3.01 timelimit file
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
    13
# ./remote EP---1.0 timelimit file
28573
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    14
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    15
use warnings;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    16
use strict;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    17
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    18
use Getopt::Std;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    19
use HTTP::Request::Common;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    20
use LWP::UserAgent;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    21
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    22
# address of proof-server
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    23
my $SystemOnTPTPFormReplyURL = "http://www.cs.miami.edu/~tptp/cgi-bin/SystemOnTPTPFormReply";
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    24
29587
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
    25
if(scalar(@ARGV) != 3) {
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
    26
    print "usage: ";
28573
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    27
    exit -1;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    28
}
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    29
my $prover = shift(@ARGV);
29587
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
    30
my $timelimit = shift(@ARGV);
28573
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    31
my $problem = [shift(@ARGV)];
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    32
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    33
# fill in form
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    34
my %URLParameters = (
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    35
    "NoHTML" => 1,
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    36
    "QuietFlag" => "-q01",
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    37
    "X2TPTP" => "-S",
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    38
    "SubmitButton" => "RunSelectedSystems",
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    39
    "ProblemSource" => "UPLOAD",
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    40
    "UPLOADProblem" => $problem,
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    41
    "System___$prover" => "$prover",
29587
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
    42
    "TimeLimit___$prover" => "$timelimit",
28573
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    43
);
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    44
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    45
# Query Server
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    46
my $Agent = LWP::UserAgent->new;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    47
my $Request = POST($SystemOnTPTPFormReplyURL,
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    48
	Content_Type => 'form-data',Content => \%URLParameters);
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    49
my $Response = $Agent->request($Request);
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    50
  
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    51
#catch errors, let isabelle/watcher know
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    52
if($Response->is_success && $Response->content !~ /NO SOLUTION OUTPUT BY SYSTEM/
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    53
&& $Response->content =~ m/%\s*Result\s*:\s*Unsatisfiable.*?\n%\s*Output\s*:\s*.*?Refutation.*?\n/){
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    54
    # convert to isabelle-friendly format
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    55
    my @lines = split( /%\s*Result\s*:\s*Unsatisfiable.*?\n%\s*Output\s*:\s*.*?Refutation.*?\n/, $Response->content);
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    56
    @lines = split( /\n/, $lines[1]);    my $extract = "";
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    57
    my $inproof = 0 > 1;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    58
    my $ende = 0 > 1;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    59
    foreach my $line (@lines){
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    60
        if(! $ende){
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    61
            #ignore comments
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    62
            if(! $inproof){
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    63
                if ($line !~ /^%/ && !($line eq "")) {
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    64
                    $extract .= "$line";
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    65
                    $inproof = 1;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    66
                }
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    67
            } else {
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    68
                if ($line !~ /^%/) {
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    69
                    $extract .= "$line";
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    70
                } else {
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    71
                    $ende = 1;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    72
                }
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    73
            }
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    74
        }
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    75
    }
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    76
    # insert newlines after '.'
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    77
    $extract =~ s/\s//g;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    78
    $extract =~ s/\)\.cnf/\)\.\ncnf/g;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    79
    print "# SZS output start CNFRefutation.\n";
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    80
    print "$extract\n";
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    81
    print "# SZS output end CNFRefutation.\n";
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    82
} else {
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    83
	print "HTTP-Request: " . $Response->message;
29587
96599d8d8268 simplified usage of remote-script; added compatible remote-atps
immler@in.tum.de
parents: 28573
diff changeset
    84
	print "\nResponse: " . $Response->content;
28573
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    85
	print "\nCANNOT PROVE: \n";
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    86
  print $Response->content;
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    87
}
6403f0e16269 ** Update from Fabian **
wenzelm
parents:
diff changeset
    88