mirror of
https://github.com/Z3Prover/z3
synced 2026-05-05 09:55:15 +00:00
allow literals to be false in model validation - we can't enforce lack of propagation after internalizing literals, especially if literals are repeated (modulo permutation of equality)
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
3629cd9447
commit
e59ee306e9
2 changed files with 7 additions and 11 deletions
|
|
@ -697,9 +697,10 @@ namespace seq {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
euf::snode* rebuilt = nullptr;
|
euf::snode* rebuilt = nullptr;
|
||||||
for (unsigned k = 0; k < result.size(); ++k)
|
for (auto tok : result)
|
||||||
rebuilt = (k == 0) ? result[k] : sg.mk_concat(rebuilt, result[k]);
|
rebuilt = rebuilt ? sg.mk_concat(rebuilt, tok) : tok;
|
||||||
if (!rebuilt) rebuilt = sg.mk_empty_seq(side->get_sort());
|
if (!rebuilt)
|
||||||
|
rebuilt = sg.mk_empty_seq(side->get_sort());
|
||||||
return rebuilt;
|
return rebuilt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -702,16 +702,11 @@ namespace smt {
|
||||||
break;
|
break;
|
||||||
case l_false:
|
case l_false:
|
||||||
// this should not happen because nielsen checks for this before returning a satisfying path.
|
// this should not happen because nielsen checks for this before returning a satisfying path.
|
||||||
IF_VERBOSE(0, verbose_stream()
|
IF_VERBOSE(1, verbose_stream()
|
||||||
<< "nseq final_check: nielsen assumption " << c.fml << " is false\n";);
|
<< "nseq final_check: nielsen assumption " << c.fml << " is false\n";);
|
||||||
ctx.force_phase(lit);
|
ctx.force_phase(lit);
|
||||||
if (!was_internalized) {
|
has_undef = true;
|
||||||
has_undef = true;
|
ctx.force_phase(lit);
|
||||||
ctx.force_phase(lit);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
TRACE(seq, tout << "assigned to false: " << c.fml << "\n");
|
|
||||||
UNREACHABLE();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue