mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 00:55:31 +00:00
fix bit2bool bug reported by Jianying Li
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
b533ba39d6
commit
0d400a5ad6
9 changed files with 49 additions and 20 deletions
|
@ -798,7 +798,7 @@ namespace qe {
|
|||
*/
|
||||
expr* reduce_core (app *a) {
|
||||
if (!m_arr_u.is_store (a->get_arg (0))) return a;
|
||||
expr* array = a->get_arg(0);
|
||||
expr* array = a->get_arg(0);
|
||||
unsigned arity = get_array_arity(m.get_sort(array));
|
||||
|
||||
expr* const* js = a->get_args() + 1;
|
||||
|
@ -810,7 +810,7 @@ namespace qe {
|
|||
|
||||
if (is_equals (arity, idxs, js)) {
|
||||
add_idx_cond (cond);
|
||||
return a->get_arg (2);
|
||||
return a->get_arg (a->get_num_args() - 1);
|
||||
}
|
||||
else {
|
||||
cond = m.mk_not (cond);
|
||||
|
|
|
@ -256,6 +256,8 @@ namespace qe {
|
|||
|
||||
void euf_arith_mbi_plugin::project(model_ref& mdl, expr_ref_vector& lits) {
|
||||
TRACE("qe", tout << lits << "\n" << *mdl << "\n";);
|
||||
TRACE("qe", tout << m_solver->get_assertions() << "\n";);
|
||||
|
||||
|
||||
// 1. arithmetical variables - atomic and in purified positions
|
||||
app_ref_vector proxies(m);
|
||||
|
|
|
@ -106,7 +106,6 @@ namespace qe {
|
|||
app_ref_vector get_arith_vars(model_ref& mdl, expr_ref_vector& lits, app_ref_vector& proxies);
|
||||
bool get_literals(model_ref& mdl, expr_ref_vector& lits);
|
||||
void collect_atoms(expr_ref_vector const& fmls);
|
||||
void project(model_ref& mdl, expr_ref_vector& lits);
|
||||
void project_euf(model_ref& mdl, expr_ref_vector& lits, app_ref_vector& avars);
|
||||
void order_avars(model_ref& mdl, expr_ref_vector& lits, app_ref_vector& avars, app_ref_vector const& proxies);
|
||||
void substitute(vector<def> const& defs, expr_ref_vector& lits);
|
||||
|
@ -115,6 +114,7 @@ namespace qe {
|
|||
euf_arith_mbi_plugin(solver* s, solver* emptySolver);
|
||||
~euf_arith_mbi_plugin() override {}
|
||||
mbi_result operator()(expr_ref_vector& lits, model_ref& mdl) override;
|
||||
void project(model_ref& mdl, expr_ref_vector& lits);
|
||||
void block(expr_ref_vector const& lits) override;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue