mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
cleanup bit2bool from models #3847
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
5c9fd90031
commit
8e6bb30c82
3 changed files with 15 additions and 22 deletions
|
@ -1121,13 +1121,7 @@ expr_ref pred_transformer::get_cover_delta(func_decl* p_orig, int level)
|
|||
// adjust result according to model converter.
|
||||
unsigned arity = m_head->get_arity();
|
||||
model_ref md = alloc(model, m);
|
||||
if (arity == 0) {
|
||||
md->register_decl(m_head, result);
|
||||
} else {
|
||||
func_interp* fi = alloc(func_interp, m, arity);
|
||||
fi->set_else(result);
|
||||
md->register_decl(m_head, fi);
|
||||
}
|
||||
md->register_decl(m_head, result);
|
||||
model_converter_ref mc = ctx.get_model_converter();
|
||||
apply(mc, md);
|
||||
if (p_orig->get_arity() == 0) {
|
||||
|
|
|
@ -73,7 +73,7 @@ expr_ref inductive_property::fixup_clauses(expr* fml) const
|
|||
expr_ref result(m);
|
||||
flatten_and(fml, conjs);
|
||||
for (unsigned i = 0; i < conjs.size(); ++i) {
|
||||
conjs[i] = fixup_clause(conjs[i].get());
|
||||
conjs[i] = fixup_clause(conjs.get(i));
|
||||
}
|
||||
bool_rewriter(m).mk_and(conjs.size(), conjs.c_ptr(), result);
|
||||
return result;
|
||||
|
@ -83,19 +83,17 @@ std::string inductive_property::to_string() const
|
|||
{
|
||||
std::stringstream stm;
|
||||
model_ref md;
|
||||
expr_ref result(m);
|
||||
to_model(md);
|
||||
model_smt2_pp(stm, m, *md.get(), 0);
|
||||
stm << *md;
|
||||
return stm.str();
|
||||
}
|
||||
|
||||
void inductive_property::to_model(model_ref& md) const
|
||||
{
|
||||
void inductive_property::to_model(model_ref& md) const {
|
||||
md = alloc(model, m);
|
||||
vector<relation_info> const& rs = m_relation_info;
|
||||
expr_ref_vector conjs(m);
|
||||
for (unsigned i = 0; i < rs.size(); ++i) {
|
||||
relation_info ri(rs[i]);
|
||||
for (relation_info const& ri_ : rs) {
|
||||
relation_info ri(ri_);
|
||||
func_decl * pred = ri.m_pred;
|
||||
expr_ref prop = fixup_clauses(ri.m_body);
|
||||
func_decl_ref_vector const& sig = ri.m_vars;
|
||||
|
@ -105,16 +103,11 @@ void inductive_property::to_model(model_ref& md) const
|
|||
sig_vars.push_back(m.mk_const(sig[sig.size() - j - 1]));
|
||||
}
|
||||
expr_abstract(m, 0, sig_vars.size(), sig_vars.c_ptr(), prop, q);
|
||||
if (sig.empty()) {
|
||||
md->register_decl(pred, q);
|
||||
} else {
|
||||
func_interp* fi = alloc(func_interp, m, sig.size());
|
||||
fi->set_else(q);
|
||||
md->register_decl(pred, fi);
|
||||
}
|
||||
md->register_decl(pred, q);
|
||||
}
|
||||
TRACE("spacer", model_smt2_pp(tout, m, *md, 0););
|
||||
TRACE("spacer", tout << *md;);
|
||||
apply(const_cast<model_converter_ref&>(m_mc), md);
|
||||
md->compress();
|
||||
}
|
||||
|
||||
expr_ref inductive_property::to_expr() const
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue