Fixes for witness terms appearing in CEGQI instantiations (#8350)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Tue, 22 Mar 2022 07:43:30 +0000 (02:43 -0500)
committerGitHub <noreply@github.com>
Tue, 22 Mar 2022 07:43:30 +0000 (07:43 +0000)
commit23c0a0b79688cf86f16029aa0ef19864c63d7c85
tree4a7f2a4c2b38d51e6139858e48be6f80392f188d
parentc914f3eca82aaf51dd9a208574dab6aa3b000201
Fixes for witness terms appearing in CEGQI instantiations (#8350)

Fixes #8344.

We now have cases where witness terms e.g. `(witness x : String. len(x) = N)` appear in model values.  These terms require special care in CEGQI.

There are 2 fixes in this PR:
(1) we update our policy on what a legal term is,
(2) we erase annotations from witness terms appearing in instantiations, which is required for ensuring that proofs are consistent.  Otherwise, the skolemization lemma for a witness term does not introduce the same skolem.
src/expr/CMakeLists.txt
src/expr/annotation_elim_node_converter.cpp [new file with mode: 0644]
src/expr/annotation_elim_node_converter.h [new file with mode: 0644]
src/theory/quantifiers/cegqi/ceg_instantiator.cpp
test/regress/cli/CMakeLists.txt
test/regress/cli/regress1/quantifiers/issue8344-cegqi-string-witness.smt2 [new file with mode: 0644]