Element *e1 = solver->getElementVar(s1);
Element *e2 = solver->getElementVar(s2);
Element *e3 = solver->getElementVar(s3);
- Set *d2[] = {s1, s2, s3};
//change the overflow flag
- Table *t1 = solver->createTableForPredicate(d2, 3);
+ Table *t1 = solver->createTableForPredicate();
uint64_t row1[] = {1, 5, 6};
uint64_t row2[] = {2, 3, 19};
uint64_t row3[] = {1, 3, 19};
solver->addTableEntry(t1, row5, 3, false);
solver->addTableEntry(t1, row6, 3, true);
Predicate *p1 = solver->createPredicateTable(t1, SATC_FLAGIFFUNDEFINED);
- Boolean *undef = solver->getBooleanVar(2);
+ BooleanEdge undef = solver->getBooleanVar(2);
Element *tmparray[] = {e1, e2, e3};
- Boolean *b1 = solver->applyPredicateTable(p1, tmparray, 3, undef);
+ BooleanEdge b1 = solver->applyPredicateTable(p1, tmparray, 3, undef);
solver->addConstraint(b1);
- Set *deq[] = {s3,s2};
- Predicate *gte = solver->createPredicateOperator(SATC_GTE, deq, 2);
+ Predicate *gte = solver->createPredicateOperator(SATC_GTE);
Element *inputs2 [] = {e3, e2};
- Boolean *pred = solver->applyPredicate(gte, inputs2, 2);
+ BooleanEdge pred = solver->applyPredicate(gte, inputs2, 2);
solver->addConstraint(pred);
- Set *d1[] = {s1, s2};
- Predicate *eq = solver->createPredicateOperator(SATC_EQUALS, d1, 2);
+ Predicate *eq = solver->createPredicateOperator(SATC_EQUALS);
Element *tmparray2[] = {e1, e2};
- Boolean *pred2 = solver->applyPredicate(eq, tmparray2, 2);
+ BooleanEdge pred2 = solver->applyPredicate(eq, tmparray2, 2);
solver->addConstraint(pred2);
+ solver->serialize();
- if (solver->startEncoding() == 1)
+ if (solver->solve() == 1)
printf("e1=%" PRIu64 " e2=%" PRIu64 " e3=%" PRIu64 " undefFlag:%d\n",
solver->getElementValue(e1), solver->getElementValue(e2),
solver->getElementValue(e3), solver->getBooleanValue(undef));