for (int i =0; i < c.size()-1; i++)
{
- os << "(" << functionToSMTLIBName(kind);
+ os << "(" << functionToSMTLIBName(kind,true);
os << " ";
SMTLIB1_Print1(os, c[i], 0, letize);
os << " ";
}
else
{
- os << "(" << functionToSMTLIBName(kind);
+ os << "(" << functionToSMTLIBName(kind,true);
ASTVec::const_iterator iend = c.end();
for (ASTVec::const_iterator i = c.begin(); i != iend; i++)
for (int i =0; i < c.size()-1; i++)
{
- os << "(" << functionToSMTLIBName(kind);
+ os << "(" << functionToSMTLIBName(kind,false);
os << " ";
SMTLIB2_Print1(os, c[i], 0, letize);
os << " ";
}
else
{
- os << "(" << functionToSMTLIBName(kind);
+ os << "(" << functionToSMTLIBName(kind,false);
ASTVec::const_iterator iend = c.end();
for (ASTVec::const_iterator i = c.begin(); i != iend; i++)
}
} //end of LetizeNode()
- string functionToSMTLIBName(const Kind k)
+ string functionToSMTLIBName(const Kind k, bool smtlib1)
{
switch (k)
{
+ case IFF:
+ if (smtlib1)
+ return "iff";
+ else
+ return "=";
+ case IMPLIES:
+ if (smtlib1)
+ return "implies";
+ else
+ return "=>";
case AND:
case BVAND:
case BVNAND:
case NOT:
case OR:
case XOR:
- case IFF:
- case IMPLIES:
{
return tolower(_kind_names[k]);
}
//correctly print shared subterms inside the LET itself
extern BEEV::ASTNodeMap NodeLetVarMap1;
- string functionToSMTLIBName(const Kind k);
+ string functionToSMTLIBName(const Kind k, bool smtlib1);
void LetizeNode(const ASTNode& n, BEEV::ASTNodeSet& PLPrintNodeSet);