src/HOL/Tools/ATP/SpassCommunication.ML
author wenzelm
Mon, 29 Aug 2005 16:18:04 +0200
changeset 17184 3d80209e9a53
parent 16767 2d4433759b8d
child 17231 f42bc4f7afdf
permissions -rw-r--r--
use AList operations;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
     1
(*  Title:      SpassCommunication.ml
15789
4cb16144c81b added hearder lines and deleted some redundant material
paulson
parents: 15787
diff changeset
     2
    ID:         $Id$
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
     3
    Author:     Claire Quigley
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
     4
    Copyright   2004  University of Cambridge
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
     5
*)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
     6
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
     7
(***************************************************************************)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
     8
(*  Code to deal with the transfer of proofs from a Spass process          *)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
     9
(***************************************************************************)
16156
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    10
signature SPASS_COMM =
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    11
  sig
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    12
    val reconstruct : bool ref
16478
d0a1f6231e2f Added VampCommunication.ML.
quigley
parents: 16357
diff changeset
    13
    val spass: bool ref
16156
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    14
    val getSpassInput : TextIO.instream -> string * string * string
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    15
    val checkSpassProofFound:  TextIO.instream * TextIO.outstream * Posix.Process.pid * string * 
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    16
                               string *string * Thm.thm * int *(ResClause.clause * Thm.thm) Array.array  * int -> bool
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    17
    
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    18
  end;
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    19
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    20
structure SpassComm :SPASS_COMM =
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    21
struct
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    22
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    23
(* switch for whether to reconstruct a proof found, or just list the lemmas used *)
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    24
val reconstruct = ref true;
16478
d0a1f6231e2f Added VampCommunication.ML.
quigley
parents: 16357
diff changeset
    25
val spass = ref true;
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    26
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    27
(***********************************)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    28
(*  Write Spass   output to a file *)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    29
(***********************************)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    30
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    31
fun logSpassInput (instr, fd) = let val thisLine = TextIO.inputLine instr 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    32
			 in if thisLine = "--------------------------SPASS-STOP------------------------------\n" 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    33
			    then TextIO.output (fd, thisLine)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    34
      			  else (
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    35
				TextIO.output (fd, thisLine); logSpassInput (instr,fd))
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    36
 			 end;
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    37
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    38
(**********************************************************************)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    39
(*  Reconstruct the Spass proof w.r.t. thmstring (string version of   *)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    40
(*  Isabelle goal to be proved), then transfer the reconstruction     *)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    41
(*  steps as a string to the input pipe of the main Isabelle process  *)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    42
(**********************************************************************)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    43
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    44
16520
7a9cda53bfa2 Integrated vampire lemma code.
quigley
parents: 16478
diff changeset
    45
val atomize_tac =    SUBGOAL
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    46
     (fn (prop,_) =>
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    47
	 let val ts = Logic.strip_assums_hyp prop
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    48
	 in EVERY1 
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    49
		[METAHYPS
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    50
		     (fn hyps => (cut_facts_tac (map (ObjectLogic.atomize_thm o forall_intr_vars) hyps) 1)),
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    51
	  REPEAT_DETERM_N (length ts) o (etac thin_rl)]
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    52
     end);
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    53
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    54
15919
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
    55
fun reconstruct_tac proofextract thmstring goalstring toParent ppid sg_num clause_arr  (num_of_clauses:int ) = 
16259
aed1a8ae4b23 File.platform_path;
wenzelm
parents: 16156
diff changeset
    56
 let val foo =   TextIO.openOut( File.platform_path(File.tmp_path (Path.basic"foobar3")));
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    57
 in
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    58
SELECT_GOAL
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    59
  (EVERY1 [rtac ccontr,atomize_tac, skolemize_tac, 
16156
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    60
  METAHYPS(fn negs => (if !reconstruct 
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    61
		       then 
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    62
			   Recon_Transfer.spassString_to_reconString proofextract thmstring goalstring 
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    63
								     toParent ppid negs clause_arr  num_of_clauses 
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    64
		       else
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    65
			   Recon_Transfer.spassString_to_lemmaString proofextract thmstring goalstring 
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
    66
								     toParent ppid negs clause_arr  num_of_clauses ))]) sg_num	
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    67
 end ;
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    68
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    69
15919
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
    70
