bhaaksema / intuitR

Efficient SAT-based theorem prover for Intuituionistic Propositional Logic

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

intuitR

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:

  • a full version of the paper with appendix (pdf);
  • the slides presented at CADE 2021 (pdf).

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).

References

[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)

Haskell installation

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.

IntuitR compilation

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

Running

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:

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 

Running Benchmarks

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.

Experiments

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

About

Efficient SAT-based theorem prover for Intuituionistic Propositional Logic

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:OpenEdge ABL 99.6%Language:Haskell 0.4%Language:Shell 0.0%