Improve polynomial anyterm grammar (#3566)
authorHaniel Barbosa <hanielbbarbosa@gmail.com>
Wed, 17 Jun 2020 13:38:40 +0000 (10:38 -0300)
committerGitHub <noreply@github.com>
Wed, 17 Jun 2020 13:38:40 +0000 (10:38 -0300)
commit5915a62d767dd8a33dd13be7c6545c6553442878
treee2ac8e63946ad0bade14cfec8c1bd40ca1f38da5
parent2e4d33f5ec1b097075fe0ad334e4f4f354e30679
Improve polynomial anyterm grammar (#3566)

This changes the grammar construction in the case of anyterm + polynomial grammar so that the binary predicates EQUAL and LEQ are changed to unary predicates lambda x : ANYTERM. P(x, ZERO) rather than lambda xy. P(ANYTERM, ANYTERM), in which ZERO is a 0 constant of the respective type. Currently integer and bit-vectors are supported for this transformation.

This avoid enumerating spurious terms and can lead to significant improvements in enumeration (although not necessarily in solving speed given the current unstable nature of ANYTERM usage).
src/theory/quantifiers/sygus/sygus_grammar_cons.cpp
src/theory/quantifiers/sygus/sygus_grammar_cons.h
test/regress/regress1/sygus/issue3507.smt2