Fix issues related to eliminating extended arithmetic operators (#5475)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 19 Nov 2020 17:44:35 +0000 (11:44 -0600)
committerGitHub <noreply@github.com>
Thu, 19 Nov 2020 17:44:35 +0000 (11:44 -0600)
commit3654512dd8b341c5725e550d438b23508493b991
tree367684e5521e35a452ef669a4e58bb1b5005509c
parentb0130a1e032c201fab3c4b19f25871428b761967
Fix issues related to eliminating extended arithmetic operators (#5475)

This fixes 2 issues related to eliminating arithmetic operators:
(1) counterexample lemmas in CEGQI were not being preprocessed
(2) ensureLiteral was not doing term formula removal.
This corrects these two issues. Now ensureLiteral does full theory preprocessing on the term we are ensuring literal for, meaning this may trigger lemmas if the term contains extended arithmetic operators like div.

Fixes #5469, fixes #5470, fixes #5471.

This adds --sygus-inst to 2 of these benchmarks which moreover makes them solvable.

This also improves our assertions and trace messages.
src/theory/arith/theory_arith.cpp
src/theory/quantifiers/cegqi/inst_strategy_cegqi.cpp
src/theory/theory_engine.cpp
src/theory/theory_engine.h
src/theory/theory_preprocessor.cpp
test/regress/CMakeLists.txt
test/regress/regress1/quantifiers/issue5469-aext.smt2 [new file with mode: 0644]
test/regress/regress1/quantifiers/issue5470-aext.smt2 [new file with mode: 0644]
test/regress/regress1/quantifiers/issue5471-aext.smt2 [new file with mode: 0644]