8000 GitHub - hmarkus/depqbf at experimental
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

hmarkus/depqbf

 
 

Repository files navigation

July 2012

-------------------
GENERAL INFORMATION
-------------------

This is version 1.0 of the search-based QBF solver DepQBF. Compared to the
previously released version 0.1, it includes the following major changes:

- Some code maintenance and bug fixes

- Blocking literals to improve cache performance

- Trace generation (contributed by Aina Niemetz): DepQBF 1.0 can produce
  traces in QRP format (ASCII and binary version of the QRP format are
  supported; see also usage information). If called with the '--trace' option,
  the solver prints *every* resolution step during clause and cube learning to
  <stdout>. The output format is QRP ("Q-Resolution Proof"). For example, the
  call './depqbf --trace input-formula.qdimacs > trace.qrp' dumps the trace
  for the QBF 'input-formula.qdimacs' to the file 'trace.qrp'. The generated
  trace file can be used to extract a certificate of (un)satisfiability of the
  given formula using additional tools. See also the website
  'http://fmv.jku.at/cdepqbf/' and our tool paper at SAT'12:

@inproceedings{DBLP:conf/sat/NiemetzPLSB12,
  author    = {Aina Niemetz and
               Mathias Preiner and
               Florian Lonsing and
               Martina Seidl and
               Armin Biere},
  title     = {Resolution-Based Certificate Extraction for QBF - (Tool
               Presentation)},
  booktitle = {SAT},
  year      = {2012},
  pages     = {430-435},
  ee        = {http://dx.doi.org/10.1007/978-3-642-31612-8_33},
  crossref  = {DBLP:conf/sat/2012},
  bibsource = {DBLP, http://dblp.uni-trier.de}
}

- The solver can be used as a library. The API is declared in file 'qdpll.h'
  and file 'qdpll_app.c' demonstrates how it can be used. Note that the API,
  apart from basic use, has not yet been thoroughly tested.


DepQBF is free software released under GPLv3. See also file
COPYING. Unfortunately, documentation is scarce and the code structure is not
as readable as it should be to allow for easy modifications. Please do not
hesitate to contact Florian Lonsing (see below) for any questions related to
DepQBF.

DepQBF consists of a dependency manager (file 'qdpll_dep_man_qdag.c') and a
core QDPLL solver (file 'qdpll.c'). During a run the solver queries the
dependency manager to find out if there is a dependency between two variables,
say 'x' and 'y'. Given the original quantifier prefix of a QBF, there is such
dependency if 'x' is quantified to the left of 'y' and 'x' and 'y' are
quantified differently. In contrast to that simple approach, DepQBF (in
general) is able to extract more sophisticated dependency information from the
given QBF. It computes the so-called 'standard dependency scheme' which is
represented as a compact graph by the dependency manager.

If you are interested only in the core solver based on QDPLL then it is
probably best not to look at the code of the dependency manager in file
'qdpll_dep_man_qdag.c' at all but only consider file 'qdpll.c'.


------------
INSTALLATION
------------

Unpack the sources into a directory and call 'make'. This produces optimized
code without assertions (default).

Note: set the flag 'FULL_ASSERT' in file 'qdpll_config.h' from 0 to 1 to
switch on *expensive* assertions. The solver will run *substantially* slower
in this case. As usual, the compiler flag 'DNDEBUG' removes all assertions
from the code, regardless from the value of 'FULL_ASSERT'.


-----------------------
CONFIGURATION AND USAGE
-----------------------

Call './depqbf -h' to display usage information. Further, undocumented command
line parameters can be found in function 'qdpll_configure(...)' in file
'qdpll.c'.

The solver returns exit code 10 if the given instance was found satisfiable and exit
code 20 if the instance was found unsatisfiable. Any other exit code indicates
that the instance was not solved.

Parameter '-v' enables basic verbose mode where the solver prints information
on restarts and backtracks to <stderr>. More occurrences of '-v' result in
heavy verbose mode where information on individual assignments is
printed. This can slow down the solver considerably and should be used for
debugging only.

Trace generation can be enabled by parameter '--trace'. Note that printing the
tracing information causes I/O overhead and might slow down the
solver. Writing traces in binary QRP format (enabled by parameter
'--trace=bqrp') usually produces smaller traces, as far as byte size is
concerned.

Calling DepQBF without command line parameters results in default behaviour
which was tuned on instances from QBFLIB. For performance comparisons with
other solvers it is recommended not to pass any command line parameters to
DepQBF.

By default, statistical output is disabled. To enable statistics, set the flag
'COMPUTE_STATS' in file 'qdpll_config.h' from 0 to 1. Similarly, time
statistics can be enabled by setting flag 'COMPUTE_STATS'.


----------
REFERENCES
----------

A system description appeared in JSAT:

@article{DBLP:journals/jsat/LonsingB10,
  author    = {Florian Lonsing and
               Armin Biere},
  title     = {DepQBF: A Dependency-Aware QBF Solver},
  journal   = {JSAT},
  volume    = {7},
  number    = {2-3},
  year      = {2010},
  pages     = {71-76},
  ee        = {http://jsat.ewi.tudelft.nl/content/volume7/JSAT7_6_Lonsing.pdf},
  bibsource = {DBLP, http://dblp.uni-trier.de}
}


-------
CONTACT
-------

For comments, questions, bug reports etc. related to DepQBF please contact Florian Lonsing.

See also http://www.kr.tuwien.ac.at/staff/lonsing/ and http://fmv.jku.at/depqbf/.

About

DepQBF, a solver for quantified boolean formulae (QBF).

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 97.8%
  • Java 1.6%
  • Other 0.6%
0