mirror of
https://github.com/Z3Prover/z3
synced 2025-09-03 08:38:06 +00:00
FPA: Added support for float-UF to BV-UF translation.
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
This commit is contained in:
parent
be19c2a3a8
commit
8f60a936d2
3 changed files with 136 additions and 4 deletions
|
@ -143,6 +143,23 @@ struct fpa2bv_rewriter_cfg : public default_rewriter_cfg {
|
|||
throw tactic_exception("NYI");
|
||||
}
|
||||
}
|
||||
|
||||
if (f->get_family_id() == null_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++;
|
||||
}
|
||||
|
||||
if (is_float_uf)
|
||||
{
|
||||
m_conv.mk_uninterpreted_function(f, num, args, result);
|
||||
return BR_DONE;
|
||||
}
|
||||
}
|
||||
|
||||
return BR_FAILED;
|
||||
}
|
||||
|
@ -222,7 +239,10 @@ struct fpa2bv_rewriter_cfg : public default_rewriter_cfg {
|
|||
for (unsigned i = m_bindings.size() - 1; i > inx; i--)
|
||||
if (m_conv.is_float(m_bindings[i].get())) shift += 2;
|
||||
expr_ref new_var(m());
|
||||
m_conv.mk_var(t->get_idx() + shift, t->get_sort(), new_var);
|
||||
if (m_conv.is_float(t->get_sort()))
|
||||
m_conv.mk_var(t->get_idx() + shift, t->get_sort(), new_var);
|
||||
else
|
||||
new_var = m().mk_var(t->get_idx() + shift, t->get_sort());
|
||||
m_mappings[inx] = new_var;
|
||||
}
|
||||
result = m_mappings[inx].get();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue