3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-15 13:28:47 +00:00

Bugfixes for UFs and conversion functions in theory_fpa

This commit is contained in:
Christoph M. Wintersteiger 2015-10-08 11:54:35 +01:00
parent b60f30c802
commit a2503af585
2 changed files with 3 additions and 7 deletions

View file

@ -185,7 +185,7 @@ struct fpa2bv_rewriter_cfg : public default_rewriter_cfg {
bool is_float_uf = m_conv.is_float(f->get_range()) || m_conv.is_rm(f->get_range()); bool is_float_uf = m_conv.is_float(f->get_range()) || m_conv.is_rm(f->get_range());
for (unsigned i = 0; i < num; i++) for (unsigned i = 0; i < num; i++)
is_float_uf |= m_conv.is_float(f->get_domain()[i]) || m_conv.is_rm(f->get_domain()[i]); is_float_uf |= m_conv.is_float(args[i]) || m_conv.is_rm(args[i]);
if (is_float_uf) if (is_float_uf)
{ {

View file

@ -652,10 +652,8 @@ namespace smt {
if (fu.is_float(xe) && fu.is_float(ye)) if (fu.is_float(xe) && fu.is_float(ye))
m_converter.mk_eq(xc, yc, c); m_converter.mk_eq(xc, yc, c);
else if (fu.is_rm(xe) && fu.is_rm(ye)) else
c = m.mk_eq(xc, yc); c = m.mk_eq(xc, yc);
else
UNREACHABLE();
m_th_rw(c); m_th_rw(c);
assert_cnstr(m.mk_iff(m.mk_eq(xe, ye), c)); assert_cnstr(m.mk_iff(m.mk_eq(xe, ye), c));
@ -692,10 +690,8 @@ namespace smt {
m_converter.mk_eq(xc, yc, c); m_converter.mk_eq(xc, yc, c);
c = m.mk_not(c); c = m.mk_not(c);
} }
else if (fu.is_rm(xe) && fu.is_rm(ye))
c = m.mk_not(m.mk_eq(xc, yc));
else else
UNREACHABLE(); c = m.mk_not(m.mk_eq(xc, yc));
m_th_rw(c); m_th_rw(c);
assert_cnstr(m.mk_iff(m.mk_not(m.mk_eq(xe, ye)), c)); assert_cnstr(m.mk_iff(m.mk_not(m.mk_eq(xe, ye)), c));