#include "ast/ast_pp.h"
#include "model/numeral_factory.h"
app * arith_factory::mk_value_core(rational const & val, sort * s) {
if (m_util.is_complex(s)) {
expr_ref re(m_util.mk_real(val), m_manager);
expr_ref im(m_util.mk_real(0), m_manager);
return m_util.mk_complex(re, im);
}
return m_util.mk_numeral(val, s);
}
arith_factory::arith_factory(ast_manager & m):
numeral_factory(m, m.mk_family_id("arith")),
m_util(m) {
}
app * arith_factory::mk_num_value(rational const & val, bool is_int) {
return numeral_factory::mk_value(val, is_int ? m_util.mk_int() : m_util.mk_real());
}
bv_factory::bv_factory(ast_manager & m):
numeral_factory(m, m.mk_family_id("bv")),
m_util(m) {
}
app * bv_factory::mk_value_core(rational const & val, sort * s) {
return m_util.mk_numeral(val, s);
}
app * bv_factory::mk_num_value(rational const & val, unsigned bv_size) {
return numeral_factory::mk_value(val, m_util.mk_sort(bv_size));
}