Towards support for incremental sygus (#7736)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Tue, 7 Dec 2021 15:46:49 +0000 (09:46 -0600)
committerGitHub <noreply@github.com>
Tue, 7 Dec 2021 15:46:49 +0000 (15:46 +0000)
commit4f61c76d8170e97c431ea9529f493cb42a9a3e5f
treeb59921fd3ba13d4e8f4c968386a88a2e79f88639
parent77415ff440424e1071c538f13ec1684feffad7d6
Towards support for incremental sygus (#7736)

This makes several key changes to smt::SygusSolver in preparation for incremental mode.

The key idea is to use a subsolver that:

may take multiple check-sat commands for an encoded synthesis conjecture
does not push/pop
is reconstructed when the SyGuS conjecture becomes stale.
This is motivated by 2 use cases of incremental SyGuS:

Where constraints are push/pop, in which case we should start from scratch, since the SyGuS solver uses symmetry breaking techniques that become unsound when new constraints are added.
Where multiple solutions are needed for the same set of constraints, in which the state of the subsolver should be preserved.
This functionality is still guarded by an exception.

A follow up PR will make several further changes to allow for the above use cases.
src/preprocessing/passes/sygus_inference.cpp
src/smt/abduction_solver.cpp
src/smt/set_defaults.cpp
src/smt/solver_engine.cpp
src/smt/solver_engine.h
src/smt/sygus_solver.cpp
src/smt/sygus_solver.h