mirror of
https://github.com/Z3Prover/z3
synced 2025-04-13 12:28:44 +00:00
fix #2879. relax benign restriction on eq propagation justification
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
794aafa6f8
commit
f9917edf6c
|
@ -182,7 +182,7 @@ namespace smt {
|
|||
}
|
||||
|
||||
void eq_propagation_justification::get_antecedents(conflict_resolution & cr) {
|
||||
cr.mark_eq(m_node1, m_node2);
|
||||
if (m_node1 != m_node2) cr.mark_eq(m_node1, m_node2);
|
||||
}
|
||||
|
||||
proof * eq_propagation_justification::mk_proof(conflict_resolution & cr) {
|
||||
|
|
|
@ -181,7 +181,6 @@ namespace smt {
|
|||
enode * m_node2;
|
||||
public:
|
||||
eq_propagation_justification(enode * n1, enode * n2):m_node1(n1), m_node2(n2) {
|
||||
SASSERT(n1 != n2);
|
||||
}
|
||||
|
||||
void get_antecedents(conflict_resolution & cr) override;
|
||||
|
|
|
@ -5830,27 +5830,7 @@ void theory_seq::assign_eh(bool_var v, bool is_true) {
|
|||
}
|
||||
else if (m_util.str.is_contains(e, e1, e2)) {
|
||||
expr_ref_vector disj(m);
|
||||
// disabled pending regression on issue 1196
|
||||
if (false && m_seq_rewrite.reduce_contains(e1, e2, disj)) {
|
||||
literal_vector lits;
|
||||
literal lit = mk_literal(e);
|
||||
lits.push_back(~lit);
|
||||
for (expr* d : disj) {
|
||||
lits.push_back(mk_literal(d));
|
||||
}
|
||||
++m_stats.m_add_axiom;
|
||||
|
||||
{
|
||||
std::function<expr*(void)> fn = [&]() { return m.mk_implies(e, m.mk_or(disj.size(), disj.c_ptr())); };
|
||||
scoped_trace_stream _sts(*this, fn);
|
||||
ctx.mk_th_axiom(get_id(), lits.size(), lits.c_ptr());
|
||||
}
|
||||
|
||||
for (expr* d : disj) {
|
||||
add_axiom(lit, ~mk_literal(d));
|
||||
}
|
||||
}
|
||||
else if (is_true) {
|
||||
if (is_true) {
|
||||
expr_ref f1 = mk_skolem(m_indexof_left, e1, e2);
|
||||
expr_ref f2 = mk_skolem(m_indexof_right, e1, e2);
|
||||
f = mk_concat(f1, e2, f2);
|
||||
|
|
Loading…
Reference in a new issue