3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

Bug fixes for underspecified FP operations.

This commit is contained in:
Christoph M. Wintersteiger 2016-10-12 18:37:41 +01:00
parent bc257211d6
commit 7e705a2d32
7 changed files with 139 additions and 107 deletions

View file

@ -715,14 +715,14 @@ namespace smt {
fpa2bv_converter::uf2bvuf_t const & uf2bvuf = m_converter.get_uf2bvuf();
for (fpa2bv_converter::uf2bvuf_t::iterator it = uf2bvuf.begin();
it != uf2bvuf.end();
it++) {
mg.hide(it->m_value);
it != uf2bvuf.end();
it++) {
//mg.hide(it->m_value);
}
fpa2bv_converter::special_t const & specials = m_converter.get_min_max_specials();
for (fpa2bv_converter::special_t::iterator it = specials.begin();
it != specials.end();
it++) {
it != specials.end();
it++) {
mg.hide(it->m_value.first->get_decl());
mg.hide(it->m_value.second->get_decl());
}
@ -811,7 +811,25 @@ namespace smt {
return res;
}
void theory_fpa::finalize_model(model_generator & mg) {}
void theory_fpa::finalize_model(model_generator & mg) {
ast_manager & m = get_manager();
proto_model & mdl = mg.get_model();
fpa2bv_converter::uf2bvuf_t const & uf2bvuf = m_converter.get_uf2bvuf();
for (fpa2bv_converter::uf2bvuf_t::iterator it = uf2bvuf.begin();
it != uf2bvuf.end();
it++) {
func_decl * bv_fd = it->m_value;
if (bv_fd->get_arity() == 0) {
expr_ref bve(m), v(m);
bve = m.mk_const(bv_fd);
mdl.eval(bve, v, true);
mdl.register_decl(it->m_key, v);
}
else
NOT_IMPLEMENTED_YET();
}
}
void theory_fpa::display(std::ostream & out) const
{