Prover9 Manual | Version 2009-11A |
A graphical user interface (GUI) for Prover9 is under development, but it is not described in this manual. Nearly all of the information in this manual applies also when using the GUI.
formulas(sos). all x all y (subset(x,y) <-> (all z (member(z,x) -> member(z,y)))). end_of_list. formulas(goals). all x all y all z (subset(x,y) & subset(y,z) -> subset(x,z)). end_of_list.
prover9 -f subset_trans.in > subset_trans.outWhen you run the preceding command, a message like the following should appear immediately on your screen.
-------- Proof 1 -------- THEOREM PROVED ------ process 3666 exit (max_proofs) ------The output file subset_trans.out should contain the proof (and a lot of other information about the job).
Prover9 jobs can be run in a slightly different way, taking input from "standard input" instead of a named file, as follows.
prover9 < subset_trans.in > subset_trans.out2The disadvantage of using this method is that the name of the input file is not given in the output file.
The input can occur in more than one file:
prover9 -f subset.in trans.in > subset_trans.out3All arguments after the "-f" are taken as input filenames, and there can be as many as you like. When multiple filnames are given on the command line, a list of objects (clauses, formulas, or terms) cannot be split across more than one file.
prover9 -t 10 -f subset_trans.in > subset_trans.out4If "-t" and "-f" are both in the command, the "-t" must occur first.
If a Prover9 process is running in the background, one can tell it to send search statistics (without killing the job) to the output file sending a "USR1" signal to the process. For example,
% prover9 -f p3a.in > p3a.outb & [1] 31613 % kill -USR1 31613 A report (17.75 seconds) has been sent to the output.
If Prover9 is called from another program (e.g., a shell script, a Perl script, or a Python script), Prover9's exit codes can tell the other program the reason Prover9 terminates. The following table shows the exit codes.
Exit Code | Reason for Termination |
---|---|
0 (MAX_PROOFS) | The specified number of proofs (max_proofs) was found. |
1 (FATAL) | A fatal error occurred (user's syntax error or Prover9's bug). |
2 (SOS_EMPTY) | Prover9 ran out of things to do (sos list exhausted). |
3 (MAX_MEGS) | The max_megs (memory limit) parameter was exceeded. |
4 (MAX_SECONDS) | The max_seconds parameter was exceeded. |
5 (MAX_GIVEN) | The max_given parameter was exceeded. |
6 (MAX_KEPT) | The max_kept parameter was exceeded. |
7 (ACTION) | A Prover9 action terminated the search. |
101 (SIGINT) | Prover9 received an interrupt signal. |
102 (SIGSEGV) | Prover9 crashed, most probably due to a bug. |
The calling program will probably want to look in Prover9's output, for example, to extract a proof. See the page on Prover9 output files.