void operator()(goal_ref const & g, goal_ref_buffer & result, model_converter_ref & mc, proof_converter_ref & pc, expr_dependency_ref & core) { SASSERT(g->is_well_sorted()); mc = 0; pc = 0; core = 0; tactic_report report("qe", *g); m_fparams.m_model = g->models_enabled(); proof_ref new_pr(m); expr_ref new_f(m); bool produce_proofs = g->proofs_enabled(); unsigned sz = g->size(); for (unsigned i = 0; i < sz; i++) { checkpoint(); if (g->inconsistent()) break; expr * f = g->form(i); if (!has_quantifiers(f)) continue; m_qe(m.mk_true(), f, new_f); new_pr = 0; if (produce_proofs) { new_pr = m.mk_modus_ponens(g->pr(i), new_pr); } g->update(i, new_f, new_pr, g->dep(i)); } g->inc_depth(); result.push_back(g.get()); TRACE("qe", g->display(tout););
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); }
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); }
static real phi_sr(FILE *log,int nj,rvec x[],real charge[],real rc,real r1,rvec box, real phi[],t_block *excl,rvec f_sr[],bool bOld) { int i,j,k,m,ni,i1,i2; real pp,r2,R,R_1,R_2,rc2; real qi,qj,vsr,eps,fscal; rvec dx; vsr = 0.0; eps = ONE_4PI_EPS0; rc2 = rc*rc; ni=0; for(i=0; (i<nj-1); i++) { qi=charge[i]; for(j=i+1; (j<nj); j++) { i1=excl->index[i]; i2=excl->index[i+1]; for(k=i1; (k<i2); k++) if (excl->a[k] == j) break; if (k == i2) { r2=calc_dx2dx(x[i],x[j],box,dx); if (r2 < rc2) { qj = charge[j]; R_1 = invsqrt(r2); R_2 = R_1*R_1; R = invsqrt(R_2); if (bOld) { fscal = old_f(R,rc,r1)*R_2; pp = old_phi(R,rc,r1); } else { fscal = new_f(R,rc)*R_2; pp = new_phi(R,rc); } phi[i] += eps*qj*pp; phi[j] += eps*qi*pp; vsr += eps*qj*qi*pp; for(m=0; (m<DIM); m++) { f_sr[i][m] += dx[m]*fscal; f_sr[j][m] -= dx[m]*fscal; } ni++; } } } } fprintf(log,"There were %d short range interactions, vsr=%g\n",ni,vsr); return vsr; }
void operator()(goal_ref const & g) { SASSERT(g->is_well_sorted()); tactic_report report("aig", *g); mk_aig_manager mk(*this, g->m()); if (m_aig_per_assertion) { for (unsigned i = 0; i < g->size(); i++) { aig_ref r = m_aig_manager->mk_aig(g->form(i)); m_aig_manager->max_sharing(r); expr_ref new_f(g->m()); m_aig_manager->to_formula(r, new_f); expr_dependency * ed = g->dep(i); g->update(i, new_f, 0, ed); } } else { fail_if_unsat_core_generation("aig", g); aig_ref r = m_aig_manager->mk_aig(*(g.get())); g->reset(); // save memory m_aig_manager->max_sharing(r); m_aig_manager->to_formula(r, *(g.get())); } SASSERT(g->is_well_sorted()); }