fun transferSpassInput (fromChild, toParent, ppid,thmstring,goalstring, currentString, thm, sg_num,clause_arr,  num_of_clauses) = let 
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    71
                         val thisLine = TextIO.inputLine fromChild 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    72
			 in 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    73
                            if (thisLine = "--------------------------SPASS-STOP------------------------------\n" )
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    74
			    then ( 
15684
5ec4d21889d6 Reconstruction code, now packaged to avoid name clashes
paulson
parents: 15658
diff changeset
    75
                                    let val proofextract = Recon_Parse.extract_proof (currentString^thisLine)
16259
aed1a8ae4b23 File.platform_path;
wenzelm
parents: 16156
diff changeset
    76
                                        val foo =   TextIO.openOut( File.platform_path(File.tmp_path (Path.basic"foobar2")));
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    77
                                
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    78
			            in 
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    79
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    80
                                        TextIO.output(foo,(proofextract));TextIO.closeOut foo;
15919
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
    81
                                        reconstruct_tac proofextract thmstring goalstring toParent ppid sg_num  clause_arr  num_of_clauses thm
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    82
                                               
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    83
                                    end
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    84
                                  )
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    85
      			    else (
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    86
				
15919
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
    87
                                transferSpassInput (fromChild, toParent, ppid,thmstring, goalstring,(currentString^thisLine), thm, sg_num, clause_arr,  num_of_clauses)
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    88
                                )
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    89
 			 end;
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    90
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    91
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
    92
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    93
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    94
(*********************************************************************************)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    95
(*  Inspect the output of a Spass   process to see if it has found a proof,      *)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    96
(*  and if so, transfer output to the input pipe of the main Isabelle process    *)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    97
(*********************************************************************************)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    98
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
    99
 
15919
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
   100
fun startSpassTransfer (fromChild, toParent, ppid, thmstring,goalstring,childCmd,thm, sg_num,clause_arr, num_of_clauses) = 
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   101
                                      (*let val _ = Posix.Process.wait ()
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   102
                                      in*)
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
   103
                                       
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   104
                                       if (isSome (TextIO.canInput(fromChild, 5)))
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   105
                                       then
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   106
                                       (
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   107
                                       let val thisLine = TextIO.inputLine fromChild  
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   108
                                           in                 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   109
                                             if (String.isPrefix "Here is a proof" thisLine )
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   110
                                             then     
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   111
                                              ( 
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
   112
                                                 let 
16259
aed1a8ae4b23 File.platform_path;
wenzelm
parents: 16156
diff changeset
   113
                                               val outfile =  TextIO.openAppend(File.platform_path(File.tmp_path (Path.basic "foo_transfer")));
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
   114
                                               val _=  TextIO.output (outfile, "about to transfer proof, thm is: "^(string_of_thm thm));
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
   115
                                               val _ =  TextIO.closeOut outfile;
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
   116
                                               in
15919
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
   117
                                                transferSpassInput (fromChild, toParent, ppid,thmstring, goalstring,thisLine, thm, sg_num,clause_arr,  num_of_clauses);
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
   118
                                                true
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
   119
                                               end)
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   120
                                             
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   121
                                             else 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   122
                                                (
15919
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
   123
                                                 startSpassTransfer (fromChild, toParent, ppid, thmstring, goalstring,childCmd, thm, sg_num,clause_arr, num_of_clauses)
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   124
                                                )
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   125
                                            end
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   126
                                           )
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   127
                                         else (false)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   128
                                     (*  end*)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   129
15919
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
   130
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
   131
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
   132
fun checkSpassProofFound (fromChild, toParent, ppid,thmstring,goalstring, childCmd, thm, sg_num, clause_arr,  (num_of_clauses:int )) = 
16259
aed1a8ae4b23 File.platform_path;
wenzelm
parents: 16156
diff changeset
   133
                                       let val spass_proof_file =  TextIO.openAppend(File.platform_path(File.tmp_path (Path.basic "spass_proof")))
aed1a8ae4b23 File.platform_path;
wenzelm
parents: 16156
diff changeset
   134
                                            val  outfile = TextIO.openOut(File.platform_path(File.tmp_path (Path.basic "foo_checkspass")));                                                                            
