void cover_goals_extt::operator()() { _iterations=_number_covered=0; decision_proceduret::resultt dec_result; // We use incremental solving, so need to freeze some variables // to prevent them from being eliminated. freeze_goal_variables(); do { // We want (at least) one of the remaining goals, please! _iterations++; constraint(); dec_result=solver(); switch(dec_result) { case decision_proceduret::D_UNSATISFIABLE: // DONE break; case decision_proceduret::D_SATISFIABLE: // mark the goals we got mark(); // notify assignment(); if(!all_properties) return; // exit on first failure if requested break; default: error() << "decision procedure has failed" << eom; return; } } while(dec_result==decision_proceduret::D_SATISFIABLE && number_covered()<size()); }
decision_proceduret::resultt cover_goalst::operator()() { _iterations=_number_covered=0; decision_proceduret::resultt dec_result; // We use incremental solving, so need to freeze some variables // to prevent them from being eliminated. freeze_goal_variables(); do { // We want (at least) one of the remaining goals, please! _iterations++; constraint(); dec_result=prop_conv.dec_solve(); switch(dec_result) { case decision_proceduret::D_UNSATISFIABLE: // DONE return dec_result; case decision_proceduret::D_SATISFIABLE: // mark the goals we got, and notify observers mark(); break; default: error() << "decision procedure has failed" << eom; return dec_result; } } while(dec_result==decision_proceduret::D_SATISFIABLE && number_covered()<size()); return decision_proceduret::D_SATISFIABLE; }