mirror of
https://github.com/Z3Prover/z3
synced 2025-04-06 17:44:08 +00:00
add case for ite
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
5365952796
commit
f422e26b3c
|
@ -2476,7 +2476,10 @@ namespace sls {
|
|||
return ctx.get_value(e->get_arg(0)) == ctx.get_value(e->get_arg(1));
|
||||
case OP_DISTINCT:
|
||||
return false;
|
||||
case OP_ITE:
|
||||
return get_bool_value(e->get_arg(0)) ? get_bool_value(e->get_arg(1)) : get_bool_value(e->get_arg(2));
|
||||
default:
|
||||
verbose_stream() << mk_pp(e, m) << "\n";
|
||||
NOT_IMPLEMENTED_YET();
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -431,6 +431,7 @@ namespace smt {
|
|||
justification * js = nullptr;
|
||||
if (m.proofs_enabled())
|
||||
js = alloc(dyn_ack_cc_justification, n1, n2);
|
||||
verbose_stream() << "dynack-clause\n";
|
||||
clause * cls = m_context.mk_clause(lits.size(), lits.data(), js, CLS_TH_LEMMA, del_eh);
|
||||
if (!cls) {
|
||||
dealloc(del_eh);
|
||||
|
@ -490,6 +491,7 @@ namespace smt {
|
|||
ctx.mark_as_relevant(eq1);
|
||||
ctx.mark_as_relevant(eq2);
|
||||
ctx.mark_as_relevant(eq3);
|
||||
verbose_stream() << "dynack-transitivity\n";
|
||||
clause * cls = ctx.mk_clause(lits.size(), lits.data(), js, CLS_TH_LEMMA, del_eh);
|
||||
if (!cls) {
|
||||
dealloc(del_eh);
|
||||
|
|
|
@ -3438,6 +3438,7 @@ public:
|
|||
VERIFY(validate_conflict());
|
||||
if (params().m_arith_dump_lemmas)
|
||||
dump_conflict();
|
||||
|
||||
if (is_conflict) {
|
||||
ctx().set_conflict(
|
||||
ctx().mk_justification(
|
||||
|
@ -3751,19 +3752,22 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
unsigned m_num_dumped_lemmas = 0;
|
||||
|
||||
void dump_assign_lemma(literal lit) {
|
||||
m_core.push_back(~lit);
|
||||
std::cout << "; assign lemma " << (m_num_dumped_lemmas++) << "\n";
|
||||
ctx().display_lemma_as_smt_problem(std::cout, m_core.size(), m_core.data(), m_eqs.size(), m_eqs.data(), lit);
|
||||
m_core.pop_back();
|
||||
std::cout << "(reset)\n";
|
||||
}
|
||||
|
||||
void dump_conflict() {
|
||||
std::cout << "; conflict " << (m_num_dumped_lemmas++) << "\n";
|
||||
ctx().display_lemma_as_smt_problem(std::cout, m_core.size(), m_core.data(), m_eqs.size(), m_eqs.data());
|
||||
std::cout << "(reset)\n";
|
||||
}
|
||||
|
||||
void dump_eq(enode* x, enode* y) {
|
||||
std::cout << "; equality propagation " << (m_num_dumped_lemmas++) << "\n";
|
||||
ctx().display_lemma_as_smt_problem(std::cout, m_core.size(), m_core.data(), m_eqs.size(), m_eqs.data(), false_literal, symbol::null, x, y);
|
||||
std::cout << "(reset)\n";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue