Breaking Multituner into comptuner and kmeanstuner
[satune.git] / src / Test / ordertest.cc
index 893338dd5419da5e9e0617ec1e079019054f9792..148235adf1f67dc971ab255f626a6a4782ae3aad 100644 (file)
@@ -11,13 +11,21 @@ int main(int numargs, char **argv) {
        uint64_t set1[] = {5, 1, 4};
        Set *s = solver->createSet(0, set1, 3);
        Order *order = solver->createOrder(SATC_TOTAL, s);
-       Boolean *b1 =  solver->orderConstraint(order, 5, 1);
-       Boolean *b2 =  solver->orderConstraint(order, 1, 4);
-       solver->addConstraint(b1);
-       solver->addConstraint(b2);
-       if (solver->startEncoding() == 1)
+       BooleanEdge b1 =  solver->orderConstraint(order, 5, 1);
+       BooleanEdge b2 =  solver->orderConstraint(order, 1, 4);
+
+       solver->addConstraint(solver->applyLogicalOperation(SATC_OR, b1, solver->applyLogicalOperation(SATC_NOT, b2)));
+       solver->addConstraint(solver->applyLogicalOperation(SATC_OR, b2, solver->applyLogicalOperation(SATC_NOT, b1)));
+       solver->serialize();
+       if (solver->solve() == 1) {
                printf("SAT\n");
-       else
+               printf("O(5,1)=%d O(1,4)=%d O(5,4)=%d O(1,5)=%d\n",
+                                        solver->getOrderConstraintValue(order, 5, 1),
+                                        solver->getOrderConstraintValue(order, 1, 4),
+                                        solver->getOrderConstraintValue(order, 5, 4),
+                                        solver->getOrderConstraintValue(order, 1, 5));
+       } else {
                printf("UNSAT\n");
+       }
        delete solver;
 }