void symex_parseoptionst::report_properties( const path_searcht::property_mapt &property_map) { for(path_searcht::property_mapt::const_iterator it=property_map.begin(); it!=property_map.end(); it++) { if(get_ui()==ui_message_handlert::XML_UI) { xmlt xml_result("result"); xml_result.set_attribute("claim", id2string(it->first)); std::string status_string; switch(it->second.status) { case path_searcht::PASS: status_string="OK"; break; case path_searcht::FAIL: status_string="FAILURE"; break; case path_searcht::NOT_REACHED: status_string="OK"; break; } xml_result.set_attribute("status", status_string); std::cout << xml_result << "\n"; } else { status() << "[" << it->first << "] " << it->second.description << ": "; switch(it->second.status) { case path_searcht::PASS: status() << "OK"; break; case path_searcht::FAIL: status() << "FAILED"; break; case path_searcht::NOT_REACHED: status() << "OK"; break; } status() << eom; } if(cmdline.isset("show-trace") && it->second.status==path_searcht::FAIL) show_counterexample(it->second.error_trace); } if(!cmdline.isset("property")) { status() << eom; unsigned failed=0; for(path_searcht::property_mapt::const_iterator it=property_map.begin(); it!=property_map.end(); it++) if(it->second.status==path_searcht::FAIL) failed++; status() << "** " << failed << " of " << property_map.size() << " failed" << eom; } }
satcheckt::resultt ranking_synthesis_satt::check_for_counterexample( const exprt &templ, c_valuest &c_values, fine_timet &conversion_time, fine_timet &solver_time) { satcheckt::resultt result; satcheckt solver; bv_pointerst converter(ns, solver); solver.set_message_handler(get_message_handler()); solver.set_verbosity(verbosity); converter.set_message_handler(get_message_handler()); converter.set_verbosity(verbosity); show_coefficients(c_values); fine_timet before = current_time(); converter.set_to_true(templ); for(c_valuest::const_iterator it=c_values.begin(); it!=c_values.end(); it++) { equal_exprt eq; if(it->first.get("identifier")=="termination::constant$C") { mp_integer cval; if(to_integer(largest_constant, cval)) throw "number conversion failed"; mp_integer b=cval * it->second; eq=equal_exprt(it->first, from_integer(b, it->first.type())); } else eq=equal_exprt(it->first, from_integer(it->second, it->first.type())); converter.set_to_true(eq); } conversion_time+=current_time()-before; before = current_time(); result=solver.prop_solve(); solver_time+=current_time()-before; solver_calls++; std::string output; if(result==satcheckt::P_SATISFIABLE) show_counterexample(converter); else if(result==satcheckt::P_UNSATISFIABLE) output += " ... YES!\n"; else output += "ERROR\n"; debug(output); return result; }