mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
bv fixes and tuning (#4703)
* heap size information * bv tuning * fix #4701 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * throw on set-has-size #4700 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
ba5c9c3883
commit
b7ec4489a6
21 changed files with 339 additions and 169 deletions
|
@ -219,6 +219,7 @@ namespace smt {
|
|||
{
|
||||
std::function<expr*(void)> fn = [&]() { return m.mk_or(bound, m.mk_not(bound)); };
|
||||
scoped_trace_stream _sts(*this, fn);
|
||||
IF_VERBOSE(10, verbose_stream() << "branch " << bound << "\n");
|
||||
TRACE("arith_int", tout << mk_bounded_pp(bound, m) << "\n";);
|
||||
ctx.internalize(bound, true);
|
||||
ctx.mark_as_relevant(bound.get());
|
||||
|
@ -296,7 +297,7 @@ namespace smt {
|
|||
continue;
|
||||
}
|
||||
if (!is_int(x)) {
|
||||
TRACE("theory_arith_int", display_row(tout << "!int: ", r, true); );
|
||||
TRACE("arith_int", display_row(tout << "!int: ", r, true); );
|
||||
is_tight = false;
|
||||
continue;
|
||||
}
|
||||
|
@ -324,7 +325,7 @@ namespace smt {
|
|||
row[i] *= denom.to_rational();
|
||||
}
|
||||
}
|
||||
TRACE("theory_arith_int",
|
||||
TRACE("arith_int",
|
||||
tout << "extracted row:\n";
|
||||
for (unsigned i = 0; i < max_row; ++i) {
|
||||
tout << row[i] << " ";
|
||||
|
@ -365,7 +366,7 @@ namespace smt {
|
|||
}
|
||||
}
|
||||
if (pol.empty()) {
|
||||
TRACE("theory_arith_int", tout << "The witness is trivial\n";);
|
||||
TRACE("arith_int", tout << "The witness is trivial\n";);
|
||||
return false;
|
||||
}
|
||||
expr_ref p1(get_manager()), p2(get_manager());
|
||||
|
@ -419,6 +420,7 @@ namespace smt {
|
|||
scoped_trace_stream _sts(*this, fn);
|
||||
ctx.internalize(bound, true);
|
||||
}
|
||||
IF_VERBOSE(10, verbose_stream() << "free " << bound << "\n");
|
||||
ctx.mark_as_relevant(bound.get());
|
||||
result = true;
|
||||
}
|
||||
|
@ -672,6 +674,7 @@ namespace smt {
|
|||
ctx.internalize(bound, true);
|
||||
}
|
||||
l = ctx.get_literal(bound);
|
||||
IF_VERBOSE(10, verbose_stream() << "cut " << bound << "\n");
|
||||
ctx.mark_as_relevant(l);
|
||||
dump_lemmas(l, ante);
|
||||
auto js = ctx.mk_justification(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue