Array<BooleanEdge> inputs;
CMEMALLOC;
};
+BooleanEdge cloneEdge(CSolver *solver, CloneMap *map, BooleanEdge e);
+
+
#endif
}
}
+ /*
bool mustReachPrune = GETVARTUNABLE(solver->getTuner(), order->type, MUSTREACHPRUNE, &onoff);
if (mustReachPrune)
removeMustBeTrueNodes(solver, graph);
-
+ */
+
//This is needed for splitorder
computeStronglyConnectedComponentGraph(graph);
decomposeOrder(order, graph);
initDefVectorEdge(&cnf->constraints);
initDefVectorEdge(&cnf->args);
cnf->solver = allocIncrementalSolver();
+ cnf->solveTime = 0;
+ cnf->encodeTime = 0;
return cnf;
}
CSolver *copy = problem->clone();
copy->setTuner(tuner);
int result = copy->solve();
+ model_print("SAT %d\n", result);
long long elapsedTime = copy->getElapsedTime();
long long encodeTime = copy->getEncodeTime();
long long solveTime = copy->getSolveTime();
SetIteratorBooleanEdge *it = getConstraints();
while (it->hasNext()) {
BooleanEdge b = it->next();
- copy->addConstraint(b->clone(copy, &map));
+ copy->addConstraint(cloneEdge(copy, &map, b));
}
delete it;
return copy;
}
constraints.add(constraint);
Boolean *ptr=constraint.getBoolean();
- if (constraint.isNegated())
- updateMustValue(ptr, BV_MUSTBEFALSE);
- else
- updateMustValue(ptr, BV_MUSTBETRUE);
if (ptr->boolVal == BV_UNSAT)
setUnSAT();