Using a single condition enumerator in sygus-unif (#2440)
authorHaniel Barbosa <hanielbbarbosa@gmail.com>
Tue, 11 Sep 2018 01:51:03 +0000 (20:51 -0500)
committerAndres Noetzli <andres.noetzli@gmail.com>
Tue, 11 Sep 2018 01:51:03 +0000 (18:51 -0700)
commit1a695dcbe3036ab0f1922c5655c082ec1f14db97
tree96444e8dedeb0b98ba01a7f7b1a7a0c5b2349410
parentf5746ca4a24c1b9f05f5528bc66016668d9a7863
Using a single condition enumerator in sygus-unif (#2440)

This commit allows the use of unification techniques in which the search space for conditions in explored independently of the search space for return values (i.e. there is a single condition enumerator for which we always ask new values, similar to the PBE case).

In comparison with asking the ground solver to come up with a minimal number of condition values to resolve all my separation conflicts:

- _main advantage_: can quickly enumerate relevant condition values for solving the problem
- _main disadvantage_: there are many "spurious" values (as in not useful for actual solutions) that get in the way of "good" values when we build solutions from the lazy trie.

A follow-up PR will introduce an information-gain heuristic for building solutions, which ultimately greatly outperforms the other flavor of sygus-unif.

There is also small improvements for trace messages.
src/options/quantifiers_options.toml
src/theory/quantifiers/sygus/cegis.cpp
src/theory/quantifiers/sygus/cegis_unif.cpp
src/theory/quantifiers/sygus/cegis_unif.h
src/theory/quantifiers/sygus/sygus_unif_rl.cpp
src/theory/quantifiers/sygus/sygus_unif_rl.h