@@ -363,10 +363,14 @@ inline func_decl * arith_decl_plugin::mk_func_decl(decl_kind k, bool is_real) {
363
363
case OP_REM: return m_i_rem_decl;
364
364
case OP_MOD: return m_i_mod_decl;
365
365
case OP_DIV0: return m_manager->mk_func_decl (symbol (" /0" ), m_real_decl, m_real_decl, m_real_decl, func_decl_info (m_family_id, OP_DIV0));
366
- case OP_IDIV0: return m_manager->mk_func_decl (symbol (" idiv0" ), m_real_decl, m_real_decl, m_real_decl, func_decl_info (m_family_id, OP_IDIV0));
367
- case OP_REM0: return m_manager->mk_func_decl (symbol (" rem0" ), m_real_decl, m_real_decl, m_real_decl, func_decl_info (m_family_id, OP_REM0));
368
- case OP_MOD0: return m_manager->mk_func_decl (symbol (" mod0" ), m_real_decl, m_real_decl, m_real_decl, func_decl_info (m_family_id, OP_MOD0));
369
- case OP_POWER0: return m_manager->mk_func_decl (symbol (" power0" ), m_real_decl, m_real_decl, m_real_decl, func_decl_info (m_family_id, OP_POWER0));
366
+ case OP_IDIV0: return m_manager->mk_func_decl (symbol (" div0" ), m_int_decl, m_int_decl, m_int_decl, func_decl_info (m_family_id, OP_IDIV0));
367
+ case OP_REM0: return m_manager->mk_func_decl (symbol (" rem0" ), m_int_decl, m_int_decl, m_int_decl, func_decl_info (m_family_id, OP_REM0));
368
+ case OP_MOD0: return m_manager->mk_func_decl (symbol (" mod0" ), m_int_decl, m_int_decl, m_int_decl, func_decl_info (m_family_id, OP_MOD0));
369
+ case OP_POWER0:
370
+ if (is_real) {
371
+ return m_manager->mk_func_decl (symbol (" ^0" ), m_real_decl, m_real_decl, m_real_decl, func_decl_info (m_family_id, OP_POWER0));
372
+ }
373
+ return m_manager->mk_func_decl (symbol (" ^0" ), m_int_decl, m_int_decl, m_int_decl, func_decl_info (m_family_id, OP_POWER0));
370
374
case OP_TO_REAL: return m_to_real_decl;
371
375
case OP_TO_INT: return m_to_int_decl;
372
376
case OP_IS_INT: return m_is_int_decl;
0 commit comments