1.3 KiB
Sidekick
Sidekick is an OCaml framework to implement and use SMT solvers based on CDCL.
It is heavily functorized (parametrized) so it can use user-provided data structures, term representation, etc. and each part is potentially swappable, even the SAT solver.
Sidekick is composed of a few libraries:
-
sidekickcontains the core type definitions, a congruence closure, some theories (boolean formuals, algebraic datatypes), and a solver implementation based on mSAT.Sidekick_coreis the most important module to read there. -
sidekick-arithdepends on Zarith for arbitrary-precision computations, and provides a LRA theory based on an implementation of the Simplex algorithm. -
sidekick-binis an executable that uses the previous building blocks to implement a concrete SMT solver. It is useful for testing, but can also be used as a normal SMT solver on the command line.It contains examples of how to instantiate the functors of
sidekickandsidekick-arith.
API Documentation
- development docs (docs following the master branch)