diff --git a/src/sat/smt/array_solver.cpp b/src/sat/smt/array_solver.cpp index 4e6f75c4d..bb588948e 100644 --- a/src/sat/smt/array_solver.cpp +++ b/src/sat/smt/array_solver.cpp @@ -176,6 +176,7 @@ namespace array { TRACE("array", tout << "v" << v_child << " - " << ctx.bpp(select) << " " << ctx.bpp(child) << " prop: " << should_prop_upward(get_var_data(v_child)) << "\n";); if (can_beta_reduce(child)) push_axiom(select_axiom(select, child)); + propagate_parent_select_axioms(v_child); } void solver::add_lambda(theory_var v, euf::enode* lambda) { diff --git a/src/sat/smt/fpa_solver.cpp b/src/sat/smt/fpa_solver.cpp index 42e3f8726..13837d0ce 100644 --- a/src/sat/smt/fpa_solver.cpp +++ b/src/sat/smt/fpa_solver.cpp @@ -93,7 +93,10 @@ namespace fpa { SASSERT(m.is_bool(e)); if (!visit_rec(m, e, sign, root, redundant)) return sat::null_literal; - return expr2literal(e); + sat::literal lit = expr2literal(e); + if (sign) + lit.neg(); + return lit; } void solver::internalize(expr* e, bool redundant) {