Example #1
0
 void operator()(assertion_set & s, model_converter_ref & mc) {
     mc = 0;
     if (s.inconsistent())
         return;
     as_st_report report("add-bounds", s);
     bound_manager bm(m);
     expr_fast_mark1 visited;
     add_bound_proc proc(bm, s, m_lower, m_upper);
     unsigned sz = s.size();
     for (unsigned i = 0; i < sz; i++)
         quick_for_each_expr(proc, visited, s.form(i));
     visited.reset();
     report_st_progress(":added-bounds", proc.m_num_bounds);
     TRACE("add_bounds", s.display(tout););
 void operator()(assertion_set & s, model_converter_ref & mc) {
     mc = 0;
     if (s.inconsistent()) 
         return;
     {
         as_st_report report("elim-term-ite", s);
         m_rw.m_cfg.m_num_fresh = 0;
         m_rw.m_cfg.m_set = &s;
         expr_ref   new_curr(m);
         proof_ref  new_pr(m);
         unsigned   size = s.size();
         for (unsigned idx = 0; idx < size; idx++) {
             expr * curr = s.form(idx);
             m_rw(curr, new_curr, new_pr);
             if (m.proofs_enabled()) {
                 proof * pr = s.pr(idx);
                 new_pr     = m.mk_modus_ponens(pr, new_pr);
             }
             s.update(idx, new_curr, new_pr);
         }
         mc = m_rw.m_cfg.m_mc.get();
     }
     report_st_progress(":elim-term-ite-consts", m_rw.m_cfg.m_num_fresh);
 }