Simplify method for inferring proxy lemmas in strings (#5789)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 10 Feb 2021 15:11:02 +0000 (09:11 -0600)
committerGitHub <noreply@github.com>
Wed, 10 Feb 2021 15:11:02 +0000 (09:11 -0600)
commite9408ca21267616bb799ef5f7fda85a1fee9c07c
treec1abfe14a791ed162e91e31e595a19d818294079
parent261886a6ddc7fb93afcb7492a7e22884d6f75c96
Simplify method for inferring proxy lemmas in strings (#5789)

This PR simplifies our heuristic for inferring when an explanation for a strings lemma can be minimized based on proxy variable definitions. In particular, we do not turn solved equalities for proxy variables into substitutions. This aspect of the heuristic is incompatible with the new eager solver work, and moreover is buggy since substitutions should not be applied within string terms. The latter was leading the incorrect models on the 2 issues fixed by this PR.

Current results on the eager solver on SMT-LIB shows this change has very little performance impact.

Fixes #5692, fixes #5610.
src/theory/strings/inference_manager.cpp
src/theory/strings/term_registry.cpp
src/theory/strings/term_registry.h
test/regress/CMakeLists.txt
test/regress/regress1/strings/issue5610-2-infer-proxy.smt2 [new file with mode: 0644]
test/regress/regress1/strings/issue5610-infer-proxy.smt2 [new file with mode: 0644]
test/regress/regress1/strings/issue5692-infer-proxy.smt2 [new file with mode: 0644]