sidekick/src/sat/Sidekick_sat.mld
2018-05-09 19:28:41 -05:00

75 lines
1.9 KiB
Text

{1 mSAT}
{2 License}
This code is free, under the {{:https://github.com/c-cube/cdcl/blob/master/LICENSE}Apache 2.0 license}.
{2 Contents}
An ocaml library to implement CDCL(T) solvers.
Most modules in CDCL actually define functors. These functors usually take one
or two arguments, usually an implementation of Terms and formulas used, and an implementation
of the theory used during solving.
{4 Solver creation}
The following modules allow to easily create a SAT or SMT solver (remark: a SAT solver is
simply an SMT solver with an empty theory).
{!modules:
CDCL
}
Finally, mSAT also provides an implementation of Tseitin's CNF conversion:
{!modules:
CDCL_tseitin
}
{4 Proof Management}
CDCL solvers are able to provide detailed proofs when an unsat state is reached. To do
so, it require the provided theory to give proofs of the tautologies it gives the solver.
These proofs will be called lemmas. The type of lemmas is defined by the theory and can
very well be [unit].
In this context a proof is a resolution tree, whose conclusion (i.e. root) is the
empty clause, effectively allowing to deduce [false] from the hypotheses.
A resolution tree is a binary tree whose nodes are clauses. Inner nodes' clauses are
obtained by performing resolution between the two clauses of the children nodes, while
leafs of the tree are either hypotheses, or tautologies (i.e. conflicts returned by
the theory).
{!modules:
CDCL__Res
CDCL__Res_intf
}
Backends for exporting proofs to different formats:
{!modules:
Dot
Coq
Dedukti
Backend_intf
}
{4 Internal modules}
WARNING: for advanced users only ! These modules expose a lot of unsafe functions
that must be used with care to not break the required invariants. Additionally, these
interfaces are not part of the main API and so are subject to a lot more breaking changes
than the safe modules above.
{!modules:
Dimacs
Internal
External
Solver_types
Solver_types_intf
}
{2 Index}
{!indexlist}