Beispiel #1
0
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());
}
Beispiel #2
0
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;
}