mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
fix #2831 again
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
2f8303393b
commit
ce4e71fbe9
3 changed files with 37 additions and 8 deletions
|
@ -811,13 +811,24 @@ bool arith_util::is_considered_uninterpreted(func_decl* f, unsigned n, expr* con
|
|||
return true;
|
||||
}
|
||||
if (is_decl_of(f, m_afid, OP_POWER) && is_numeral(args[1], r) && r.is_zero() && is_numeral(args[0], r) && r.is_zero()) {
|
||||
sort* rs[2] = { mk_real(), mk_real() };
|
||||
f_out = m_manager.mk_func_decl(m_afid, OP_POWER0, 0, nullptr, 2, rs, mk_real());
|
||||
f_out = is_int(args[0]) ? mk_ipower0() : mk_rpower0();
|
||||
return true;
|
||||
}
|
||||
return plugin().is_considered_uninterpreted(f);
|
||||
}
|
||||
|
||||
func_decl* arith_util::mk_ipower0() {
|
||||
sort* s = mk_int();
|
||||
sort* rs[2] = { s, s };
|
||||
return m_manager.mk_func_decl(m_afid, OP_POWER0, 0, nullptr, 2, rs, s);
|
||||
}
|
||||
|
||||
func_decl* arith_util::mk_rpower0() {
|
||||
sort* s = mk_real();
|
||||
sort* rs[2] = { s, s };
|
||||
return m_manager.mk_func_decl(m_afid, OP_POWER0, 0, nullptr, 2, rs, s);
|
||||
}
|
||||
|
||||
func_decl* arith_util::mk_div0() {
|
||||
sort* rs[2] = { mk_real(), mk_real() };
|
||||
return m_manager.mk_func_decl(m_afid, OP_DIV0, 0, nullptr, 2, rs, mk_real());
|
||||
|
|
|
@ -369,6 +369,8 @@ public:
|
|||
|
||||
func_decl* mk_div0();
|
||||
func_decl* mk_idiv0();
|
||||
func_decl* mk_ipower0();
|
||||
func_decl* mk_rpower0();
|
||||
|
||||
|
||||
app * mk_numeral(rational const & val, bool is_int) const {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue