It provides solver implementations of various problems, including SAT, SMT, Max-SAT, PBS (Pseudo Boolean Satisfaction), PBO (Pseudo Boolean Optimization), MILP (Mixed Integer Linear Programming), and non-linear real arithmetic.
In particular, it contains a moderately fast pure-Haskell SAT solver toysat
.
See INSTALL.md.
This package includes several commands.
Arithmetic solver for the following problems:
- Mixed Integer Linear Programming (MILP or MIP)
- Boolean SATisfiability problem (SAT)
- PB
- Pseudo-Boolean Satisfaction (PBS)
- Pseudo-Boolean Optimization (PBO)
- Weighted Boolean Optimization (WBO)
- Max-SAT families
- Max-SAT
- Partial Max-SAT
- Weighted Max-SAT
- Weighted Partial Max-SAT
- Real Closed Field
Usage:
toysolver [OPTION...] [file.lp|file.mps]
toysolver --lp [OPTION...] [file.lp|file.mps]
toysolver --sat [OPTION...] [file.cnf]
toysolver --pb [OPTION...] [file.opb]
toysolver --wbo [OPTION...] [file.wbo]
toysolver --maxsat [OPTION...] [file.cnf|file.wcnf]
-h --help show help
-v --version show version number
--solver=SOLVER mip (default), omega-test, cooper, cad, old-mip, ct
SAT-based solver for the following problems:
- SAT
- Boolean SATisfiability problem (SAT)
- Minimally Unsatisfiable Subset (MUS)
- Group-Oriented MUS (GMUS)
- PB
- Pseudo-Boolean Satisfaction (PBS)
- Pseudo-Boolean Optimization (PBO)
- Weighted Boolean Optimization (WBO)
- Max-SAT families
- Max-SAT
- Partial Max-SAT
- Weighted Max-SAT
- Weighted Partial Max-SAT
- Integer Programming (all variables must be bounded)
Usage:
toysat [file.cnf|-]
toysat --sat [file.cnf|-]
toysat --mus [file.gcnf|file.cnf|-]
toysat --pb [file.opb|-]
toysat --wbo [file.wbo|-]
toysat --maxsat [file.cnf|file.wcnf|-]
toysat --lp [file.lp|file.mps|-]
PB'12 competition result:
- toysat placed 2nd in PARTIAL-BIGINT-LIN and SOFT-BIGINT-LIN categories
- toysat placed 4th in PARTIAL-SMALLINT-LIN and SOFT-SMALLINT-LIN categories
- toysat placed 8th in OPT-BIGINT-LIN category
SMT solver based on toysat
.
Usage:
toysmt [file.smt2]
Currently only QF_UF, QF_RDL, QF_LRA, QF_UFRDL and QF_UFLRA logic are supported.
SAT-based finite model finder for first-order logic (FOL).
Usage:
toyfmf [file.tptp] [size]
Converter between various problem files.
Usage:
toyconvert -o [outputfile] [inputfile]
Supported formats:
Format Name | File Extension | Input | Output | Description |
---|---|---|---|---|
DIMACS CNF | .cnf |
✅ | ✅ | Standard file format for SAT instances |
WCNF Format | .wcnf |
✅ | ✅ | Standard file format for Max-SAT instances (specification) |
OPB Format | .opb |
✅ | ✅ | PBS (Pseudo-Boolean Satisfaction) and PBO (Pseudo-Boolean Optimization) instances (specification) |
WBO Format | .wbo |
✅ | ✅ | WBO (Weighted-Boolean Optimization) instances (specification) |
Group oriented CNF Input Format | .gcnf |
✅ | - | Used in Group oriented MUS track of the SAT Competition 2011 (specification) |
LP File Format | .lp |
✅ | ✅ | Linear programming (LP) and mixed integer programming (MIP) problems |
MPS File Format | .mps |
✅ | ✅ | Linear programming (LP) and mixed integer programming (MIP) problems |
LSP Format | .lsp |
- | ✅ | Input format for LocalSolver (only binary variables are supported) |
SMP Format | .smp |
- | ✅ | Input format for Nuorium Optimizer (NUOPT) (only binary variables are supported) |
SMT-LIB 2 Format | .smt2 |
- | ✅ | Satisfiability Modulo Theories (SMT) problem instances (website) |
Yices Input Language | .ys |
- | ✅ | SMT problem instances for SMT solver Yices |
qbsolv QUBO Input File Format | .qubo |
✅ | ✅ | Unconstrained quadratic binary optimization problems (specification) |
Solution checker for various problem files. Usage:
toysolver-check [OPTION...] [problem_file] [solution_file]
toysolver-check --lp [OPTION...] [file.lp|file.mps] [file.sol]
toysolver-check --sat [OPTION...] [file.cnf] [file.log]
toysolver-check --pb [OPTION...] [file.opb] [file.log]
toysolver-check --wbo [OPTION...] [file.wbo] [file.log]
toysolver-check --maxsat [OPTION...] [file.cnf|file.wcnf] [file.log]
--encoding ENCODING file encoding for LP/MPS files
--pb-fast-parser use attoparsec-based parser instead of
megaparsec-based one for speed
--tol-integrality REAL If a value of integer variable is within this amount
from its nearest integer, it is considered feasible.
(default: 1.0e-5)
--tol-feasibility REAL If the amount of violation of constraints is within
this amount, it is considered feasible.
(default: 1.0e-6)
--tol-optimality REAL Feasibility tolerance of dual constraints.
(default: 1.0e-6)
- ersatz-toysat - toysat backend driver for ersatz
- satchmo-toysat - toysat backend driver for satchmo