Use fast enumeration by default for Boolean predicate synthesis (#6440)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Sun, 25 Apr 2021 20:05:15 +0000 (15:05 -0500)
committerGitHub <noreply@github.com>
Sun, 25 Apr 2021 20:05:15 +0000 (20:05 +0000)
commitf809439274390d754c158bc105f769df3a55ee42
tree8694d31eab9fe6141b68637f37169c16d83eb748
parentdce2fd01164df92e66e94c5aee4f95491d3ab5d9
Use fast enumeration by default for Boolean predicate synthesis (#6440)

This updates the policy of when to apply smart enumeration: we do so if the grammar has ITE or admits Boolean connective terms. Previously, we applied smart enumeration for ITE and all Boolean grammars. However, this is misguided since e.g. partial evaluation unfolding has no opportunity to be effective if the enumerated terms are only Boolean literals.

This significantly improves run time on a challenge benchmark from @makaimann.
src/theory/quantifiers/sygus/term_database_sygus.cpp
src/theory/quantifiers/sygus/type_info.cpp
src/theory/quantifiers/sygus/type_info.h