16156
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   135
                                            val _ = TextIO.output (outfile, "checking if proof found, thm is: "^(string_of_thm thm))
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   136
                                             
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   137
                                            val _ =  TextIO.closeOut outfile
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   138
                                       in 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   139
                                       if (isSome (TextIO.canInput(fromChild, 5)))
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   140
                                       then
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   141
                                       (
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   142
                                       let val thisLine = TextIO.inputLine fromChild  
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   143
                                           in if ( thisLine = "SPASS beiseite: Proof found.\n" )
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   144
                                              then      
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   145
                                              (  
16548
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   146
                                                 let val  outfile = TextIO.openAppend(File.platform_path(File.tmp_path (Path.basic "foo_proof")));                                                                                (*val _ =  Posix.Process.sleep(Time.fromSeconds 3 );*)
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   147
                                                     val _ = TextIO.output (outfile, (thisLine))
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   148
                                             
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   149
                                                     val _ =  TextIO.closeOut outfile
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   150
                                                 in 
15919
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
   151
                                                    startSpassTransfer (fromChild, toParent, ppid, thmstring,goalstring,childCmd, thm, sg_num, clause_arr,  num_of_clauses) 
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   152
                                                 end
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   153
                                               )   
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   154
                                               else if (thisLine= "SPASS beiseite: Completion found.\n" )
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   155
                                                   then  
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   156
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   157
                                                 (
16548
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   158
                                                      let    val  outfile = TextIO.openAppend(File.platform_path(File.tmp_path (Path.basic "foo_proof")));                                                                               (* val _ =  Posix.Process.sleep(Time.fromSeconds 3 );*)
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   159
                                                             val _ = TextIO.output (outfile, (thisLine))
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   160
                                             
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   161
                                                             val _ =  TextIO.closeOut outfile
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   162
                                                      in
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   163
                                                       
16156
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   164
                                                        TextIO.output (toParent,childCmd^"\n" );
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   165
                                                        TextIO.flushOut toParent;
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   166
                                                        TextIO.output (spass_proof_file, (thisLine));
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   167
                                                        TextIO.flushOut spass_proof_file;
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   168
                                                        TextIO.closeOut spass_proof_file;
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   169
                                                        (*TextIO.output (toParent, thisLine);
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   170
                                                        TextIO.flushOut toParent;
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   171
                                                        TextIO.output (toParent, "bar\n");
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   172
                                                        TextIO.flushOut toParent;*)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   173
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   174
                                                       TextIO.output (toParent, thisLine^"\n");
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   175
                                                       TextIO.flushOut toParent;
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   176
                                                       TextIO.output (toParent, thmstring^"\n");
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   177
                                                       TextIO.flushOut toParent;
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   178
                                                       TextIO.output (toParent, goalstring^"\n");
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   179
                                                       TextIO.flushOut toParent;
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   180
                                                       Posix.Process.kill(Posix.Process.K_PROC ppid, Posix.Signal.usr2);
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   181
                                                       (* Attempt to prevent several signals from turning up simultaneously *)
15787
8fad4bd4e53c improved SML/NJ compatibility, etc.
paulson
parents: 15782
diff changeset
   182
                                                       Posix.Process.sleep(Time.fromSeconds 1);
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   183
                                                        true  
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   184
                                                      end) 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   185
                                                     else if ( thisLine = "SPASS beiseite: Ran out of time.\n" ) 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   186
                                                          then  
16548
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   187
                                                		( let val  outfile = TextIO.openAppend(File.platform_path(File.tmp_path (Path.basic "foo_proof")));                                          	(*val _ =  Posix.Process.sleep(Time.fromSeconds 3 );*)
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   188
                                                     		val _ = TextIO.output (outfile, (thisLine))
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   189
                                             	
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   190
                                                    
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   191
                                                     		in TextIO.output (toParent, thisLine^"\n");
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   192
                                                     		  TextIO.flushOut toParent;
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   193
                                                     		  TextIO.output (toParent, thmstring^"\n");
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   194
                                                     		  TextIO.flushOut toParent;
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   195
                                                     		  TextIO.output (toParent, goalstring^"\n");
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   196
                                                     		  TextIO.flushOut toParent;
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   197
                                                     		  Posix.Process.kill(Posix.Process.K_PROC ppid, Posix.Signal.usr2);
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   198
                                                    		  TextIO.output (outfile, ("signalled parent\n"));TextIO.closeOut outfile;
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   199
16548
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   200
                                                	       (* Attempt to prevent several signals from turning up simultaneously *)
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   201
                                                       		Posix.Process.sleep(Time.fromSeconds 1);
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   202
                                                       		 true 
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   203
                                                       		end)
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   204
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   205
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   206
 
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   207
                                                    else if ( thisLine = "SPASS beiseite: Maximal number of loops exceeded.\n" )                                                           		    then
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   208
                                                 (
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   209
                                                        Posix.Process.kill(Posix.Process.K_PROC ppid, Posix.Signal.usr2);
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   210
                                                        TextIO.output (toParent,childCmd^"\n" );
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   211
                                                        TextIO.flushOut toParent;
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   212
                                                        TextIO.output (toParent, thisLine);
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   213
                                                        TextIO.flushOut toParent;
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   214
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   215
                                                        true)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   216
                                                    else
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   217
                                                       (TextIO.output (spass_proof_file, (thisLine));
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   218
                                                       TextIO.flushOut spass_proof_file;
15919
b30a35432f5a Replaced reference to SPASS with general one - set SPASS_HOME in settings file.
quigley
parents: 15789
diff changeset
   219
                                                       checkSpassProofFound  (fromChild, toParent, ppid, thmstring,goalstring,childCmd, thm, sg_num, clause_arr,  num_of_clauses))
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   220
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   221
                                              end
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   222
                                          )
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   223
                                         else 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   224
                                             (TextIO.output (spass_proof_file, ("No proof output seen \n"));TextIO.closeOut spass_proof_file;false)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   225
                                      end
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   226
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   227
  
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   228
(***********************************************************************)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   229
(*  Function used by the Isabelle process to read in a spass proof   *)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   230
(***********************************************************************)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   231
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   232
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   233
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   234
fun getSpassInput instr = if (isSome (TextIO.canInput(instr, 2)))
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   235
                          then
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   236
                               let val thisLine = TextIO.inputLine instr 
