return (k == BVCONST || k == TRUE || k == FALSE);
}
+
bool isITE() const
{
bool result;
return result;
}
+ bool isAtom() const
+ {
+ bool result;
+
+ const Kind k = GetKind();
+ switch (k)
+ {
+ case TRUE:
+ {
+ result = true;
+ break;
+ }
+ case FALSE:
+ {
+ result = true;
+ break;
+ }
+ case SYMBOL:
+ {
+ result = true;
+ break;
+ }
+ case BVCONST:
+ {
+ result = true;
+ break;
+ }
+ default:
+ {
+ result = false;
+ break;
+ }
+ }
+
+ return result;
+ } //End of isAtom()
+
+ bool isPred() const
+ {
+ bool result;
+
+ const Kind k = GetKind();
+ switch (k)
+ {
+ case BVLT:
+ {
+ result = true;
+ break;
+ }
+ case BVLE:
+ {
+ result = true;
+ break;
+ }
+ case BVGT:
+ {
+ result = true;
+ break;
+ }
+ case BVGE:
+ {
+ result = true;
+ break;
+ }
+ case BVSLT:
+ {
+ result = true;
+ break;
+ }
+ case BVSLE:
+ {
+ result = true;
+ break;
+ }
+ case BVSGT:
+ {
+ result = true;
+ break;
+ }
+ case BVSGE:
+ {
+ result = true;
+ break;
+ }
+ case EQ:
+ {
+ result = true;
+ break;
+ }
+ default:
+ {
+ result = false;
+ break;
+ }
+ }
+ return result;
+ } //End of isPred()
+
// For lisp DAG printing. Has it been printed already, so we can
// just print the node number?
}
cllp.clear();
} //End of DeleteClauseList
-
-
- bool CNFMgr::isAtom(const ASTNode& varphi)
- {
- bool result;
-
- Kind k = varphi.GetKind();
- switch (k)
- {
- case TRUE:
- {
- result = true;
- break;
- }
- case FALSE:
- {
- result = true;
- break;
- }
- case SYMBOL:
- {
- result = true;
- break;
- }
- case BVCONST:
- {
- result = true;
- break;
- }
- default:
- {
- result = false;
- break;
- }
- }
-
- return result;
- } //End of isAtom()
-
- bool CNFMgr::isPred(const ASTNode& varphi)
- {
- bool result;
-
- Kind k = varphi.GetKind();
- switch (k)
- {
- case BVLT:
- {
- result = true;
- break;
- }
- case BVLE:
- {
- result = true;
- break;
- }
- case BVGT:
- {
- result = true;
- break;
- }
- case BVGE:
- {
- result = true;
- break;
- }
- case BVSLT:
- {
- result = true;
- break;
- }
- case BVSLE:
- {
- result = true;
- break;
- }
- case BVSGT:
- {
- result = true;
- break;
- }
- case BVSGE:
- {
- result = true;
- break;
- }
- case EQ:
- {
- result = true;
- break;
- }
- default:
- {
- result = false;
- break;
- }
- }
-
- return result;
- } //End of isPred()
-
- bool CNFMgr::isITE(const ASTNode& varphi)
- {
- bool result;
-
- Kind k = varphi.GetKind();
- switch (k)
- {
- case ITE:
- {
- result = true;
- break;
- }
- default:
- {
- result = false;
- break;
- }
- }
-
- return result;
- } //End of isITE()
bool CNFMgr::onChildDoPos(const ASTNode& varphi, unsigned int idx)
{
// step 4, recurse over children
//########################################
- if (isAtom(varphi))
+ if (varphi.isAtom())
{
return;
}
- else if (isPred(varphi))
+ else if (varphi.isPred())
{
for (unsigned int i = 0; i < varphi.GetChildren().size(); i++)
{
// step 4, recurse over children
//########################################
- if (isAtom(varphi))
+ if (varphi.isAtom())
{
return;
}
- else if (isITE(varphi))
+ else if (varphi.isITE())
{
scanFormula(varphi[0], true, false);
scanFormula(varphi[0], false, false);
// step 2, ITE's always get renamed
//########################################
- if (isITE(varphi))
+ if (varphi.isITE())
{
x->termforcnf = doRenameITE(varphi, defs);
reduceMemoryFootprintPos(varphi[0]);
reduceMemoryFootprintNeg(varphi[0]);
}
- else if (isAtom(varphi))
+ else if (varphi.isAtom())
{
x->termforcnf = ASTNodeToASTNodePtr(varphi);
}
void CNFMgr::convertFormulaToCNFPosCases(const ASTNode& varphi,
ClauseList* defs)
{
- if (isPred(varphi))
+ if (varphi.isPred())
{
convertFormulaToCNFPosPred(varphi, defs);
return;
ClauseList* defs)
{
- if (isPred(varphi))
+ if (varphi.isPred())
{
convertFormulaToCNFNegPred(varphi, defs);
return;
//########################################
// utility predicates
- bool isAtom(const ASTNode& varphi);
-
- bool isPred(const ASTNode& varphi);
-
- bool isITE(const ASTNode& varphi);
-
bool onChildDoPos(const ASTNode& varphi, unsigned int idx);
bool onChildDoNeg(const ASTNode& varphi, unsigned int idx);