output_children.push_back(r);
}
- return _bm->CreateNode(AND, output_children);
+ return nf->CreateNode(AND, output_children);
}
output =
(o.size() > 0) ?
((o.size() > 1) ?
- _bm->CreateNode(AND, o) :
+ nf->CreateNode(AND, o) :
o[0]) :
ASTTrue;
if (evens != ASTTrue)
- output = _bm->CreateNode(AND, output, evens);
+ output = nf->CreateNode(AND, output, evens);
if (_bm->UserFlags.isSet("xor-solve","1"))
output = solveForAndOfXOR(output);
VariablesInExpression& vars;
- bool simplify;
+ bool simplify; //Whether to apply the simplifyTerm & simplifyFormula functions.
ASTNode simplifyNode(const ASTNode n);
+ NodeFactory* nf;
+
public:
//constructor
BVSolver(STPMgr * bm, Simplifier * simp) : _bm(bm), _simp(simp), vars(simp->getVariablesInExpression())
ASTFalse = _bm->CreateNode(FALSE);
ASTUndefined = _bm->CreateNode(UNDEFINED);
simplify=true;
+ nf = new SimplifyingNodeFactory(*bm->hashingNodeFactory,*bm);
};
//Destructor
~BVSolver()
{
ClearAllTables();
+ delete nf;
}
//Top Level Solver: Goes over the input DAG, identifies the