stevia icon indicating copy to clipboard operation
stevia copied to clipboard

Towards a complete SMT solver

Open Robbepop opened this issue 7 years ago • 0 comments

For stevia to be a more or less complete SMT solver the following high-level modules will need to be implemented in one form or another:

  • [x] AST: Data structures for the expression tree.
  • [x] Simplifier: Word-level simplifications on the AST data structure.
  • [x] Simple Serializer: Serialize AST data structure into human-readable form.
  • [ ] SMTLib2 Parser: Parse input given in SMTLib2 compliant form.
    • WIP: https://github.com/Robbepop/stevia/tree/master/stevia_parser
  • [ ] SAT Driver: Drives the underlying SAT solver with the given CNF formula.
    • FFI Bindings: https://github.com/Robbepop/ipasir-rs

With AIG optimizations:

  • [ ] SMT -> AIG: Bit Blaster: Transform a given AST expression tree into a pure boolean formula. The resulting boolean formula should be cheaply convertible to an AIG representation.
  • [ ] AIG Driver: Drives processing AIG input.
  • [ ] AIG -> CNF: Tseytin Transformation -> Transforms AIG represented data to CNF format.

Additional optimizations:

  • [ ] Abstraction Refinement: Heuristics and driver for the array-abstraction-refinement. Maybe this could also handle the newly developed copy-abstraction-refinement.
  • [ ] Linear Bitvector Solver: Optimizer and solver for some specialized bitvector terms. Also involves writing of some word-level transformations to preprocess AST data into normalized form.

Robbepop avatar May 11 '18 00:05 Robbepop