bool tseitin_are_decision_variables_flag;
+ // Create a new Tseitin variable for every intermediate value.
+ bool renameAllInCNF_flag;
+
// Available back-end SAT solvers.
enum SATSolvers
{
// use minisat by default.
solver_to_use = MINISAT_SOLVER;
+ // The special Cryptominisat2 CNF generation with this flag enabled seems to go into an infinite loop.
+ // beware of turning this on if you are using cryptominsat2.
+ renameAllInCNF_flag= false;
+
} //End of constructor for UserDefinedFlags
}; //End of struct UserDefinedFlags
if ((x->clausespos != NULL
&& (x->clausespos->size() > 1
|| (renameAllSiblings
- && !(x->clausespos->size()==1)
+ && !(x->clausespos->size() == 1 && x->clausespos[0].size() ==1)
&& !wasRenamedPos(*x)))
|| (doRenamePos(*x)
&& !wasVisited(*x))))
}
#else
+
if (x->clausespos != NULL
&& (x->clausespos->size() > 1
|| (renameAllSiblings
- && !(x->clausesneg->size() == 1)
+ && !(x->clausespos->size() == 1 && x->clausespos[0].size() ==1)
&& !wasRenamedNeg(*x))))
{
if (doSibRenamingPos(*x)
}
if (x->clausesneg != NULL
- && (x->clausesneg->size() > 1))
-// || (renameAllSiblings
-// && !(x->clausesneg->size() == 1)
-// && !wasRenamedNeg(*x))))
+ && (x->clausesneg->size() > 1
+ || (renameAllSiblings
+ && !(x->clausesneg->size() == 1 && x->clausesneg[0].size() ==1)
+ && !wasRenamedNeg(*x))))
{
if (doSibRenamingNeg(*x)
|| sharesNeg(*x) > 1
{
assert(info[varphi]->clausesneg == NULL
|| info[varphi]->clausesneg->size() ==1);
+
+ assert(info[varphi]->clausespos == NULL
+ || info[varphi]->clausespos->size() ==1);
}
setWasVisited(*x);
for (; it != varphi.GetChildren().end(); it++)
{
convertFormulaToCNF(*it, defs); // make pos and neg clause sets
+ if (renameAllSiblings) {
+ assert(info[*it]->clausespos->size() ==1);
+ assert(info[*it]->clausesneg->size() ==1);
+ }
}
ClauseList* psi = convertFormulaToCNFPosXORAux(varphi, 0, defs);
info[varphi]->clausespos = psi;
{
bm = bmgr;
clausesxor = new ClauseList();
- renameAllSiblings = false;
+ renameAllSiblings = bm->UserFlags.renameAllInCNF_flag;
}
//########################################