Beispiel #1
0
BtorExp* boolector_propt::boolector_literal(literalt l)
{
  BtorExp *literal_l;
  std::string literal_s;

  if(l==const_literal(false))
    return boolector_false(boolector_ctx);
  else if(l==const_literal(true))
	return boolector_true(boolector_ctx);

  literal_l = convert_literal(l.var_no());

  if(l.sign())
    return boolector_not(boolector_ctx, literal_l);

  return literal_l;
}
Beispiel #2
0
literalt cvc_convt::convert(const exprt &expr)
{
    //out << "%% E: " << expr << std::endl;

    if(expr.type().id()!=ID_bool)
    {
        std::string msg="cvc_convt::convert got "
                        "non-boolean expression: ";
        msg+=expr.pretty();
        throw msg;
    }

    // Three special cases in which we don't need to generate
    // a handle.

    if(expr.is_true())
        return const_literal(true);
    else if(expr.is_false())
        return const_literal(false);
    else if(expr.id()==ID_literal)
        return to_literal_expr(expr).get_literal();

    // Generate new handle

    literalt l(no_boolean_variables, false);
    no_boolean_variables++;

    find_symbols(expr);

    // define new handle
    out << "ASSERT ";
    convert_literal(l);
    out << " <=> (";
    convert_expr(expr);
    out << ");" << std::endl << std::endl;

    return l;
}