mirror of
https://github.com/Z3Prover/z3
synced 2025-04-20 07:36:38 +00:00
fix
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
9c4003d12e
commit
e7065e3984
|
@ -510,6 +510,9 @@ namespace smt {
|
|||
#else
|
||||
strm << "lemma_" << (++m_lemma_id) << ".smt2";
|
||||
#endif
|
||||
if (m_lemma_id == 1303) {
|
||||
verbose_stream() << "lemma\n";
|
||||
}
|
||||
return strm.str();
|
||||
}
|
||||
|
||||
|
|
|
@ -354,6 +354,7 @@ class theory_lra::imp {
|
|||
|
||||
enode* e = mk_enode(n);
|
||||
theory_var v = e->get_th_var(get_id());
|
||||
TRACE("add_bug", tout << mk_pp(n, m) << " - v" << v << "\n");
|
||||
if (v == null_theory_var)
|
||||
v = internalize_linearized_def(n, st);
|
||||
return v;
|
||||
|
@ -372,8 +373,10 @@ class theory_lra::imp {
|
|||
}
|
||||
}
|
||||
|
||||
if (a.is_extended_numeral(arg, val))
|
||||
st.add(internalize_numeral(arg, val), sign);
|
||||
if (a.is_extended_numeral(arg, val)) {
|
||||
st.add(internalize_numeral(arg, val), sign);
|
||||
return;
|
||||
}
|
||||
else if (a.is_mul(arg, arg1, arg2)) {
|
||||
if (a.is_extended_numeral(arg2, val))
|
||||
std::swap(arg1, arg2);
|
||||
|
@ -386,8 +389,7 @@ class theory_lra::imp {
|
|||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
st.add(internalize_term_core(arg), sign);
|
||||
st.add(internalize_term_core(arg), sign);
|
||||
}
|
||||
|
||||
theory_var internalize_numeral(app* n, rational const& val) {
|
||||
|
@ -508,7 +510,7 @@ class theory_lra::imp {
|
|||
return mk_var(n);
|
||||
ctx().internalize(n->get_arg(0), false);
|
||||
ctx().internalize(n->get_arg(1), false);
|
||||
enode* e = mk_enode(n);
|
||||
mk_enode(n);
|
||||
return mk_var(n);
|
||||
}
|
||||
|
||||
|
@ -2852,9 +2854,9 @@ public:
|
|||
CTRACE("arith", m_unassigned_bounds[v] == 0, tout << "missed bound\n";);
|
||||
updt_unassigned_bounds(v, -1);
|
||||
TRACE("arith",
|
||||
ctx().display_literals_verbose(tout, m_core);
|
||||
ctx().display_literals_smt2(tout, m_core);
|
||||
tout << "\n --> ";
|
||||
ctx().display_literal_verbose(tout, lit);
|
||||
ctx().display_literal_smt2(tout, lit);
|
||||
tout << "\n";
|
||||
display_evidence(tout, m_explanation);
|
||||
lp().print_implied_bound(be, tout);
|
||||
|
|
|
@ -888,9 +888,14 @@ namespace smt {
|
|||
|
||||
func_decl* memf, *nextf, *connectedf;
|
||||
|
||||
std::string member, next, connected_sym;
|
||||
unsigned index = r.decl()->get_parameter(0).get_int();
|
||||
member = "member" + std::to_string(index);
|
||||
next = "next" + std::to_string(index);
|
||||
connected_sym = "connected" + std::to_string(index);
|
||||
{
|
||||
sort* dom[2] = { s, listS };
|
||||
recfun::promise_def mem = p.ensure_def(symbol("member"), 2, dom, m.mk_bool_sort(), true);
|
||||
recfun::promise_def mem = p.ensure_def(symbol(member), 2, dom, m.mk_bool_sort(), true);
|
||||
memf = mem.get_def()->get_decl();
|
||||
|
||||
var_ref xV(m.mk_var(1, s), m);
|
||||
|
@ -913,7 +918,7 @@ namespace smt {
|
|||
|
||||
{
|
||||
sort* dom[5] = { s, s, listS, listS, tup };
|
||||
recfun::promise_def nxt = p.ensure_def(symbol("next"), 5, dom, tup, true);
|
||||
recfun::promise_def nxt = p.ensure_def(symbol(next), 5, dom, tup, true);
|
||||
nextf = nxt.get_def()->get_decl();
|
||||
|
||||
expr_ref next_body(m);
|
||||
|
@ -934,7 +939,7 @@ namespace smt {
|
|||
|
||||
{
|
||||
sort* dom[3] = { listS, s, listS };
|
||||
recfun::promise_def connected = p.ensure_def(symbol("connected"), 3, dom, m.mk_bool_sort(), true);
|
||||
recfun::promise_def connected = p.ensure_def(symbol(connected_sym), 3, dom, m.mk_bool_sort(), true);
|
||||
connectedf = connected.get_def()->get_decl();
|
||||
var_ref AV(m.mk_var(2, listS), m);
|
||||
var_ref dstV(m.mk_var(1, s), m);
|
||||
|
|
Loading…
Reference in a new issue