mirror of
https://github.com/Z3Prover/z3
synced 2025-04-22 16:45:31 +00:00
parent
e7960e63da
commit
b41b83cd63
5 changed files with 8 additions and 4 deletions
|
@ -294,6 +294,8 @@ void rewriter_tpl<Config>::process_app(app * t, frame & fr) {
|
|||
tout << "st: " << st;
|
||||
if (m_r) tout << " --->\n" << mk_bounded_pp(m_r, m());
|
||||
tout << "\n";);
|
||||
if (st != BR_FAILED && m().get_sort(m_r) != m().get_sort(t))
|
||||
std::cout << mk_bounded_pp(t, m()) << "\n" << mk_bounded_pp(m_r, m()) << "\n";
|
||||
SASSERT(st != BR_DONE || m().get_sort(m_r) == m().get_sort(t));
|
||||
if (st != BR_FAILED) {
|
||||
result_stack().shrink(fr.m_spos);
|
||||
|
|
|
@ -515,6 +515,7 @@ namespace smt {
|
|||
TRACE("add_eq", tout << "assigning: #" << n1->get_owner_id() << " = #" << n2->get_owner_id() << "\n";);
|
||||
TRACE("add_eq_detail", tout << "assigning\n" << enode_pp(n1, *this) << "\n" << enode_pp(n2, *this) << "\n";
|
||||
tout << "kind: " << js.get_kind() << "\n";);
|
||||
SASSERT(m.get_sort(n1->get_owner()) == m.get_sort(n2->get_owner()));
|
||||
|
||||
m_stats.m_num_add_eq++;
|
||||
enode * r1 = n1->get_root();
|
||||
|
@ -4469,8 +4470,7 @@ namespace smt {
|
|||
if (fcs == FC_DONE) {
|
||||
reset_model();
|
||||
}
|
||||
|
||||
return fcs == FC_DONE;
|
||||
return false;
|
||||
}
|
||||
|
||||
void context::mk_proto_model() {
|
||||
|
|
|
@ -1029,6 +1029,7 @@ namespace smt {
|
|||
|
||||
void push_eq(enode * lhs, enode * rhs, eq_justification const & js) {
|
||||
if (lhs->get_root() != rhs->get_root()) {
|
||||
SASSERT(m.get_sort(lhs->get_owner()) == m.get_sort(rhs->get_owner()));
|
||||
m_eq_propagation_queue.push_back(new_eq(lhs, rhs, js));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -424,6 +424,7 @@ namespace smt {
|
|||
SASSERT(m_model->has_interpretation(f));
|
||||
SASSERT(m_model->get_func_interp(f) == fi);
|
||||
// The entry must be new because n->get_cg() == n
|
||||
SASSERT(f->get_range() == m.get_sort(result));
|
||||
TRACE("model",
|
||||
tout << "insert new entry for:\n" << mk_ismt2_pp(n->get_owner(), m) << "\nargs: ";
|
||||
for (unsigned i = 0; i < num_args; i++) {
|
||||
|
|
|
@ -3120,7 +3120,7 @@ public:
|
|||
void fixed_var_eh(theory_var v1, rational const& bound) {
|
||||
theory_var v2;
|
||||
value_sort_pair key(bound, is_int(v1));
|
||||
if (m_fixed_var_table.find(key, v2)) {
|
||||
if (m_fixed_var_table.find(key, v2) && is_int(v1) == is_int(v2)) {
|
||||
if (static_cast<unsigned>(v2) < th.get_num_vars() && !is_equal(v1, v2)) {
|
||||
auto vi1 = register_theory_var_in_lar_solver(v1);
|
||||
auto vi2 = register_theory_var_in_lar_solver(v2);
|
||||
|
@ -3377,7 +3377,7 @@ public:
|
|||
}
|
||||
else {
|
||||
rational r = get_value(v);
|
||||
TRACE("arith", tout << "v" << v << " := " << r << "\n";);
|
||||
TRACE("arith", tout << mk_pp(o, m) << " v" << v << " := " << r << "\n";);
|
||||
SASSERT("integer variables should have integer values: " && (!a.is_int(o) || r.is_int() || m.canceled()));
|
||||
if (a.is_int(o) && !r.is_int()) r = floor(r);
|
||||
return alloc(expr_wrapper_proc, m_factory->mk_value(r, m.get_sort(o)));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue