}
// expects varphi2 to be just a single clause.
-void ClauseList::productInPlace(const ClauseList& varphi2) {
+void ClauseList::INPLACE_PRODUCT(const ClauseList& varphi2) {
assert(1 == varphi2.size());
ClauseList& varphi1 = *this;
public:
void appendToAllClauses(const ASTNode* n);
- void productInPlace(const ClauseList& varphi2);
+ void INPLACE_PRODUCT(const ClauseList& varphi2);
ClauseContainer* asList() {
return &cont;
static void INPLACE_UNION(ClauseList* varphi1, const ClauseList& varphi2)
{
-
ClauseList* psi2 = ClauseList::COPY(varphi2);
varphi1->insert( psi2);
delete psi2;
// step 2, add defs
//########################################
- ClauseList* cl1;
- cl1 = SINGLETON(bm->CreateNode(NOT, psi));
- ClauseList* cl2 = ClauseList::PRODUCT(*(info[varphi]->clausespos), *cl1);
- defs->insert(cl2);
- DELETE(info[varphi]->clausespos);
- DELETE(cl1);
- delete cl2;
+ ASTNode* copy = ASTNodeToASTNodePtr(bm->CreateNode(NOT, psi));
+ ClauseList* cl = info[varphi]->clausespos;
+ cl->appendToAllClauses(copy);
+ defs->insert(cl);
+ delete cl;
//########################################
// step 3, update info[varphi]
// step 3, add defs
//########################################
- ClauseList* cl1;
- cl1 = SINGLETON(psi);
- ClauseList* cl2 = ClauseList::PRODUCT(*(info[varphi]->clausesneg), *cl1);
- defs->insert(cl2);
- DELETE(info[varphi]->clausesneg);
- DELETE(cl1);
- delete cl2;
-
+ ASTNode* copy = ASTNodeToASTNodePtr(psi);
+ ClauseList* cl = info[varphi]->clausesneg;
+ cl->appendToAllClauses(copy);
+ defs->insert(cl);
+ delete cl;
+
//########################################
// step 4, update info[varphi]
//########################################