SATEncoder(CSolver *solver);
~SATEncoder();
void encodeAllSATEncoder(CSolver *csolver);
- Edge encodeConstraintSATEncoder(Boolean *constraint);
+ Edge encodeConstraintSATEncoder(BooleanEdge constraint);
CNF *getCNF() { return cnf;}
long long getSolveTime() { return cnf->solveTime; }
long long getEncodeTime() { return cnf->encodeTime; }
Edge encodeOrderSATEncoder(BooleanOrder *constraint);
Edge inferOrderConstraintFromGraph(Order *order, uint64_t _first, uint64_t _second);
Edge getPairConstraint(Order *order, OrderPair *pair);
+ Edge getPartialPairConstraint(Order *order, OrderPair *pair);
Edge encodeTotalOrderSATEncoder(BooleanOrder *constraint);
Edge encodePartialOrderSATEncoder(BooleanOrder *constraint);
void createAllTotalOrderConstraintsSATEncoder(Order *order);
+ void createAllPartialOrderConstraintsSATEncoder(Order *order);
Edge getOrderConstraint(HashtableOrderPair *table, OrderPair *pair);
Edge generateTransOrderConstraintSATEncoder(Edge constIJ, Edge constJK, Edge constIK);
+ Edge generatePartialOrderConstraintsSATEncoder(Edge ij,Edge ji, Edge jk, Edge kj,Edge ik, Edge ki);
Edge encodeEnumEntriesTablePredicateSATEncoder(BooleanPredicate *constraint);
Edge encodeEnumTablePredicateSATEncoder(BooleanPredicate *constraint);
void encodeEnumTableElemFunctionSATEncoder(ElementFunction *This);
};
void allocElementConstraintVariables(ElementEncoding *ee, uint numVars);
-Edge getOrderConstraint(HashtableOrderPair *table, OrderPair *pair);
#endif