toysolver: Assorted decision procedures for SAT, SMT, Max-SAT, PB, MIP, etc

[ algorithms, bsd3, constraints, formal-methods, library, logic, optimisation, optimization, program, smt, theorem-provers ] [ Propose Tags ]

Toy-level solver implementation of various problems including SAT, SMT, Max-SAT, PBSPBO (Pseudo Boolean SatisfactionOptimization), MILP (Mixed Integer Linear Programming) and non-linear real arithmetic.


[Skip to Readme]
Versions [RSS] [faq] 0.0.2, 0.0.3, 0.0.4, 0.0.4.1, 0.0.5, 0.0.6, 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.5.0, 0.6.0, 0.7.0
Change log CHANGELOG.markdown
Dependencies ansi-wl-pprint, array (>=0.5), attoparsec, base (>=4.9 && <4.15), bytestring (>=0.9.2.1 && <0.12), bytestring-builder, bytestring-encoding, case-insensitive, clock (>=0.7.1), containers (>=0.5.0), data-default, data-default-class, data-interval (>=2.0.1 && <2.2.0), deepseq, directory, extended-reals (>=0.1 && <1.0), filepath, finite-field (>=0.9.0 && <1.0.0), ghc-prim, hashable (>=1.2 && <1.4.0.0), hashtables, haskeline (>=0.7 && <0.9), heaps, intern (>=0.9.1.2 && <1.0.0.0), lattices, log-domain, loop (>=0.3.0 && <1.0.0), megaparsec (>=5 && <10), MIP (>=0.1.1.0 && <0.2), mtl (>=2.1.2), multiset, mwc-random (>=0.13.1 && <0.16), OptDir, optparse-applicative (>=0.13), parsec (>=3.1.2 && <4), pretty (>=1.1.2.0 && <1.2), primes, primitive (>=0.6), process (>=1.1.0.2), pseudo-boolean (>=0.1.3.0 && <0.2.0.0), queue, scientific, semigroups (>=0.17), sign (>=0.2.0 && <1.0.0), split, stm (>=2.3), template-haskell, temporary (>=1.2), text (>=1.1.0.0), time (>=1.5.0), toysolver, transformers (>=0.2), transformers-compat (>=0.3), unbounded-delays, unordered-containers (>=0.2.3 && <0.3.0), vector (>=0.11), vector-space (>=0.8.6), xml-conduit, zlib [details]
License BSD-3-Clause
Author Masahiro Sakai (masahiro.sakai@gmail.com)
Maintainer masahiro.sakai@gmail.com
Revised Revision 3 made by sjakobi at 2021-11-18T02:00:03Z
Category Algorithms, Optimisation, Optimization, Theorem Provers, Constraints, Logic, Formal Methods, SMT
Home page https://github.com/msakai/toysolver/
Bug tracker https://github.com/msakai/toysolver/issues
Source repo head: git clone git://github.com/msakai/toysolver.git
Uploaded by MasahiroSakai at 2021-02-10T03:50:43Z
Distributions NixOS:0.7.0
Executables pbverify, maxsatverify, pigeonhole, probsat, survey-propagation, svm2lp, htc, shortest-path, assign, knapsack, numberlink, nqueens, nonogram, sudoku, toyconvert, toyfmf, toyqbf, toysmt, toysat, toysolver
Downloads 12436 total (421 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index] [Quick Jump]

Manual Flags

NameDescriptionDefault
forcechar8

set default encoding to char8 (not to use iconv)

Disabled
linuxstatic

build statically linked binaries

Disabled
withzlib

Use zlib package to support gzipped files

Enabled
buildtoyfmf

build toyfmf command

Disabled
buildsampleprograms

build sample programs

Disabled
buildmiscprograms

build misc programs

Disabled
usehaskeline

use haskeline package

Enabled
opencl

use opencl package

Disabled
extraboundschecking

enable extra bounds checking for debugging

Disabled
Automatic Flags
NameDescriptionDefault

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees

Candidates


Readme for toysolver-0.7.0

[back to package description]

toysolver

License Join the chat at https://gitter.im/msakai/toysolver

Hackage: Hackage Hackage Deps Hackage CI

Dev: Build Status (Travis CI) Build Status (AppVeyor) Build Status (GitHub Actions) Coverage Status

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 moderately-fast pure-Haskell SAT solver 'toysat'.

Installation

  • unpack
  • cd toysolver
  • cabal install

Usage

This package includes several commands.

toysolver

Arithmetic solver for the following problems:

  • Mixed Integer Liner 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

toysat

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

toysmt

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.

toyfmf

SAT-based finite model finder for first order logic (FOL).

Usage:

toyfmf [file.tptp] [size]

toyconvert

Converter between various problem files.

Usage:

toyconvert -o [outputfile] [inputfile]

Supported formats:

  • Input formats: .cnf .wcnf .opb .wbo .gcnf .lp .mps
  • Output formats: .cnf .wcnf .opb .wbo .lsp .lp .mps .smp .smt2 .ys

Bindings

Spin-off projects and packages