From e05f5ef6d14291a83a3f7df6afa04de6a6cc8033 Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner Date: Sun, 11 Jul 2021 06:15:20 +0200 Subject: [PATCH] na Signed-off-by: Nikolaj Bjorner --- src/sat/smt/euf_internalize.cpp | 4 ++++ src/sat/smt/q_solver.cpp | 7 +++---- src/smt/theory_lra.cpp | 9 +++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/sat/smt/euf_internalize.cpp b/src/sat/smt/euf_internalize.cpp index 0a7aa717f..caf12235c 100644 --- a/src/sat/smt/euf_internalize.cpp +++ b/src/sat/smt/euf_internalize.cpp @@ -139,6 +139,10 @@ namespace euf { sat::literal lit2 = literal(v, false); s().mk_clause(~lit, lit2, sat::status::th(m_is_redundant, m.get_basic_family_id())); s().mk_clause(lit, ~lit2, sat::status::th(m_is_redundant, m.get_basic_family_id())); + if (relevancy_enabled()) { + add_root(~lit, lit2); + add_root(lit, ~lit2); + } lit = lit2; } diff --git a/src/sat/smt/q_solver.cpp b/src/sat/smt/q_solver.cpp index eebb4a721..b114e844f 100644 --- a/src/sat/smt/q_solver.cpp +++ b/src/sat/smt/q_solver.cpp @@ -41,7 +41,7 @@ namespace q { quantifier* q = to_quantifier(e); auto const& exp = expand(q); - if (exp.size() > 1 && is_forall(q)) { + if (exp.size() > 1 && is_forall(q) && !l.sign()) { for (expr* e : exp) { sat::literal lit = ctx.internalize(e, l.sign(), false, false); add_clause(~l, lit); @@ -50,14 +50,13 @@ namespace q { } return; } - if (exp.size() > 1 && is_exists(q)) { + if (exp.size() > 1 && is_exists(q) /* && l.sign() */) { sat::literal_vector lits; lits.push_back(~l); for (expr* e : exp) lits.push_back(ctx.internalize(e, l.sign(), false, false)); add_clause(lits); - if (ctx.relevancy_enabled()) - ctx.add_root(lits); + ctx.add_root(lits); return; } diff --git a/src/smt/theory_lra.cpp b/src/smt/theory_lra.cpp index fe7f4a5e8..abe10d0f3 100644 --- a/src/smt/theory_lra.cpp +++ b/src/smt/theory_lra.cpp @@ -1170,14 +1170,11 @@ public: VERIFY(a.is_is_int(n, x)); literal eq = th.mk_eq(a.mk_to_real(a.mk_to_int(x)), x, false); literal is_int = ctx().get_literal(n); - if (m.has_trace_stream()) { - app_ref body(m); - body = m.mk_iff(n, ctx().bool_var2expr(eq.var())); - th.log_axiom_instantiation(body); - } + scoped_trace_stream _sts1(th, ~is_int, eq); + scoped_trace_stream _sts2(th, is_int, ~eq); mk_axiom(~is_int, eq); mk_axiom(is_int, ~eq); - if (m.has_trace_stream()) m.trace_stream() << "[end-of-instance]\n"; + } // create axiom for