Exemple #1
0
 void operator()(app * t) {
     if (is_uninterp_const(t) &&  (m_util.is_int(t) || m_util.is_real(t))) {
         if (!m_bm.has_lower(t)) {
             m_set.assert_expr(m_util.mk_le(t, m_util.mk_numeral(m_upper, m_util.is_int(t))));
             m_num_bounds++;
         }
         if (!m_bm.has_upper(t)) {
             m_set.assert_expr(m_util.mk_ge(t, m_util.mk_numeral(m_lower, m_util.is_int(t))));
             m_num_bounds++;
         }
     }
 }
Exemple #2
0
 bool compatible_sort(app * n) const {
     if (m.is_bool(n))
         return true;
     if (m_int && u.is_int(n))
         return true;
     if (m_real && u.is_real(n))
         return true;
     return false;
 }
Exemple #3
0
 void operator()(var * x) {
     if (!m_quant)
         throw_found();
     sort * s = x->get_sort();
     if (m_int && u.is_int(s))
         return;
     if (m_real && u.is_real(s))
         return;
     throw_found();
 }
Exemple #4
0
 bool compatible_sort(app * n) const {
     if (m.is_bool(n))
         return true;
     if (m_int && m_arith_util.is_int(n))
         return true;
     if (m_real && m_arith_util.is_real(n))
         return true;
     if (m_array_util.is_array(n))
         return true;
     return false;
 }
Exemple #5
0
 subpaving::var mk_var_for(expr * t) {
     SASSERT(!m_autil.is_numeral(t));
     subpaving::var x = m_expr2var->to_var(t);
     if (x == subpaving::null_var) {
         bool is_int = m_autil.is_int(t);
         x = s().mk_var(is_int);
         m_expr2var->insert(t, x);
         if (x >= m_var2expr.size())
             m_var2expr.resize(x+1, 0);
         m_var2expr.set(x, t);
     }
     return x;
 }
Exemple #6
0
 void operator()(app * t) {
     if (is_uninterp_const(t) &&  (m_util.is_int(t) || m_util.is_real(t)) && (!m_bm.has_lower(t) || !m_bm.has_upper(t)))
         throw found();
 }