示例#1
0
 void push_result(expr * new_curr, proof * new_pr) {
     if (m_goal->proofs_enabled()) {
         proof * pr = m_goal->pr(m_idx);
         new_pr     = m.mk_modus_ponens(pr, new_pr);
     }
     
     expr_dependency_ref new_d(m);
     if (m_goal->unsat_core_enabled()) {
         new_d = m_goal->dep(m_idx);
         expr_dependency * used_d = m_r.get_used_dependencies();
         if (used_d != nullptr) {
             new_d = m.mk_join(new_d, used_d);
             m_r.reset_used_dependencies();
         }
     }
     
     m_goal->update(m_idx, new_curr, new_pr, new_d);
 
     if (is_shared(new_curr)) {
         m_subst->insert(new_curr, m.mk_true(), m.mk_iff_true(new_pr), new_d);
     }
     expr * atom;
     if (is_shared_neg(new_curr, atom)) {
         m_subst->insert(atom, m.mk_false(), m.mk_iff_false(new_pr), new_d);
     }
     expr * lhs, * value;
     if (is_shared_eq(new_curr, lhs, value)) {
         TRACE("shallow_context_simplifier_bug", tout << "found eq:\n" << mk_ismt2_pp(new_curr, m) << "\n";);
         m_subst->insert(lhs, value, new_pr, new_d);
     }
示例#2
0
void assertion_stack::expand_and_update(unsigned i, expr * f, proof * pr, expr_dependency * d) {
    SASSERT(i >= m_form_qhead);
    SASSERT(proofs_enabled() == (pr != 0 && !m().is_undef_proof(pr)));
    if (m_inconsistent)
        return;
    expr_ref new_f(m()); proof_ref new_pr(m()); expr_dependency_ref new_d(m());
    expand(f, pr, d, new_f, new_pr, new_d);
    update(i, new_f, new_pr, new_d);
}
示例#3
0
void assertion_stack::assert_expr(expr * f, proof * pr, expr_dependency * d) {
    SASSERT(proofs_enabled() == (pr != 0 && !m().is_undef_proof(pr)));
    if (m_inconsistent)
        return;
    expr_ref new_f(m()); proof_ref new_pr(m()); expr_dependency_ref new_d(m());
    expand(f, pr, d, new_f, new_pr, new_d);
    if (proofs_enabled())
        slow_process(f, pr, d);
    else
        quick_process(false, f, d);
}
 /** 
  * \brief Sets the degrees of freedom (dof) the distribution
  */
 void setDof(size_t dof)
 { 
   dof_ = dof; 
   boost::math::students_t new_d(dof);
   d_ = new_d;
 };