Пример #1
0
predabs_domaint::row_valuet predabs_domaint::get_row_value(
  const rowt &row,
  const templ_valuet &value)
{
  assert(row<value.size());
  assert(value.size()==templ.size());
  return value[row];
}
Пример #2
0
void predabs_domaint::set_row_value(
  const rowt &row,
  const predabs_domaint::row_valuet &row_value,
  templ_valuet &value)
{
  assert(row<value.size());
  assert(value.size()==templ.size());
  value[row]=row_value;
}
Пример #3
0
/// post_guard=> (row_value=> row_expr)
exprt predabs_domaint::get_row_post_constraint(
  const rowt &row,
  const templ_valuet &value)
{
  assert(value.size()==templ.size());
  return get_row_post_constraint(row, value[row]);
}
Пример #4
0
exprt predabs_domaint::to_pre_constraints(const templ_valuet &value)
{
  assert(value.size()==templ.size());
  exprt::operandst c;
  for(std::size_t row=0; row<templ.size(); ++row)
  {
    c.push_back(get_row_pre_constraint(row, value[row]));
  }
  return conjunction(c);
}
Пример #5
0
void predabs_domaint::make_not_post_constraints(
  const templ_valuet &value,
  exprt::operandst &cond_exprs)
{
  assert(value.size()==templ.size());
  cond_exprs.resize(templ.size());

  exprt::operandst c;
  for(std::size_t row=0; row<templ.size(); row++)
  {
    cond_exprs[row]=and_exprt(
      templ[row].aux_expr,
      not_exprt(get_row_post_constraint(row, value)));
  }
}