mirror of
https://github.com/Z3Prover/z3
synced 2025-10-07 08:21:56 +00:00
Improved UF suppport in fpa2bv_converter.
This commit is contained in:
parent
2744d80642
commit
076e680433
7 changed files with 303 additions and 223 deletions
|
@ -91,7 +91,9 @@ struct fpa2bv_rewriter_cfg : public default_rewriter_cfg {
|
|||
|
||||
if (m().is_eq(f)) {
|
||||
SASSERT(num == 2);
|
||||
SASSERT(m().get_sort(args[0]) == m().get_sort(args[1]));
|
||||
TRACE("fpa2bv_rw", tout << "(= " << mk_ismt2_pp(args[0], m()) << " " <<
|
||||
mk_ismt2_pp(args[1], m()) << ")" << std::endl;);
|
||||
SASSERT(m().get_sort(args[0]) == m().get_sort(args[1]));
|
||||
sort * ds = f->get_domain()[0];
|
||||
if (m_conv.is_float(ds)) {
|
||||
m_conv.mk_eq(args[0], args[1], result);
|
||||
|
@ -178,13 +180,10 @@ struct fpa2bv_rewriter_cfg : public default_rewriter_cfg {
|
|||
|
||||
if (f->get_family_id() != 0 && f->get_family_id() != m_conv.fu().get_family_id())
|
||||
{
|
||||
bool is_float_uf = m_conv.is_float(f->get_range());
|
||||
unsigned i = 0;
|
||||
while (!is_float_uf && i < num)
|
||||
{
|
||||
is_float_uf = m_conv.is_float(f->get_domain()[i]);
|
||||
i++;
|
||||
}
|
||||
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++)
|
||||
is_float_uf |= m_conv.is_float(f->get_domain()[i]) || m_conv.is_rm(f->get_domain()[i]);
|
||||
|
||||
if (is_float_uf)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue