3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-11 19:53:34 +00:00

z3str3: check relevancy of subformulas for negated non-relevant formulas in bitvector model construction

This commit is contained in:
Murphy Berzish 2020-02-27 18:56:58 -05:00 committed by Nikolaj Bjorner
parent f18bd7bf08
commit 01299dacbf

View file

@ -882,8 +882,18 @@ namespace smt {
for (expr * f : formulas) {
if (!get_context().is_relevant(f)) {
TRACE("str_fl", tout << "skip reducing formula " << mk_pp(f, m) << ", not relevant" << std::endl;);
continue;
expr * subformula = nullptr;
if (m.is_not(f, subformula)) {
if (!get_context().is_relevant(subformula)) {
TRACE("str_fl", tout << "skip reducing formula " << mk_pp(f, m) << ", not relevant (and neither is its subformula)" << std::endl;);
continue;
} else {
TRACE("str_fl", tout << "considering formula " << mk_pp(f, m) << ", its subformula is relevant but it is not" << std::endl;);
}
} else {
TRACE("str_fl", tout << "skip reducing formula " << mk_pp(f, m) << ", not relevant" << std::endl;);
continue;
}
}
// reduce string formulas only. ignore others
sort * fSort = m.get_sort(f);