}
BooleanEdge CSolver::orderConstraint(Order *order, uint64_t first, uint64_t second) {
- ASSERT(first != second);
+ // ASSERT(first != second);
+ if (first == second)
+ return getBooleanFalse();
+
bool negate = false;
if (order->type == SATC_TOTAL) {
if (first > second) {
constraint = b;
}
- BooleanEdge be=BooleanEdge(constraint);
+ BooleanEdge be = BooleanEdge(constraint);
return negate ? be.negate() : be;
}
DecomposeOrderTransform dot(this);
dot.doTransform();
- IntegerEncodingTransform iet(this);
- iet.doTransform();
+ //IntegerEncodingTransform iet(this);
+ //iet.doTransform();
- EncodingGraph eg(this);
- eg.buildGraph();
- eg.encode();
- printConstraints();
+ //EncodingGraph eg(this);
+ //eg.buildGraph();
+ //eg.encode();
+ //printConstraints();
naiveEncodingDecision(this);
satEncoder->encodeAllSATEncoder(this);
model_print("Is problem UNSAT after encoding: %d\n", unsat);
}
+void CSolver::printConstraint(BooleanEdge b) {
+ if (b.isNegated())
+ model_print("!");
+ b->print();
+ model_print("\n");
+}
+
uint64_t CSolver::getElementValue(Element *element) {
switch (element->type) {
case ELEMSET: