beyer_2008-07-11
BLAST release 2.5
New features added in release 2.5:
We have integrated the new interpolation procedure CSIsat, version 1.2.
CSIsat is now the default interpolator in BLAST.
FOCI and CLPprover can still be used by explicitly choosing
it on the command line.
CSIsat is integrated using the modular mechanism that we
used in BLAST 2.4 for FOCI.
BLAST is now released under the Apache 2.0 license.
This distribution of BLAST includes the following third party components:
- Interpolation procedure CSIsat, version 1.2 (NEW),
- Interpolation procedure FOCI,
- Interpolation procedure CLP-Prover,
- Theorem prover Simplify (version 1.5.4, 4 October 2001)
- BDD-package CUDD
- Compiler frontend CIL
The following files are provided:
blast-2.5.zip
OCaml source files that are needed to build BLAST,
including sources of CUDD and CIL,
and binaries of CSIsat, FOCI, CLP-Prover, and Simplify.
blast-2.5_*-bin.zip
Executable programs pblast.opt, spec.opt,
Simplify, csisat, csisatServer, foci.opt, fociServer,
smt_solver, smtlibServer, and clp-prover,
compiled under OCAML 3.09.2 and GCC 4.1.2, or
OCAML 3.10.0 and GCC 4.4.4 (on Win32/Cygwin).
Features of Blast 2.4:
- Interpolation procedure separated from the model-checking engine.
Blast 2.4 includes a new interface for interpolation procedures
that makes it easier to integrate alternative programs.
Currently, two external executables for interpolation are integrated:
FOCI and CLP-Prover.
- Theorem-prover interface based on the SMT-LIB expression language.
Blast 2.4 still uses Simplify as default theorem prover.
But by editing the configure file 'smt_solver' and using option '-smt',
any solver that supports the SMT-LIB standard can be plugged-in
as external executable. http://combination.cs.uiowa.edu/smtlib/
See also smt_lib/server/README.
Integration concept for external solvers (FOCI, SMT-Solvers):
For each solver that is integrated as external program,
there is a server process that does the following:
1. Start solver program as separate process.
2. Wait for query from BLAST and give it to the solver process.
3. Get the result from the solver and give it back to BLAST.
4. Go to step 1 after the solver process is terminated.
FOCI: The performance loss due to the restarts of executables is kept
minimal by the server process -- it not even doubles the run times.
(In the current version, FOCI needs to be killed in step 4 if an error occurred.)
CLP-Prover: This tool is based on constraint solving, and therefore,
when a lot of disjunctions occur, it shows exponential blow-up.
(CLP-Prover can be repeatedly queried and does not need to be
terminated in step 4.)
SMT-Solvers: Compared to Simplify, the SMT solvers that we have tried
suffered a lot from getting identical parts of a formula again and
again, whereas Simplify supports a 'context stack' on which we
can keep parts of formulas that would otherwise occur in many queries.
There is potential for optimization, since we do not use the power
that the SMT-solvers provide, e.g., encoding array and pointer
operations on a higher level supported by the SMT-solvers.
We successfully tried Yices, CVC3, and z3.
http://combination.cs.uiowa.edu/smtlib/