Add recursive function definitions to subsolver in sygus (#6824)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 1 Jul 2021 22:35:13 +0000 (17:35 -0500)
committerGitHub <noreply@github.com>
Thu, 1 Jul 2021 22:35:13 +0000 (22:35 +0000)
commitb4e98013a8e2572545ec3f637dd1caa06e3f7207
tree5d133f561aebe035a33c8f9256fb7097877be003
parentc2a5fcf1ae85d007bccd8fa294a7b66287972c65
Add recursive function definitions to subsolver in sygus (#6824)

This passes recursive function definitions to the verification subsolver in sygus, with a default bounded limit of 3. This required improving the interface for setting up subsolvers by allowing custom options; the sygus solver statically computes an instance of the options that it uses in all calls.

This allows us to solve non-PBE sygus problems with recursive function definitions. The PR adds an example.
13 files changed:
src/options/quantifiers_options.toml
src/smt/optimization_solver.cpp
src/theory/quantifiers/expr_miner.cpp
src/theory/quantifiers/fun_def_evaluator.cpp
src/theory/quantifiers/fun_def_evaluator.h
src/theory/quantifiers/sygus/sygus_repair_const.cpp
src/theory/quantifiers/sygus/synth_conjecture.cpp
src/theory/quantifiers/sygus/synth_conjecture.h
src/theory/quantifiers/sygus/synth_engine.cpp
src/theory/smt_engine_subsolver.cpp
src/theory/smt_engine_subsolver.h
test/regress/CMakeLists.txt
test/regress/regress2/sygus/sumn_recur_synth.sy [new file with mode: 0644]