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:
parent
b60f30c802
commit
a2503af585
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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));
|
||||||
|
|
Loading…
Reference in a new issue