An efficient SAT-based theorem prover for Intuitionistic Propostional Logic [1].
It is implemented on the top of the prover intuit by Claessen and Rosen.
In the directory documents you can find:
The directory examples contains the output files generated by
intuitR
with the formulas χ and ψ defined in Examples 1 and 2 [1].
An implementation of intuit
with the trace of computations and the
construction of derivations/countermodels is available at the
directory intuitT (see the corresponding README file).
[1] Fiorentini Camillo. Efficient SAT-based Proof Search in Intuitionistic Propositional Logic. In: Platzer A., Sutcliffe G. (eds) Automated Deduction – CADE 28. CADE 2021. LNCS, vol 12699. Springer, Cham (2021).
https://doi.org/10.1007/978-3-030-79876-5_13 (Open Access)
You have to install the Haskell toolchain (see the section Installation instructions), in particular:
- GHC: the Glasgow Haskell Compiler
- cabal-install: the Cabal installation tool for managing Haskell software.
From the root directory (i.e., the directory containing the file intuitR.cabal
) run the command:
cabal install
It should be printed a message like this:
....
Symlinking 'intuitR' to '/myHome/.cabal/bin/intuitR'
This means that intuitR
is the command to launch the prover. Actually,
intuitR
is a symbolic link to /myHome/.cabal/bin/intuitR
; if
the command intuitR
is not found you have to add the directory /myHome/.cabal/bin/
to
your PATH
variable (or write the complete path of the command).
To print the usage help:
intuitR -h
The input formula must be written in a text file. A formula F
is specified by the following syntax:
F := atom // prop. variable
| $false // false
| ~F // not
| F & F // and
| F | F // or
| F => F // implication
| F <=> F // bi-implication
Examples of formulas:
(a => b) | ( b => a )
a | (a => b | ~b)
~ a | ~~a
( ((a1 <=> a2) => a1 & a2 & a3) & ((a2 <=> a3) => a1 & a2 & a3) & (( a3 <=> a1) => a1 & a2 & a3 ) ) => a1 & a2 & a3
You can also use the TPTP syntax;
the files chi.p
and psi.p
in the directory test
encodes the formulas χ and ψ in TPTP syntax (see Examples 1 and 2).
The files .p in the directory Benchmarks are written in TPTP syntax.
To decide the validity of the formula in the file form.p
, run the command:
intuitR form.p
To generate the output files with the trace of the computation and the derivation or countermodel:
intuitR -t form.p
A directory out-... will be created containing the source files (.tex and .gv).
To compile them, move into such a directory and enter the command make
.
Note that:
-
files .tex are compiled using
pdflatex
; derivations are built using the Latex package proof. -
files .gv are compiled using the command
dot
of Graphviz - Graph Visualization Software.
Both the commands pdflatex
and dot
must be in your PATH variable.
If something goes wrong, try to execute the commands:
pdflatex your_file.tex
dot your_file.gv -Tpng -o out.png
We have implemented four different trace levels:
intuitR -t0 form.p // minimum trace level, no output files
intuitR -t1 form.p // medium trace level, no output files
intuitR -t2 form.p // maximum trace level, no output files
intuitR -t form.p // maximum trace level with output files
The directory Benchmarks
contains the files corresponding to the 1200 problems used in the
experiments (actually, the 28 problems not solved by intuitR
and
intuit
within 600secs have been moved into the subdirectory
_other_benckmarks_SYJ202).
To run the benchmarks and get e report, from your local directory
script
run the commands run_benchmarks.sh
and build_report.sh
;
both commands need as parameter the timeout to be used (in seconds).
For instance, if the timeout is 600 secs run:
run_benchmarks.sh 600
build_report.sh 600
Note that command intuitR
must be in your PATH variable.
If you have installed intuit,
the script also performs the tests with intuit
.
To translate the benchmarks into fCube and IntHistGC syntax, run:
generate_fCube_benchmarks.sh
generate_IntHistGC_benchmarks.sh
Both scripts invoke intuitR
.
The directory timings contains a detailed account of the experiments we have performed with timeout 600 seconds on a machine
Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz, 16GB memory