void CoreSMTSolver::verifyModel() { #ifdef DREAL_DEBUG bool failed = false; #endif for (int i = 0; i < clauses.size(); i++) { assert(clauses[i]->mark() == 0); Clause& c = *clauses[i]; for (int j = 0; j < c.size(); j++) if (modelValue(c[j]) == l_True || (config.nra_short_sat && modelValue(c[j]) != l_False)) goto next; reportf("unsatisfied clause: "); printClause(*clauses[i]); printSMTClause( cerr, *clauses[i] ); reportf("\n"); #ifdef DREAL_DEBUG failed = true; #endif next:; } #ifdef DREAL_DEBUG assert(!failed); #endif // Removed line // reportf("Verified %d original clauses.\n", clauses.size()); }
Real CalibrationHelper::calibrationError() { Real error; switch (calibrationErrorType_) { case RelativePriceError: error = std::fabs(marketValue() - modelValue())/marketValue(); break; case PriceError: error = marketValue() - modelValue(); break; case ImpliedVolError: { const Real lowerPrice = blackPrice(0.001); const Real upperPrice = blackPrice(10); const Real modelPrice = modelValue(); Volatility implied; if (modelPrice <= lowerPrice) implied = 0.001; else if (modelPrice >= upperPrice) implied = 10.0; else implied = this->impliedVolatility( modelPrice, 1e-12, 5000, 0.001, 10); error = implied - volatility_->value(); } break; default: QL_FAIL("unknown Calibration Error Type"); } return error; }
void SimpSolver::extendModel() { vec<Var> vs; // NOTE: elimtable.size() might be lower than nVars() at the moment for (int v = 0; v < elimtable.size(); v++) if (elimtable[v].order > 0) vs.push(v); sort(vs, ElimOrderLt(elimtable)); for (int i = 0; i < vs.size(); i++){ Var v = vs[i]; Lit l = lit_Undef; for (int j = 0; j < elimtable[v].eliminated.size(); j++){ Clause& c = *elimtable[v].eliminated[j]; for (int k = 0; k < c.size(); k++) if (var(c[k]) == v) l = c[k]; else if (modelValue(c[k]) != l_False) goto next; assert(l != lit_Undef); model[v] = lbool(!sign(l)); break; next:; } if (model[v] == l_Undef) model[v] = l_True; } }
void SimpSMTSolver::verifyModel() { bool failed = false; int cnt = 0; // NOTE: elimtable.size() might be lower than nVars() at the moment for (int i = 0; i < elimtable.size(); i++) { if (elimtable[i].order > 0) { for (int j = 0; j < elimtable[i].eliminated.size(); j++) { cnt++; Clause& c = *elimtable[i].eliminated[j]; for (int k = 0; k < c.size(); k++) if (modelValue(c[k]) == l_True) goto next; reportf("unsatisfied clause: "); printClause(*elimtable[i].eliminated[j]); reportf("\n"); failed = true; next:; } } } assert(!failed); // Modified line // reportf("Verified %d eliminated clauses.\n", cnt); /* if ( config.sat_verbose ) reportf("# Verified %d eliminated clauses.\n#\n", cnt); */ }
void Solver::verifyModel() { for (int i = 0; i < clauses.size(); i++){ Clause& c = *clauses[i]; for (int j = 0; j < c.size(); j++) if (modelValue(c[j]) == l_True) goto next; reportf("unsatisfied clause: "); printClause(*clauses[i]); reportf("\n"); // bool failed = false; // failed = true; next:; } // reportf("Verified %d original clauses.\n", clauses.size()); }
void MiniSATP::verifyModel() { bool failed = false; for (int i = 0; i < clauses.size(); i++){ assert(clauses[i]->mark() == 0); Clause& c = *clauses[i]; for (int j = 0; j < c.size(); j++) if (modelValue(c[j]) == l_True) goto next; reportf("unsatisfied clause: "); printClause(*clauses[i]); reportf("\n"); failed = true; next:; } assert(!failed); // Modified Line //reportf("Verified %d original clauses.\n", clauses.size()); }