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; }
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; }