16357
f1275d2a1dee All subgoals sent to the watcher at once now.
quigley
parents: 16259
diff changeset
   237
                                   val  outfile = TextIO.openAppend(File.platform_path(File.tmp_path (Path.basic "foo_thisLine")));                                                                     val _ = TextIO.output (outfile, (thisLine))
f1275d2a1dee All subgoals sent to the watcher at once now.
quigley
parents: 16259
diff changeset
   238
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   239
                                             
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   240
                                   val _ =  TextIO.closeOut outfile
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   241
			       in 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   242
                                     if ( (substring (thisLine, 0,1))= "[")
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   243
                                     then 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   244
			                 (*Pretty.writeln(Pretty.str (thisLine))*)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   245
                                             let val reconstr = thisLine
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   246
                                                 val thmstring = TextIO.inputLine instr 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   247
                                                 val goalstring = TextIO.inputLine instr   
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   248
                                             in
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   249
                                                 (reconstr, thmstring, goalstring)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   250
                                             end
16548
aa36ae6b955e Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers.
quigley
parents: 16520
diff changeset
   251
                                     else if (String.isPrefix "SPASS beiseite:" thisLine ) 
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   252
                                          then 
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   253
                                          (
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   254
                                             let val reconstr = thisLine
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   255
                                                 val thmstring = TextIO.inputLine instr
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   256
                                                 val goalstring = TextIO.inputLine instr
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   257
                                             in
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   258
                                                 (reconstr, thmstring, goalstring)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   259
                                             end
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   260
                                          )
16156
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   261
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   262
					else if (String.isPrefix   "Rules from"  thisLine)
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   263
                                        then 
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   264
                                          (
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   265
                                             let val reconstr = thisLine
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   266
                                                 val thmstring = TextIO.inputLine instr
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   267
                                                 val goalstring = TextIO.inputLine instr
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   268
                                             in
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   269
                                                 (reconstr, thmstring, goalstring)
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   270
                                             end
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   271
                                          )
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   272
16357
f1275d2a1dee All subgoals sent to the watcher at once now.
quigley
parents: 16259
diff changeset
   273
                                         else if ((substring (thisLine, 0,5)) = "Proof") 
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   274
                                              then
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   275
  						(
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   276
						   let val reconstr = thisLine
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   277
                                                       val thmstring = TextIO.inputLine instr
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   278
                                                       val goalstring = TextIO.inputLine instr
16259
aed1a8ae4b23 File.platform_path;
wenzelm
parents: 16156
diff changeset
   279
						      val  outfile = TextIO.openOut(File.platform_path(File.tmp_path (Path.basic "foo_getSpass")));
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   280
                                    		val _ = TextIO.output (outfile, (thisLine))
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   281
                                     			 val _ =  TextIO.closeOut outfile
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   282
                                                   in
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   283
                                                      (reconstr, thmstring, goalstring)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   284
                                                   end
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   285
						)
16767
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   286
                                        else if ((substring (thisLine, 0,1)) = "%") 
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   287
                                              then
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   288
  						(
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   289
						   let val reconstr = thisLine
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   290
                                                       val thmstring = TextIO.inputLine instr
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   291
                                                       val goalstring = TextIO.inputLine instr
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   292
						      val  outfile = TextIO.openOut(File.platform_path(File.tmp_path (Path.basic "foo_getSpass")));
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   293
                                    		val _ = TextIO.output (outfile, (thisLine))
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   294
                                     			 val _ =  TextIO.closeOut outfile
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   295
                                                   in
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   296
                                                      (reconstr, thmstring, goalstring)
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   297
                                                   end
2d4433759b8d Fixed some problems with the signal handler.
quigley
parents: 16548
diff changeset
   298
						)
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   299
                                        	 else
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   300
                                                     getSpassInput instr
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   301
                                            
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   302
 			        end
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   303
                          else 
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
   304
                              ("No output from reconstruction process.\n","","")
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   305
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   306
16156
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   307
end;