Enable new implementation of CEGQI based on nested quantifier elimination (#5477)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 19 Nov 2020 22:53:48 +0000 (16:53 -0600)
committerGitHub <noreply@github.com>
Thu, 19 Nov 2020 22:53:48 +0000 (16:53 -0600)
commitf2ed7b1aebc175b971e3cebf4c0b2fff6e4e895f
tree9d67467344399282909475f3cf891639f8abbaf8
parent7191e58e5561a159c0cd3b81fddbe311ba70a45b
Enable new implementation of CEGQI based on nested quantifier elimination (#5477)

This replaces the old implementation of CEGQI based on nested quantifier elimination (--cegqi-nested-qe) with the new implementation.

The previous implementation used some convoluted internal attributes to manage dependencies between quantified formulas, the new implementation is much simpler: it simply eliminates nested quantification eagerly.

Fixes #5365, fixes #5279, fixes #4849, fixes #4433.

This PR also required fixes related to how quantifier elimination is computed.
20 files changed:
src/smt/quant_elim_solver.cpp
src/smt/set_defaults.cpp
src/smt/smt_engine.cpp
src/smt/smt_engine.h
src/theory/quantifiers/cegqi/ceg_instantiator.cpp
src/theory/quantifiers/cegqi/inst_strategy_cegqi.cpp
src/theory/quantifiers/cegqi/inst_strategy_cegqi.h
src/theory/quantifiers/inst_match_trie.cpp
src/theory/quantifiers/inst_match_trie.h
src/theory/quantifiers/instantiate.cpp
src/theory/quantifiers/sygus/ce_guided_single_inv.cpp
src/theory/quantifiers_engine.cpp
src/theory/quantifiers_engine.h
src/theory/theory_engine.cpp
src/theory/theory_engine.h
test/regress/CMakeLists.txt
test/regress/regress1/quantifiers/issue4433-nqe.smt2 [new file with mode: 0644]
test/regress/regress1/quantifiers/issue4849-nqe.smt2 [new file with mode: 0644]
test/regress/regress1/quantifiers/issue5279-nqe.smt2 [new file with mode: 0644]
test/regress/regress1/quantifiers/issue5365-nqe.smt2 [new file with mode: 0644]