Allow SyGuS subsolver to be reused in incremental mode (#7785)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 20 Dec 2021 15:23:16 +0000 (09:23 -0600)
committerGitHub <noreply@github.com>
Mon, 20 Dec 2021 15:23:16 +0000 (15:23 +0000)
commit20d040d79b5e0b3d42e605b1e951f837b66422c1
tree6219e889577b819b236205ba3c87b9a09bdfee30
parent4120c564c2ac0d6b80a1764f1d191c8993897bc7
Allow SyGuS subsolver to be reused in incremental mode (#7785)

This allows SyGuS subsolvers to be called multiple times to produce solutions for a given set of SyGuS constraints using a new command check-synth-next.

By default, the SyGuS subsolver will generate a new solution for each successive check-synth.

This simplifies the internal SyGuS solver in several ways for this purpose. It also ensures that solutions are cached; current master may recompute solutions in the same state more than once if asked, which is no longer the case.

This completes our support for incremental SyGuS.
28 files changed:
src/api/cpp/cvc5.cpp
src/api/cpp/cvc5.h
src/api/java/io/github/cvc5/api/Solver.java
src/api/java/jni/solver.cpp
src/api/python/cvc5.pxd
src/api/python/cvc5.pxi
src/parser/smt2/Smt2.g
src/printer/printer.cpp
src/printer/printer.h
src/printer/smt2/smt2_printer.cpp
src/printer/smt2/smt2_printer.h
src/smt/command.cpp
src/smt/command.h
src/smt/smt_mode.cpp
src/smt/smt_mode.h
src/smt/solver_engine.cpp
src/smt/solver_engine.h
src/smt/solver_engine_state.cpp
src/smt/solver_engine_state.h
src/smt/sygus_solver.cpp
src/smt/sygus_solver.h
src/theory/quantifiers/sygus/synth_conjecture.cpp
src/theory/quantifiers/sygus/synth_conjecture.h
test/regress/CMakeLists.txt
test/regress/regress1/sygus/incremental-stream-ex.sy [new file with mode: 0644]
test/unit/api/cpp/solver_black.cpp
test/unit/api/java/SolverTest.java
test/unit/api/python/test_solver.py