Add support for optimizing exists-forall problems.
authorAlberto Gonzalez <boqwxp@airmail.cc>
Sun, 8 Mar 2020 06:34:47 +0000 (06:34 +0000)
committerAlberto Gonzalez <boqwxp@airmail.cc>
Fri, 13 Mar 2020 17:10:29 +0000 (17:10 +0000)
commit0fda8308bccf6f97b31b104ea1e2b000e4b8c7c7
tree7ebed8b82028a5ddc35771917e16aba5774cf354
parentbfeba9ad11847e6a0cbe47f880f3642d5e3a8061
Add support for optimizing exists-forall problems.

Modifies smt2 backend to recognize `$anyconst` etc. assigned to a wire with the `maximize` or `minimize` attribute and emit `; yosys-smt2-maximize` or `; yosys-smt2-minimize` directives as appropriate.
Modifies `backends/smt2/smtbmc.py` and `smtio.py` to recognize those directives and emit a `(maximize ...)` or `(minimize ...)` command at the end of `smt_forall_assert()`, as described in the paper "νZ - An Optimizing SMT Solver" by Nikolaj Bjørner et al.
Adds an example `examples/smtbmc/demo9.v` to show how it can be used.
backends/smt2/smt2.cc
backends/smt2/smtbmc.py
backends/smt2/smtio.py
examples/smtbmc/Makefile
examples/smtbmc/demo9.v [new file with mode: 0644]