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-baseprovides a concrete implementation of terms, types, literals, etc. as well as an instantiation the SMT solver. It also depends on Zarith for arbitrary-precision computations. -
sidekick-binis an executable that uses the previous building blocks to implement a concrete SMT solver executable. 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-base.
API Documentation
- development docs (docs following the master branch)