src/HOL/Tools/ATP/SpassCommunication.ML
author quigley
Wed, 22 Jun 2005 20:26:31 +0200
changeset 16548 aa36ae6b955e
parent 16520 7a9cda53bfa2
child 16767 2d4433759b8d
permissions -rw-r--r--
Temporarily removed Rewrite from the translation code so that parsing with work on lists of numbers. Will now signal if ATP has run out of time and then kill the watcher.
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
						)
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   286
                                        	 else
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   287
                                                     getSpassInput instr
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   288
                                            
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   289
 			        end
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   290
                          else 
15782
a1863ea9052b Corrected the problem with the ATP directory.
quigley
parents: 15684
diff changeset
   291
                              ("No output from reconstruction process.\n","","")
15642
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   292
028059faa963 *** empty log message ***
quigley
parents:
diff changeset
   293
16156
2f6fc19aba1e Fixed array containing clasimpset rules. Added flags to turn on and off reconstruction and full spass
quigley
parents: 15919
diff changeset
   294
end;