Implement simple tracking of instantiation lemmas (#6077)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Tue, 30 Mar 2021 15:05:29 +0000 (10:05 -0500)
committerGitHub <noreply@github.com>
Tue, 30 Mar 2021 15:05:29 +0000 (15:05 +0000)
commit4948485775b04d95dbf69eee311bf452d0bfac3d
tree536a017cc5a8cce04cd9863c8fb0671cc9f7f5e1
parent05db3e9511c1c485b27a8e3467bcae74659dfd9a
Implement simple tracking of instantiation lemmas (#6077)

We require tracking of instantiation lemmas for quantifier elimination. Recently, this feature was removed in favor of reconstructing instantiations via substitutions. This does not quite work if instantiation lemmas have more complex post-processing, e.g. virtual term substitution.

This PR reimplements a much simpler form of instantiation tracking that simply adds instantiation bodies to a vector, per quantified formula. It uses this vector for quantifier elimination.

Fixes #5899.
src/smt/quant_elim_solver.cpp
src/theory/quantifiers/cegqi/inst_strategy_cegqi.cpp
src/theory/quantifiers/instantiate.cpp
src/theory/quantifiers/instantiate.h
src/theory/quantifiers_engine.cpp
src/theory/quantifiers_engine.h
test/regress/CMakeLists.txt
test/regress/regress1/quantifiers/issue5899-qe.smt2 [new file with mode: 0644]