Wrap up SAT/SMT

This commit is contained in:
2025-06-12 15:13:07 -06:00
parent cf41adb1f5
commit 589a55d8cd
26 changed files with 240 additions and 1 deletions

10
tools/sat-smt/_index.md Normal file
View File

@@ -0,0 +1,10 @@
+++
title = "All SAT & SMT Tools"
layout = "section"
+++
This page lists all of the SAT & SMT tools on this site in alphabetical order.
Click a tool name in the first column to view tool details.
Click a colorful item in the second column to view all the tools for which that term applies.
Item colors mean nothing and are intended to make it easy to skim the page.
Colors are generated by hashing each term's name and converting it to RGB color values.

22
tools/sat-smt/bitwuzla.md Normal file
View File

@@ -0,0 +1,22 @@
+++
date = 2025-06-07
draft = false
title = 'Bitwuzla'
subtitle = 'SMT Solver'
links = [
{ title = "Homepage", url = "https://bitwuzla.github.io", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/bitwuzla/bitwuzla", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SMT Solver', 'Theorem Prover', 'SAT Solver']
developers = ['Stanford University']
licenses = ['MIT']
inputs = ['SMTLIB2']
interfaces = ['CLI']
maintenance = ['Actively Maintained']
# techniques = ['CDCL']
publications = ['Niemetz2023']
+++
<!-- {{<inactive year="2024">}} -->
Bitwuzla is a Satisfiability Modulo Theories (SMT) solver for the theories of fixed-size bit-vectors, floating-point arithmetic, arrays, uninterpreted functions and their combinations.

View File

@@ -0,0 +1,23 @@
+++
date = 2025-06-07
draft = false
title = 'Boolector'
subtitle = 'SMT Solver'
links = [
{ title = "Homepage", url = "https://boolector.github.io/", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/boolector/boolector", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SMT Solver', 'Theorem Prover', 'SAT Solver']
developers = ['Stanford University', 'Johannes Kepler Universität Linz']
licenses = ['MIT']
inputs = ['SMTLIB2']
interfaces = ['CLI']
maintenance = ['Not Maintained']
# techniques = ['CDCL']
publications = ['Niemetz2014']
+++
{{<inactive year="2024">}}
Boolector is a Satisfiability Modulo Theories (SMT) solver for the theories of fixed-size bit-vectors, arrays and uninterpreted functions.
Succeeded by [Bitwuzla](../bitwuzla)

21
tools/sat-smt/colibri.md Normal file
View File

@@ -0,0 +1,21 @@
+++
date = 2025-06-07
draft = false
title = 'Colibri'
subtitle = 'SMT Solver'
links = [
{ title = "Homepage", url = "https://colibri.frama-c.com/", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://git.frama-c.com/pub/colibrics/-/tree/master", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SMT Solver']
developers = ['CEA']
licenses = ['MIT']
inputs = ['SMTLIB2']
interfaces = ['CLI']
maintenance = ['Actively Maintained']
# techniques = ['CDCL']
# publications = ['deMoura2008']
+++
Colibri is an SMT solver.

View File

@@ -0,0 +1,33 @@
+++
date = 2025-06-07
draft = false
title = 'CryptoMiniSat'
subtitle = 'SAT Solver'
links = [
{ title = "Homepage", url = "https://www.msoos.org/cryptominisat5/", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/msoos/cryptominisat", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://cvc4.github.io/app/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SAT Solver']
developers = ['INRIA Rhône-Alpes', 'University of Virginia']
licenses = ['MIT', 'GPLv2']
inputs = ['CNF']
interfaces = ['CLI', 'Python', 'C++', ]
maintenance = ['Actively Maintained']
# techniques = ['CDCL']
publications = ['Soos2009']
+++
<!-- {{<inactive year="2021">}} -->
CryptoMiniSat is a SAT solver.
## APIs and Bindings
This tool is available through the following interfaces:
- **C++ Namespace:** Documentation on [homepage](https://www.msoos.org/cryptominisat5/)
- **Python package:** [PyPI package](https://pypi.org/project/pycryptosat/)
<!-- - **.NET API:** [Z3 .NET Namespace Reference](https://z3prover.github.io/api/html/namespace_microsoft_1_1_z3.html) -->
<!-- - **Java API:** [Z3 Java API Reference](https://z3prover.github.io/api/html/namespacecom_1_1microsoft_1_1z3.html) -->
<!-- - **Rust bindings:** [z3 crate on crates.io](https://crates.io/crates/z3) -->

22
tools/sat-smt/cvc4.md Normal file
View File

@@ -0,0 +1,22 @@
+++
date = 2025-06-07
draft = false
title = 'cvc4'
subtitle = 'Theorem Prover'
links = [
{ title = "Homepage", url = "https://cvc4.github.io/", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/CVC4/CVC4-archived", icon = 'fa-brands fa-github' },
{ title = "Playground", url = "https://cvc4.github.io/app/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SMT Solver', 'Theorem Prover']
developers = ['Stanford University', 'University of Iowa']
licenses = ['BSD']
inputs = ['SMTLIB2']
interfaces = ['CLI', 'Online']
maintenance = ['Not Maintained']
# techniques = ['CDCL']
publications = ['Barrett2011']
+++
{{<inactive year="2021">}}
cvc4 is an automatic theorem prover for SMT problems. It is succeeded by [cvc5](../cvc5)

22
tools/sat-smt/cvc5.md Normal file
View File

@@ -0,0 +1,22 @@
+++
date = 2025-06-07
draft = false
title = 'cvc5'
subtitle = 'Theorem Prover'
links = [
{ title = "Homepage", url = "https://cvc5.github.io/", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/cvc5/cvc5", icon = 'fa-brands fa-github' },
{ title = "Playground", url = "https://cvc5.github.io/app/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SMT Solver', 'Theorem Prover']
developers = ['Stanford University', 'University of Iowa']
licenses = ['BSD']
inputs = ['SMTLIB2']
interfaces = ['CLI', 'Online']
maintenance = ['Actively Maintained']
# techniques = ['CDCL']
publications = ['Barbosa2022']
+++
<!-- {{<inactive year="2023">}} -->
cvc5 is an automatic theorem prover for SMT problems.

22
tools/sat-smt/dreal.md Normal file
View File

@@ -0,0 +1,22 @@
+++
date = 2025-06-07
draft = false
title = 'dReal'
subtitle = 'SMT Solver'
links = [
{ title = "Homepage", url = "https://dreal.github.io/", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/dreal/dreal4", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SMT Solver']
# developers = ['Johannes Kepler Universität Linz']
licenses = ['Apache-2.0']
# inputs = ['']
interfaces = ['CLI']
maintenance = ['Not Maintained']
# techniques = ['CDCL']
# publications = ['deMoura2008']
+++
{{<inactive year="2023">}}
dReal is an automated reasoning tool. It focuses on solving problems that can be encoded as first-order logic formulas over the real numbers. Its special strength is in handling problems that involve a wide range of nonlinear real functions.

22
tools/sat-smt/glucose.md Normal file
View File

@@ -0,0 +1,22 @@
+++
date = 2025-06-07
draft = false
title = 'Glucose'
subtitle = 'SAT Solver'
links = [
{ title = "Homepage", url = "https://www.labri.fr/perso/lsimon/research/glucose/", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/audemard/glucose", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SAT Solver']
developers = ['Gilles Audemard','Laurent Simon']
licenses = ['MIT']
inputs = ['CNF']
interfaces = ['CLI']
maintenance = ['Actively Maintained']
# techniques = ['CDCL']
# publications = ['deMoura2008']
+++
<!-- {{<closed-source>}} -->
Glucose is a SAT solver.

View File

@@ -0,0 +1,22 @@
+++
date = 2025-06-07
draft = false
title = 'Lingeling'
subtitle = 'SMT Solver'
links = [
{ title = "Homepage", url = "https://fmv.jku.at/lingeling/", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/arminbiere/lingeling", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SAT Solver']
developers = ['Johannes Kepler Universität Linz']
licenses = ['MIT']
# inputs = ['']
interfaces = ['CLI']
maintenance = ['Actively Maintained']
# techniques = ['CDCL']
# publications = ['deMoura2008']
+++
<!-- {{<closed-source>}} -->
Lingeling is a SAT solver.

22
tools/sat-smt/mathsat.md Normal file
View File

@@ -0,0 +1,22 @@
+++
date = 2025-06-07
draft = false
title = 'MathSAT'
subtitle = 'SMT Solver'
links = [
{ title = "Homepage", url = "https://mathsat.fbk.eu/", icon = 'fa-solid fa-home' },
# { title = "Source Code", url = "https://github.com/niklasso/minisat", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SMT Solver']
developers = ['Fondazione Bruno Kessler','DISI-University of Trento']
licenses = ['All Rights Reserved']
# inputs = ['']
interfaces = ['CLI']
maintenance = ['Actively Maintained']
# techniques = ['CDCL']
# publications = ['deMoura2008']
+++
{{<closed-source>}}
MiniSat is a minimalistic, open-source SAT solver, developed to help researchers and developers alike to get started on SAT.

22
tools/sat-smt/minisat.md Normal file
View File

@@ -0,0 +1,22 @@
+++
date = 2025-06-07
draft = false
title = 'MiniSat'
subtitle = 'SAT Solver'
links = [
{ title = "Homepage", url = "http://minisat.se/Main.html", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/niklasso/minisat", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SAT Solver']
developers = ['Niklas Eén', 'Niklas Sörensson']
licenses = ['MIT']
# inputs = ['']
interfaces = ['CLI']
maintenance = ['Not Maintained']
# techniques = ['CDCL']
# publications = ['deMoura2008']
+++
{{<inactive year="2013">}}
MiniSat is a minimalistic, open-source SAT solver, developed to help researchers and developers alike to get started on SAT.

21
tools/sat-smt/opensmt.md Normal file
View File

@@ -0,0 +1,21 @@
+++
date = 2025-06-07
draft = false
title = 'OpenSMT'
subtitle = 'SMT Solver'
links = [
{ title = "Homepage", url = "https://verify.inf.usi.ch/opensmt", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/usi-verification-and-security/opensmt", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SMT Solver']
developers = ['University of Lugano']
licenses = ['GPLv3']
inputs = ['SMTLIB2']
interfaces = ['CLI']
maintenance = ['Actively Maintained']
# techniques = ['CDCL']
# publications = ['deMoura2008']
+++
OpenSMT is a compact and open-source SMT-solver written in C++, with the main goal of making SMT-Solvers easy to understand and use as a computational engine for formal verification. OpenSMT is built on top of [MiniSAT](/tools/minisat).

View File

@@ -0,0 +1,34 @@
+++
date = 2025-06-07
draft = false
title = 'ParaFROST'
subtitle = 'SMT Solver'
links = [
# { title = "Homepage", url = "https://github.com/Z3Prover/z3", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/muhos/ParaFROST", icon = 'fa-brands fa-github' },
# { title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SAT Solver']
developers = ['Eindhoven University of Technology', 'Albert-Ludwigs-Universität']
licenses = ['GPLv3']
inputs = ['SMTLIB2']
interfaces = ['CLI']
maintenance = ['Actively Maintained']
techniques = ['CDCL', 'GPU']
publications = ['Osama2024']
+++
ParaFROST is a parallel SAT solver with GPU-accelerated inprocessing capable of harnessing NVIDIA CUDA-enabled GPUs in applying modern inprocessing tecnhiques in parallel.
## APIs and Bindings
This tool is available through the following interfaces:
- **C API:** [Z3 C API Reference](https://z3prover.github.io/api/html/group__capi.html)
- **C++ API:** [Z3 C++ Namespace Reference](https://z3prover.github.io/api/html/namespacez3.html)
- **.NET API:** [Z3 .NET Namespace Reference](https://z3prover.github.io/api/html/namespace_microsoft_1_1_z3.html)
- **Java API:** [Z3 Java API Reference](https://z3prover.github.io/api/html/namespacecom_1_1microsoft_1_1z3.html)
- **Python bindings:** [z3-solver PyPI package](https://pypi.org/project/z3-solver/) ([Documentation](https://z3prover.github.io/api/html/z3.html))
- **Rust bindings:** [z3 crate on crates.io](https://crates.io/crates/z3)

25
tools/sat-smt/q3b.md Normal file
View File

@@ -0,0 +1,25 @@
+++
date = 2025-06-07
draft = false
title = 'Q3B'
subtitle = 'SMT Solver'
links = [
# { title = "Homepage", url = "https://ultimate.informatik.uni-freiburg.de/smtinterpol/", icon = 'fa-solid fa-home'},
{ title = "Source Code", url = "https://github.com/martinjonas/Q3B", icon = 'fa-brands fa-github' },
# { title = "Documentation", url = "https://yices.csl.sri.com/yices2-documentation.html" }
]
applications = ['SMT Solver']
developers = ['Masaryk University']
licenses = ['MIT']
inputs = ['SMTLIB2']
interfaces = ['CLI']
maintenance = ['Not Maintained']
publications = ['Jonas2016']
+++
{{<inactive year="2023">}}
Q3B is an SMT solver for the quantified bit-vector formulas which uses BDDs.

25
tools/sat-smt/riss.md Normal file
View File

@@ -0,0 +1,25 @@
+++
date = 2025-06-07
draft = false
title = 'Riss'
subtitle = 'SAT Tool Collection'
links = [
# { title = "Homepage", url = "https://ultimate.informatik.uni-freiburg.de/smtinterpol/", icon = 'fa-solid fa-home'},
{ title = "Source Code", url = "https://github.com/nmanthey/riss-solver", icon = 'fa-brands fa-github' },
# { title = "Documentation", url = "https://yices.csl.sri.com/yices2-documentation.html" }
]
applications = ['SAT Solver']
developers = ['Norbert Manthey']
licenses = ['LGPLv2']
inputs = []
interfaces = ['CLI']
maintenance = ['Not Maintained']
# publications = ['Henkel2021']
+++
{{<inactive year="2017">}}
Riss is a SAT solving tool collection.

31
tools/sat-smt/smt-rat.md Normal file
View File

@@ -0,0 +1,31 @@
+++
date = 2025-06-07
draft = false
title = 'SMT-RAT'
subtitle = 'SMT Toolbox'
links = [
{ title = "Homepage", url = "https://ths-rwth.github.io/smtrat/", icon = 'fa-solid fa-home'},
{ title = "Source Code", url = "https://github.com/ths-rwth/smtrat", icon = 'fa-brands fa-github' },
# { title = "Documentation", url = "https://yices.csl.sri.com/yices2-documentation.html" }
]
applications = ['SMT Solver', 'SAT Solver']
developers = ['RWTH Aachen']
licenses = ['MIT']
inputs = ['SMTLIB2']
interfaces = ['CLI', 'C++']
maintenance = ['Actively Maintained']
publications = ['Corzilius2015']
+++
SMT-RAT is an SMT Real Algebra Toolbox.
## APIs and Bindings
This tool is available through the following interfaces:
- **C++ API:** [C++ API Reference](https://ths-rwth.github.io/smtrat/dc/dad/md__builds_ths_smt_smtrat_doc_markdown_07_using_smtrat.html#autotoc_md25)

View File

@@ -0,0 +1,31 @@
+++
date = 2025-06-07
draft = false
title = 'SMTInterpol'
subtitle = 'Interpolating SMT Solver'
links = [
{ title = "Homepage", url = "https://ultimate.informatik.uni-freiburg.de/smtinterpol/", icon = 'fa-solid fa-home'},
{ title = "Source Code", url = "https://github.com/ultimate-pa/smtinterpol", icon = 'fa-brands fa-github' },
# { title = "Documentation", url = "https://yices.csl.sri.com/yices2-documentation.html" }
]
applications = ['SMT Solver']
developers = ['University of Freiburg']
licenses = ['GPLv3']
inputs = ['SMTLIB2']
interfaces = ['CLI', 'Java']
maintenance = ['Actively Maintained']
publications = ['Henkel2021']
+++
SMTInterpol is an SMT Solver that can compute Craig interpolants for various theories.
## APIs and Bindings
This tool is available through the following interfaces:
- **Java API:** [Java API Reference](https://ultimate.informatik.uni-freiburg.de/smtinterpol/doc/index.html)

32
tools/sat-smt/stp.md Normal file
View File

@@ -0,0 +1,32 @@
+++
date = 2025-06-07
draft = false
title = 'STP'
subtitle = 'Simple Theorem Prover'
links = [
{ title = "Homepage", url = "https://stp.github.io/", icon = 'fa-solid fa-home'},
{ title = "Source Code", url = "https://github.com/stp/stp", icon = 'fa-brands fa-github' },
# { title = "Documentation", url = "https://yices.csl.sri.com/yices2-documentation.html" }
]
applications = ['Constraint Solver', 'SMT Solver', 'Theorem Prover']
developers = ['University of Illinois', 'Stanford University']
licenses = ['MIT']
inputs = ['SMTLIB2']
interfaces = ['CLI', 'C', 'Python']
maintenance = ['Actively Maintained']
publications = ['Ganesh2007', 'Cadar2006']
+++
STP is a constraint solver for quantifier-free bitvectors.
## APIs and Bindings
This tool is available through the following interfaces:
- **C API:** [stp C API Reference](https://stp.readthedocs.io/en/latest/#c-library-usage)
- **Python bindings:** [stp PyPI package](https://stp.readthedocs.io/en/latest/#python-usage)

24
tools/sat-smt/verit.md Normal file
View File

@@ -0,0 +1,24 @@
+++
date = 2025-06-07
draft = false
title = 'veriT'
subtitle = 'SMT Solver'
links = [
{ title = "Homepage", url = "https://www.verit-solver.org/", icon = 'fa-solid fa-home'},
# { title = "Source Code", url = "https://github.com/SRI-CSL/yices2", icon = 'fa-brands fa-github' },
# { title = "Documentation", url = "https://yices.csl.sri.com/yices2-documentation.html" }
]
applications = ['SMT Solver']
developers = ['LORIA', 'ULiege']
licenses = ['BSD']
inputs = ['SMTLIB2', 'DIMACS']
interfaces = ['CLI']
maintenance = ['Actively Maintained']
publications = ['Schurr2021']
+++
veriT is an SMT solver developed by LORIA and ULiege. It supports a wide range of theories and is designed for use in formal verification, automated reasoning, and related research areas. veriT accepts input in SMT-LIB2 and DIMACS formats and provides a command-line interface for ease of integration into verification workflows. The solver is actively maintained and distributed under the BSD license, making it suitable for both academic and industrial applications.

31
tools/sat-smt/yices.md Normal file
View File

@@ -0,0 +1,31 @@
+++
date = 2025-06-07
draft = false
title = 'Yices 2'
subtitle = 'SMT Solver'
links = [
{ title = "Homepage", url = "https://yices.csl.sri.com/", icon = 'fa-solid fa-home'},
{ title = "Source Code", url = "https://github.com/SRI-CSL/yices2", icon = 'fa-brands fa-github' },
# { title = "Documentation", url = "https://yices.csl.sri.com/yices2-documentation.html" }
]
applications = ['SMT Solver', 'SAT Solver']
developers = ['SRI International']
licenses = ['GPLv3']
inputs = ['SMTLIB2', 'Yices 2']
interfaces = ['CLI', 'Python', 'Rust']
maintenance = ['Actively Maintained']
publications = ['Dutertre2014']
+++
Yices is an SMT solver developed by SRI International. It is widely used for checking the satisfiability of logical formulas over various theories. It supports the SMT-LIB standard and its own input language, and provides APIs for several programming languages, making it suitable for research and industrial applications in software and hardware verification.
## APIs and Bindings
This tool is available through the following interfaces:
- **General API:** [Yices API Reference](https://yices.csl.sri.com/doc/index.html)
- **Python bindings:** [yices2 PyPI package](https://pypi.org/project/yices/)
- **Rust bindings:** [yices2 crate on crates.io](https://crates.io/crates/yices2)

34
tools/sat-smt/z3.md Normal file
View File

@@ -0,0 +1,34 @@
+++
date = 2025-06-07
draft = false
title = 'Z3'
subtitle = 'Theorem Prover'
links = [
{ title = "Homepage", url = "https://github.com/Z3Prover/z3", icon = 'fa-solid fa-home' },
{ title = "Source Code", url = "https://github.com/Z3Prover/z3", icon = 'fa-brands fa-github' },
{ title = "Playground", url = "https://jfmc.github.io/z3-play/", icon = 'fa-solid fa-gamepad' }
]
applications = ['SMT Solver', 'Theorem Prover', 'SAT Solver']
developers = ['Microsoft Research']
licenses = ['MIT']
inputs = ['SMTLIB2', 'DIMACS']
interfaces = ['CLI', 'Python', 'Rust', 'C', 'C++', 'Java', '.NET', 'Online']
maintenance = ['Actively Maintained']
# techniques = ['CDCL']
publications = ['deMoura2008']
+++
Z3 is a general-purpose theorem prover widely used for SAT & SMT solving.
## APIs and Bindings
This tool is available through the following interfaces:
- **C API:** [Z3 C API Reference](https://z3prover.github.io/api/html/group__capi.html)
- **C++ API:** [Z3 C++ Namespace Reference](https://z3prover.github.io/api/html/namespacez3.html)
- **.NET API:** [Z3 .NET Namespace Reference](https://z3prover.github.io/api/html/namespace_microsoft_1_1_z3.html)
- **Java API:** [Z3 Java API Reference](https://z3prover.github.io/api/html/namespacecom_1_1microsoft_1_1z3.html)
- **Python bindings:** [z3-solver PyPI package](https://pypi.org/project/z3-solver/) ([Documentation](https://z3prover.github.io/api/html/z3.html))
- **Rust bindings:** [z3 crate on crates.io](https://crates.io/crates/z3)